集群编排——控制器"/>
kubernetes集群编排——控制器
控制器
文档:/
replicaset
vim rs-example.yml
apiVersion: apps/v1
kind: ReplicaSet
metadata:name: replicaset-example
spec:replicas: 3selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx
kubectl apply -f rs-example.yml
kubectl get pod --show-labels
replicaset是通过标签匹配pod
kubectl label pod replicaset-example-w9z28 app=myapp --overwritekubectl get pod --show-labels
kubectl label pod replicaset-example-w9z28 app=nginx --overwritekubectl get pod --show-labels
replicaset自动控制副本数量,pod可以自愈
kubectl delete pod replicaset-example-q2sq9kubectl get pod --show-labels
回收资源
kubectl delete -f rs-example.yml
deployment
vim deployment-example.yaml
apiVersion: apps/v1
kind: Deployment
metadata:name: deployment-example
spec:replicas: 3selector:matchLabels:app: myapptemplate:metadata:labels:app: myappspec:containers:- name: myappimage: myapp:v1
kubectl apply -f deployment-example.yaml
kubectl get all
版本迭代
vim deployment-example.yaml
apiVersion: apps/v1
kind: Deployment
metadata:name: deployment-example
spec:replicas: 3selector:matchLabels:app: myapptemplate:metadata:labels:app: myappspec:containers:- name: myappimage: myapp:v2
kubectl apply -f deployment-example.yaml
kubectl get all
replicaset就是deployment的一个版本
回滚
vim deployment-example.yaml
apiVersion: apps/v1
kind: Deployment
metadata:name: deployment-example
spec:replicas: 3selector:matchLabels:app: myapptemplate:metadata:labels:app: myappspec:containers:- name: myappimage: myapp:v1
kubectl apply -f deployment-example.yaml
kubectl get all
滚动更新策略
vim deployment-example.yaml
apiVersion: apps/v1
kind: Deployment
metadata:name: deployment-example
spec:minReadySeconds: 5 strategy:rollingUpdate:maxSurge: 1maxUnavailable: 0replicas: 3selector:matchLabels:app: myapptemplate:metadata:labels:app: myappspec:containers:- name: myappimage: myapp:v1
kubectl apply -f deployment-example.yamlkubectl describe deployments.apps deployment-example
暂停与恢复
暂停,避免触发不必要的线上更新
kubectl rollout pause deployment deployment-example
vim deployment-example.yaml
apiVersion: apps/v1
kind: Deployment
metadata:name: deployment-example
spec:minReadySeconds: 5strategy:rollingUpdate:maxSurge: 1maxUnavailable: 0replicas: 6 selector:matchLabels:app: myapptemplate:metadata:labels:app: myappspec:containers:- name: myappimage: nginxresources:limits:cpu: 0.5memory: 200Mirequests:cpu: 0.5memory: 200Mi
kubectl apply -f deployment-example.yaml
kubectl get all
调整副本数,不受影响
但是更新镜像和修改资源并没有触发更新
kubectl rollout history deployment deployment-example
恢复后开始触发更新
kubectl rollout resume deployment deployment-examplekubectl rollout history deployment deployment-example
kubectl get pod
回收
kubectl delete -f deployment-example.yaml
daemonset
vim daemonset-example.yml
apiVersion: apps/v1
kind: DaemonSet
metadata:name: daemonset-example
spec:selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:tolerations:- effect: NoScheduleoperator: Existscontainers:- name: nginximage: nginx
kubectl apply -f daemonset-example.ymlkubectl get pod -o wide
kubectl delete -f daemonset-example.yml
job
vim job.yml
apiVersion: batch/v1kind: Jobmetadata:name: pispec:completions: 6parallelism: 2template:spec:containers:- name: piimage: perl:5.34.0command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]restartPolicy: NeverbackoffLimit: 4
kubectl apply -f job.ymlkubectl get pod
kubectl delete -f job.yml
cronjob
vim cronjob.yml
apiVersion: batch/v1kind: CronJobmetadata:name: hellospec:schedule: "* * * * *"jobTemplate:spec:template:spec:containers:- name: helloimage: busyboximagePullPolicy: IfNotPresentcommand:- /bin/sh- -c- date; echo Hello from the Kubernetes clusterrestartPolicy: OnFailure
kubectl apply -f cronjob.ymlkubectl get all
kubectl delete -f cronjob.yml
更多推荐
kubernetes集群编排——控制器
发布评论