kubernetes学习之路--第六天--Pod控制器

kubernetes Pod控制器

  • 回顾 管理Pod资源,采用资源清单的方式
    • apiVersion
    • kind
    • metadata
    • spec
      • containers
        • name
        • image
        • imagePullPolicy:Always、Never、IfNotPresent
        • ports:
          • name
          • containerPort
            ##探测器
        • livenessProbe
        • readinessProbe
        • liftcycle
      • nodeSelector
      • nodeName
      • restartPolicy:Always,Never,OnFailure
    • status(只读)

Pod控制器:

  • ReplicaSet(不建议直接使用):
    1、用户期望的副本数
    2、标签选择器,如果pod不满足用户期望
    3、pod资源模板来完成pod资源的新建
  • Deployment: 管理无状态应用的控制器,运行在ReplicaSet上,控制ReplicaSet以实现pod的管理,支持扩缩容和滚动性更新
  • DaemonSet:用于确保集群中的每个节点只运行一个特定的pod副本,实现系统级的后台任务,服务无状态、守护进程类
  • Job:
    • Cronjob: 处理
  • StatefulSet
kubectl explain rs   ##查看replicaset说明
kubectl explain rs.spec
apiVersion: apps/v1
kind: ReplicaSet
metadata:
    name: myapp
    namespace: default
spec:
    replicas: 2 ##创建2个pod资源
    selector: ##使用什么样的标签选择器
        matchLabels:
            app: myapp
            release: canary
        template:
            metadata: 
                name: myapp-pd
                labels:
                    app: myapp
                    release: canary
                    environment: qa
            spec:
                containers:
                - name: myapp-container
                  image: myapp:v1
                  ports: 
                  - name: http
                    containerPort: 80
                    
kubectl explain deploy

在这里插入图片描述

  • 创建Deployment
#deploymnet
apiVersion: apps/v1
kind: Deployment
metadata:
    name: myapp-deploy
    namespace: default
spec:
    replicas: 2
    selector:
        matchLabels: #标签选择器
            app: myapp
            release: canary
        template:
            metadata:
                labels:
                    app: myapp
                    release: canary
            spec:
                containers:
                - name: myapp
                  image: myapp:v1
                  prots:
                  - name: http
                    containerPort: 80
kubectl apply -f deploy-demo.yaml

在这里插入图片描述

滚动更新式创建
kubectl describe deploy myapp-deploy

在这里插入图片描述

查看滚动历史
kubectl rollout history deployment myapp-deploy 
打补丁的方式修改配置文件,创建5个pod
kubectl patch deployment myapp-deploy -p '{"spec":{"replicas":5}}'
查看创建了5个pod
kubectl get pods
打补丁的方式更改yaml文件中spec字段
kubectl patch deployment myapp-deploy -p '{"spec":{"strategy":{"rollingUpdate":{"maxSurge":1,"maxSurge":1,"maxUnavailable":0}}}}'
更改镜像版本,并且暂停更新过程
kubectl set image deployment myapp-deploy myapp=myapp:v3 && kubectl rollout pause deployment myapp-deploy
kubectl get nods -l app-myapp -w
继续更新
kubectl rollout resume deployment myapp-deploy
回滚镜像版本,不指定就是回滚到最近一版
kubectl rollout undo --to-revision=2
查看deploy的所有版本
kubectl rollout history deployment myapp-deploy
  • DaemonSet
apiVersion: apps/v1
kind: DaemonSet
metadata:
    name: myapp-ds
    namespace: default
spec:
   replicas: 1
   selector:
        matchLabels: #标签选择器
            app: redis-ds
            role: logstor
            release: stable
        template:
            metadata:
                labels:
                    app: redis-ds
                    role: logstor
                    release: stable
            spec:
                containers:
                - name: redis
                  image: redis:latest
                  ports:
                  - name: redis
                    containerPort: 6379
             
kubectl apply -f ds-demo.yaml
kubectl expose deploymnet redis --port=6379

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值