江
江小南
V1
2022/10/23阅读:101主题:默认主题
【CKA、CKS篇】CKA真题解析——调度 pod 到指定节点
真题解析
题目:
按如下要求调度一个pod:
名称:nginx-kusc00401
Image:nginx
Node:selector: disk=ssd
考察点:
nodeSelect 属性的使用
解析:
-
根据题目意思,需要先确认名称为 nginx-kusc00401 的 pod 是否存在,如果没有需要创建,并且使用的镜像是 nginx 镜像。
-
将创建的 pod 调度到标有 disk=ssd 标签的节点上。
帮助文档:
https://kubernetes.io/zh-cn/docs/tasks/configure-pod-container/assign-pods-nodes/

实际操作:
-
检查
# 检查pod和节点标签
candidate@node01:~$ kubectl get pod -A | grep nginx-kusc00401
candidate@node01:~$
candidate@node01:~$ kubectl get node --show-labels | grep disk=ssd
node01 Ready <none> 50d v1.24.2 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,disk=ssd,kubernetes.io/arch=amd64,kubernetes.io/hostname=node01,kubernetes.io/os=linux
candidate@node01:~$
通过检查发现Pod并不存在,需要创建。而含有 disk=ssd 标签的node已经存在,为node01。
-
创建pod
# pod-disk-ssd.yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx-kusc00401
spec:
containers:
- name: nginx
image: nginx
imagePullPolicy: IfNotPresent
nodeSelector:
disk: ssd
拷贝官文案例,修改下 pod 名称和镜像,删除多余的部分即可。
注意:使用:set paste,防止 yaml 文件空格错序。
candidate@node01:~$ kubectl apply -f pod-disk-ssd.yaml
pod/nginx-kusc00401 created
candidate@node01:~$
-
检查验证
candidate@node01:~$ kubectl get pod nginx-kusc00401
NAME READY STATUS RESTARTS AGE
nginx-kusc00401 1/1 Running 0 17s
candidate@node01:~$ kubectl get pod nginx-kusc00401 -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-kusc00401 1/1 Running 0 22s 10.244.196.172 node01 <none> <none>
candidate@node01:~$
通过验证发现确实调度到了node01节点。
至此本道题目完成。
扩展
-
给节点添加标签
# kubectl label nodes <your-node-name> <your-label>
candidate@node01:~$ kubectl label nodes node02 project=app
node/node02 labeled
candidate@node01:~$
candidate@node01:~$ kubectl get node --show-labels | grep project=app
node02 Ready <none> 50d v1.24.2 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=node02,kubernetes.io/os=linux,project=app
candidate@node01:~$
-
创建一个会被调度到特定节点上的 Pod
# foo-node.yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
nodeName: node02 # 调度 Pod 到特定的节点
containers:
- name: nginx
image: nginx
imagePullPolicy: IfNotPresent
candidate@node01:~$ kubectl apply -f foo-node.yaml
pod/nginx created
candidate@node01:~$
candidate@node01:~$ kubectl get pod nginx -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx 1/1 Running 0 65s 10.244.140.110 node02 <none> <none>
candidate@node01:~$
成功调度到了node02节点上。
这种是将pod调度到指定的节点上。上面题目中是将pod调度到指定标签的节点上,注意这两种区别。
作者介绍
江
江小南
V1