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
相关推荐
九皇叔叔2 小时前
Kubernetes 核心概念:集群架构、核心组件与资源对象
docker·容器·kubernetes·k8s
rustfs3 小时前
MinIO 国产开源平替正式 GA
分布式·docker·云原生·rust
阿里云云原生7 小时前
云原生可观测性进阶:利用 MCP ToolSets 实现 Agent 在复杂排障场景中的安全与高效协作
云原生
wdfk_prog7 小时前
ROS教程07:从 ros::start() 顺着源码读懂 Master、XML-RPC 与 Topic 注册发现
运维·缓存·docker·容器·ros
两点王爷9 小时前
常用的 Docker 镜像拉取地址仓库及常用命令详解
运维·服务器·容器
wdfk_prog9 小时前
用 Git Submodule + Sparse Checkout 管理 RT-Thread:内核、BSP、第三方库与业务代码分层实践
运维·缓存·docker·容器·ros
努力努力再努力wz9 小时前
【Docker入门系列】镜像为什么能复用?一文吃透 Docker Image、Registry、运行时架构与常用命令
缓存·docker·容器
运维老郭9 小时前
别再被 accept 骗了:TCP 连接到底开不开新端口?一次讲透
云原生
weixin_4202841410 小时前
Kubernetes 开发自定义CRD资源
云原生·kubernetes·kubelet
程序员天天困10 小时前
RustFS 1.0.0 深度解析:GA 之后,它值得替代 MinIO 吗?
后端·云原生·rust