您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
49、集群调度 节点亲和性(1)
发布时间:2023-01-05 21:46:33编辑:雪饮阅读()
Step1
首先来温习下标签
[root@k8s-master01 ~]# kubectl get node --show-labels
NAME STATUS ROLES AGE VERSION LABELS
k8s-master01 Ready master 22d v1.15.1 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-master01,kubernetes.io/os=linux,node-role.kubernetes.io/master=
k8s-node01 Ready <none> 22d v1.15.1 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-node01,kubernetes.io/os=linux
k8s-node02 Ready <none> 22d v1.15.1 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-node02,kubernetes.io/os=linux
可以看到这里有两个特殊的标签
kubernetes.io/hostname=k8s-node01
kubernetes.io/hostname=k8s-node02
然后接下来咱们先清理下之前的pod
[root@k8s-master01 affi]# kubectl delete pod --all
pod "test-pd" deleted
然后创建自己的pod
[root@k8s-master01 affi]# cat pod1.yaml
apiVersion: v1
kind: Pod
metadata:
name: affinity
labels:
app: node-affinity-pod
spec:
containers:
- name: with-node-affinity
image: wangyanglinux/myapp:v1
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: NotIn
values:
- k8s-node02
硬性亲和性,要求不在节点2上。
[root@k8s-master01 affi]# kubectl create -f pod1.yaml
pod/affinity created
那么果然他在节点1上
[root@k8s-master01 affi]# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
affinity 1/1 Running 0 2m7s 10.224.1.188 k8s-node01 <none> <none>
经过多次测试,仍旧绑定在节点1上
[root@k8s-master01 affi]# kubectl delete pod --all && kubectl create -f pod1.yaml && kubectl get pod -o wide
pod "affinity" deleted
pod/affinity created
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
affinity 0/1 ContainerCreating 0 0s <none> k8s-node01 <none> <none>
[root@k8s-master01 affi]# kubectl delete pod --all && kubectl create -f pod1.yaml && kubectl get pod -o wide
pod "affinity" deleted
pod/affinity created
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
affinity 0/1 ContainerCreating 0 0s <none> k8s-node01 <none> <none>
[root@k8s-master01 affi]# kubectl delete pod --all && kubectl create -f pod1.yaml && kubectl get pod -o wide
pod "affinity" deleted
pod/affinity created
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
affinity 0/1 ContainerCreating 0 0s <none> k8s-node01 <none> <none>
都不会在node02上
这就是节点的硬亲和性策略
Step2
再次将pod清理下
[root@k8s-master01 affi]# kubectl delete pod --all
pod "affinity" deleted
然后这次咱们用In,也就是只让其在node02节点上
[root@k8s-master01 affi]# cat pod2.yaml
apiVersion: v1
kind: Pod
metadata:
name: affinity
labels:
app: node-affinity-pod
spec:
containers:
- name: with-node-affinity
image: wangyanglinux/myapp:v1
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- k8s-node02
可以看到就很不错,的确只在node02上
[root@k8s-master01 affi]# kubectl create -f pod2.yaml && kubectl get pod -o wide
pod/affinity created
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
affinity 0/1 ContainerCreating 0 1s <none> k8s-node02 <none> <none>
[root@k8s-master01 affi]# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
affinity 1/1 Running 0 65s 10.224.2.200 k8s-node02 <none> <none>
Step3
咱们再来清理一波
[root@k8s-master01 affi]# kubectl delete pod --all
pod "affinity" deleted
这次我们让其亲和到一个不存在的节点上
[root@k8s-master01 affi]# cat pod3.yaml
apiVersion: v1
kind: Pod
metadata:
name: affinity
labels:
app: node-affinity-pod
spec:
containers:
- name: with-node-affinity
image: wangyanglinux/myapp:v1
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- k8s-node03
由于node03一直不在,所以一直处于pending状态
[root@k8s-master01 affi]# kubectl create -f pod3.yaml && kubectl get pod -o wide
pod/affinity created
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
affinity 0/1 Pending 0 0s <none> <none> <none> <none>
[root@k8s-master01 affi]# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
affinity 0/1 Pending 0 13s <none> <none> <none> <none>
由于是硬策略,所以这里一直就非要等到创建在node03节点上。。。也就不断的pending状态上。。。
接下来我们再次清理下
[root@k8s-master01 affi]# kubectl delete pod --all
pod "affinity" deleted
关键字词:集群,调度,节点,亲和,性
上一篇:47. 存储 PV-PVC(4)
下一篇:50、集群调度 节点亲和性(2]
相关文章
- 14、Kubernetes - 集群安装 - 配置私有仓库、集群功能
- 13、Kubernetes - 集群安装
- 12、Kubernetes - 集群安装(内核升级)
- 11、Kubernetes - 集群安装准备 - 安装软路由(koolsha
- 10、Kubernetes - 集群安装准备 - 说明
- 12_EL_获取域中存储的值_对象值(对象值、对象属性值(通
- webman-session管理-配置文件-更換session驅動為redis
- webman-session管理-配置文件-redis集群搭建(單宿主機
- workerman常用组件-channel分佈式通訊組件-channelCli
- workerman类TcpConnection的id属性