work hard work smart

专注于Java后端开发。 不断总结,举一反三。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

K8s控制器管理原理与实践

Posted on 2020-12-08 11:11  work hard work smart  阅读(222)  评论(0编辑  收藏  举报

业务调用通过控制器管理,包括以下控制器

ReplicaSet: 一个Pod可以有多个副本,这些副本实现相同的功能

Deployment: 在ReplicaSet之上,负责Pod的发布和Pod中容器的升级。

Job: 任务

SatefulSet: 保存Pod的名称不变

DaemonSet: 相当于值班人员,保证单节点只起一个Pod

 

 

 

1、sscale多个副本

 kubectl scale --replicas=3  deployment/nginx-deployment

查询replicaset情况

kubectl  get   replicaset

 

 

 

2、滚动升级

修改代码后,打包生成镜像,修改yml的版本后,从而实现滚动升级。

升级: 更新镜像 + kubectl apply

查询: kubectl rollout history deployment

回滚: kubectl rollout undo deployment

 

首先检查nginx版本为1.7.9

kubectl describe pod nginx-deployment-5d76d6897d

 

 

然后将nginx的版本从1.7.9 改为1.7.10

cd  /home/tools/k8s

vi mynginx-deployment.yml

 

 

查看nginx-deployment当前只有一个版本

 

 

kubectl apply -f mynginx-deployment.yml  --record

查看版本  kubectl rollout history deployment

可以发现多了一个版本

 

 

查看pod

kubectl get pod

 

 

如果发现升级的版本错误,可以回滚

kubectl rollout undo deployment nginx-deployment  --to-revision=1

 

 

3、daemonset

kubectl get daemonset  --namespace=kube-system

 

 编辑

kubectl edit daemonset kube-proxy  --namespace=kube-system

查看Pod

kubectl get pod --namespace=kube-system | grep kube-proxy

 

 查看在哪个节点上

kubectl get pod --namespace=kube-system -o wide | grep kube-proxy

 

 

 

4、Batch Job 

 vi hello.yml

apiVersion: batch/v1
kind: Job
metadata:
  name: hello
spec:
  template:
    metadata:
      name: hello
    spec:
      containers:
      - name: busybox
        image: busybox
        command: ["echo", "hello world"]
      restartPolicy: Never

  

 

 查看job

 kubectl get job

 

 查看Pod

 

输出日志    kubectl logs hello-wg8v7

 

 

5、CronJob

apiVersion: batch/v2alpha1
kind: CronJob
metadata:
  name: hello
spec:
  schedule: "*/1 * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: busybox
            image: busybox
            command: ["echo", "hello world, CronJob."]
          restartPolicy: Never