Q 2 | Schedule Pod on Master Node
Task weight:3 %
利用 image httpd:2.4.41-alpine
在default Namespace
创立一个Pod
。这个Pod
的名称应该是pod1
,container
应该命名为 pod1-container
。
这个 Pod
应该被部署在 Master
节点,不要在 Pod
上减少label
。
请简略形容一下为什么默认状况下为什么不能把 Pod
部署在 master node
,而后把起因写到文件/opt/course/2/master_schedule_reason
中。
解析:
通常来说 Master 节点默认是不能够部署 Pod 的。这个咱们能够通过以下命令来查看:
首先咱们来查看 Master 节点 taints 相干信息:
$ kubectl get node # find master node
$ kubectl describe node cluster1-master1 | grep Taint # get master node taints
$ kubectl describe node cluster1-master1 | grep Labels -A 10 # get master node labels
$ kubectl get node cluster1-master1 --show-labels # OR: get master node labels
接下来咱们创立 Pod template
:
# check the export on the very top of this document so we can use $do
$ kubectl run pod1 --image=httpd:2.4.41-alpine $do > 2.yaml
$ vim 2.yaml
接下来咱们手动批改一下 2.yaml
这个文件。如果记得不是很分明的话能够在Kubernetes
官网查问一下 tolerations
和 nodeSelector
相干的示例:
# 2.yaml
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: pod1
name: pod1
spec:
containers:
- image: httpd:2.4.41-alpine
name: pod1-container # change
resources: {}
dnsPolicy: ClusterFirst
restartPolicy: Always
tolerations: # add
- effect: NoSchedule # add
key: node-role.kubernetes.io/master # add
nodeSelector: # add
node-role.kubernetes.io/master: "" # add
status: {}
这里须要特地阐明的是,题目要求咱们 只在 Master
节点部署 ,因而,咱们用 nodeSelector 来确保 Pod 只被调度到 Master 节点。
当初,咱们能够来创立 Pod 的了:
$ kubectl -f 2.yaml create
执行结束后,咱们来检查一下执行后果:
➜ k get pod pod1 -o wide
NAME READY STATUS RESTARTS ... NODE NOMINATED NODE
pod1 1/1 Running 0 ... cluster1-master1 <none>
最初,咱们能够把默认不会调度 Pod 到 Master 节点的起因写在
/opt/course/2/master_schedule_reason
文件中。
# /opt/course/2/master_schedule_reason
master node can not be deployed by default, because it has taint "NoSchedule"
最初,入手来试试吧:
TGeek.cn 推出 Kubernetes 在线实战平台,欢送加我微信 rocwar 申请哦~
不要害羞,仅限前 100 名收费测试。
通关现金处分~
收费体验形式:
找群主预约测试工夫
您取得了两小时的测试体验工夫