在k8s中,Pod在大部分場景下都只是容器的載體而已,通常需要通過Deployment,DaemonSet,RC,Job等對象來完成一組Pod的調度與自動控制功能.
1、Deployment/RC:全自動調度
Deployment或RC的主要功能之一是自動部署一個容器應用的多份副本,以及持續監控副本的數量,在集羣內始終維持用戶指定的副本數量.
nginx-deploymnet.yaml
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
template:
metadata:
labels:
app: nginx
2、NodeSelector:定向調度
1)首先通過kubectl label命令給目標Node打上一些標籤
我們給k8s-node-1節點打上一個Zone=north的標籤,表明它是“北方”的一個節點
kubectl label nodes k8s-node-1 zone=north
2)然後,在Pod的定義上加上nodeSelector的設置,以redis-master-controller.yaml爲例:
apiVersion: v1
kind: ReplicationController
metadata:
name: redis-master
labels:
name: redis-master
spec:
containers:
- name: master
image: kubeguide/redis-master
ports:
- containerPort: 6379
nodeSelector:
zone: north
3、NodeAffinity:Node親和性調度容器的健康檢查
pod通過兩類探針來檢查容器的健康狀態.
1、LivenessProbe,用於判斷容器是否健康並反饋給kubelet.
如果不健康,kubelet將刪除該容器,
2、ReadinessProbe探針,用於判斷容器是否啓動完成,且準備接收請求.
如果檢測到啓動失敗,pod的狀態將被修改.
請關注掃描下方公衆號,獲取更多信息