k8s控制器管理

控制器管理

一.Replicaset控制器

1.建立控制器

复制代码
[root@master controler]# kubectl create deployment webcluster --image myapp:v1  --dry-run=client -o yaml  > repset.yml
apiVersion: apps/v1
kind: ReplicaSet
metadata:
  labels:
    app: webcluster
  name: webcluster
spec:
  replicas: 4
  selector:
    matchLabels:
      app: webcluster
        #  strategy: {}
  template:
    metadata:
      labels:
        app: webcluster
    spec:
      containers:
      - image: myapp:v1
        name: myapp

拉伸

2.测试功能

二.deployment

1.监控

复制代码
[root@master ~]# watch -n 1 " kubectl get pods   --show-labels;echo ====;kubectl get replicasets.apps"

2.建立deployment控制器

复制代码
[root@master controler]# kubectl create deployment webcluster --image myapp:v1  --dry-run=client -o yaml  > dep.yml
[root@master controler]# vim dep.yml
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: webcluster
  name: webcluster
spec:
  minReadySeconds: 5
  replicas: 2
  selector:
    matchLabels:
      app: webcluster
#  strategy: {}
  template:
    metadata:
      labels:
        app: webcluster
    spec:
      containers:
      - image: myapp:v1
        name: myapp
#        resources: {}

[root@master controler]# kubectl apply -f dep.yml
deployment.apps/webcluster created

3.升级和回滚

三.版本更新管理及优化

复制代码
[root@master controler]# vim dep.yml
spec:
  minReadySeconds: 5
  replicas: 6				#把pod数量设定为6方便观察
  selector:

[root@master controler]# kubectl apply -f dep.yml
deployment.apps/webcluster configured

1.查看更新策略信息

复制代码
[root@master controler]# kubectl describe deployments.apps webcluster
RollingUpdateStrategy:  25% max unavailable, 25% max surge

2.设定更新策略

复制代码
[root@master controler]# vim dep.yml
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: webcluster
  name: webcluster
spec:
  minReadySeconds: 5
  replicas: 6
  selector:
    matchLabels:
      app: webcluster
  strategy:
    rollingUpdate:
      maxSurge: 1					#更新时pod数量最多比期望值多一个
      maxUnavailable: 0				#不能使用pod数量比期望值数量多0
  template:
    metadata:
      labels:
        app: webcluster
    spec:
      containers:
      - image: myapp:v2
        name: myapp
          # resources: {}
[root@master controler]# kubectl apply -f dep.yml


[root@master controler]# kubectl describe deployments.apps webcluster
RollingUpdateStrategy:  0 max unavailable, 1 max surge

3.更新暂停和恢复

复制代码
[root@master controler]# kubectl rollout history deployment webcluster
deployment.apps/webcluster
REVISION  CHANGE-CAUSE
5         <none>
6         <none>

[root@master controler]# kubectl rollout pause deployment webcluster   #暂停更新
deployment.apps/webcluster paused
[root@master controler]# vim dep.yml
      containers:
      - image: myapp:v2
        name: myapp

[root@master controler]# kubectl rollout resume deployment webcluster			#开启更新
deployment.apps/webcluster resumed

[root@master controler]# kubectl rollout history deployment webcluster
deployment.apps/webcluster
REVISION  CHANGE-CAUSE
6         <none>
7         <none>

四.DaemonSet

复制代码
[root@master controler]# kubectl create deployment daemonset --image myapp:v1 --dry-run=client -o yaml  > daemonset.yml
[root@master controler]# vim daemonset.yml
apiVersion: apps/v1
kind: DaemonSet
metadata:
  labels:
    app: daemonset
  name: daemonset
spec:
  selector:
    matchLabels:
      app: daemonset
  template:
    metadata:
      labels:
        app: daemonset
    spec:
      containers:
      - image: myapp:v1
        name: myapp

#另外开启一个主机node3,并设定在初始化集群时的所有设定确保所有服务的开启
#在master中重新生成集群主机注册时需要的token
[root@master controler]# kubeadm token create --print-join-command
kubeadm join 172.25.254.100:6443 --token gbhcbd.ivfk0bvi9kgp2lqc --discovery-token-ca-cert-hash sha256:6454295c25081331e13eebefcd0cab26b03ebdf0a121e554b397faf799238dd2


[root@node3 ~]# kubeadm join 172.25.254.100:6443 --token wn1egx.sv3qgc2a7my26huu --discovery-token-ca-cert-hash sha256:6454295c25081331e13eebefcd0cab26b03ebdf0a121e554b397faf799238dd2 --cri-socket=unix:///var/run/cri-dockerd.sock

五.Job控制器

复制代码
[root@master controler]# vim job.yml
apiVersion: batch/v1
kind: Job
metadata:
  name: testjob
spec:
  completions: 6
  parallelism: 2
  backoffLimit: 4
  template:
    spec:
      containers:
      - image: busybox:latest
        name: testjob
        command: ["/bin/sh","-c"]
        args:
        - |
          echo this is testjob message
          sleep 10
      restartPolicy: Never

六.Cronjob控制器

复制代码
[root@master controler]# kubectl create cronjob cronjob --image busybox  --schedule "* * * * *" --dry-run=client -o yaml > cronjob.yml

[root@master controler]# vim cronjob.yml
apiVersion: batch/v1
kind: CronJob
metadata:
  name: cronjob
spec:
  jobTemplate:
    metadata:
      name: cronjob
    spec:
      template:
        spec:
          containers:
          - image: busybox
            name: cronjob
            command:
              - /bin/sh
              - -c
              - echo "hello timinglee"
          restartPolicy: OnFailure
  schedule: '* * * * *'

[root@master controler]# kubectl apply -f cronjob.yml
cronjob.batch/cronjob created

[root@master controler]# kubectl get cronjobs.batch
NAME      SCHEDULE    TIMEZONE   SUSPEND   ACTIVE   LAST SCHEDULE   AGE
cronjob   * * * * *   <none>     False     0        <none>          24s

[root@master controler]# kubectl logs cronjob-29794219-fr85d
hello timinglee
相关推荐
程序猿阿越43 分钟前
kubelet源码阅读
后端·kubernetes·源码阅读
m0_525724723 小时前
端到端 GitOps + 金丝雀流程测评报告
云原生·自动化·k8s·devops
名字还没想好☜3 小时前
kubectl 排障实战:jsonpath 精准取值、custom-columns、events 排序与 top 速查
运维·前端·chrome·docker·kubernetes
易番番ERP4 小时前
筹备ERP项目|前期认知与调研的核心要点
微服务·云原生·易番番erp
無法複制4 小时前
Windows10安装配置Docker Desktop教程
运维·docker·容器
分布式存储与RustFS4 小时前
RustFS 原生支持 S3 Tables:对象存储怎么变成 AI 原生存储
云原生·开源·对象存储·分布式存储·s3·rustfs·性能基准
大明二代5 小时前
使用 Traefik、cert-manager 和 DNS-01 为内网 Kubernetes 服务配置 HTTPS
git·kubernetes·flux
莫陌尛.7 小时前
StarRocks Iceberg MinIO S3 301报错完整修复文档(Docker环境)
java·docker·容器
再卷还是菜7 小时前
Kubernetes(k8s) 控制器的详细介绍与总结
笔记·学习·kubernetes