业务调用通过控制器管理,包括以下控制器
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