栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

kubernetes——部署托管的pod

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

kubernetes——部署托管的pod

存活探针

有三种探测方式,测试服务是否正在正常运行

  • HTTP GET探针针对容器的IP地址执行HTTP GET请求,如果收到响应,并且状态码不代表错误,则认为服务正常运行
  • TCP套接字探针尝试与容器指定端口建立TCP连接,如果连接成功则探测成功
  • Exec探针在容器内执行命令,并检查命令的退出状态码。

创建带存活探针的pod

apiVersion: v1
kind: Pod
metadata:
  name: kubia-web
  labels:
    name: kubia-web
spec:
  containers:
  - name: kubia-web
    livenessProbe:
      httpGet:
        path: /
        port: 8080
    image: luksa/kubia
    resources:
      limits:
        memory: "128Mi"
        cpu: "500m"
    ports:
      - containerPort: 8080

存活探针在容器运行后立即开始,我们使用时通常会设置参数不会让探针在容器运行后立即开始,因为容器运行后,还要开启服务,在开启服务这段时间,探针会认为服务有错误,所以会不断的创建新的容器,并将现有的容器删除。

    livenessProbe:
      httpGet:
        path: /
        port: 8080
      initialDelaySeconds: 15

设置初始间隔时间,等待一段时间后,再进行探测

还可以设置探测周期间隔时间

periodSeconds:10

创建有效的存活探针

我们要确保一个服务的错误,要通过对此服务的重新创建能够修复,如果对现有服务进行重新创建不能修复,则会一直创建新的服务,还不会正常进行服务

注意:如果探针遇到服务错误,会重新创建一个服务,不会对现有服务进行重启

ReplicationCtronller

ReplicationController控制器会对响应类型的pod进行监控,将pod数目与预期相符

apiVersion: v1
kind: ReplicationController
metadata:
  name: myapp
spec:
#replicas表示预期的pod数量
  replicas: 3
  selector:
  	#选择的标签,根据标签控制pod数量
    app: myapp
  template:
    metadata:
      name: myapp
      labels:
      #携带的标签
        app: myapp
    spec:
      containers:
        - name: myapp
          image: 
          ports:
            - containerPort: 8080

控制器会确保标签为app=myapp的pod数量为3

对pod的一些操作,导致控制器的反应

删除一个pod
控制器会发现携带有指定标签的pod少于预期数量,则会创建pod到预期数量

修改标签选择器指定的标签

控制器发现携带有指定标签的pod少于预期数量,则会创建pod到预期数量

新增一个带有相同标签的pod

控制器发现现有带有指定标签的pod多于预期数量,会删除pod到预期数量

注意:修改模板的内容只会造成修改后创建的pod改变,不会影响之前的pod

ReplicationController的扩缩容

扩缩容有两种方法

第一种方法使用命令

kubectl scale rc replicationcontrollername --replicas=3

第二种方法,修改yaml文件

kubectl edit rc replicationcontrollername

删除一个ReplicationController

kubectl delete rc replicationcontrollername

注意,删除控制器时,该控制器下的pod也会被删除,如果你想删除控制器,将控制器下的pod作为独立运行的。

kubectl delete rc replicationcontroller --cascade=false
DaemonSet

DaemonSet控制器,将每一个工作节点都部署一个指定的pod。如果只部署在部分节点上可以使用nodeselector选择节点。

Job

前面的控制器,将会监督pod的工作情况,如果出现不能正常工作,就会重新创建。如果我们有一些任务,执行完就可以结束,当使用上面的控制器就会很麻烦,因为如果执行完了,服务就没有了,但是控制器会认为服务出现问题,会重新创建一个服务。

job控制器,就是让指定的程序运行,结束之后就会自动退出,但是如果中途出现错误,控制器会重新创建一个pod,再运行。

使用job控制器

apiVersion: batch/v1
kind: Job
metadata:
  name: myjob
spec:
  ttlSecondsAfterFinished: 100
  #设置运行多少次
  completions: 5
  #设置并行的程序个数
  parallelism: 2
  #设置限制任务完成的时间
  activeDeadlineSeconds: 100
  template:
    spec:
      containers:
      - name: pi
        image: luksa/batch-job
      #设置重启的策略
      restartPolicy: onFailure

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/334736.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号