kubernetes调度pod运行于master节点上

3 篇文章 0 订阅
2 篇文章 0 订阅
应用背景:

使用kubeadm部署的kubernetes集群,其master节点默认拒绝将pod调度运行于其上的,加点官方的术语就是:master默认被赋予了一个或者多个“污点(taints)”,“污点”的作用是让该节点拒绝将pod调度运行于其上。那么存在某些情况,比如想让master也成为工作节点可以调度pod运行怎么办呢?

两种方式:①去掉“污点”(taints)【生产环境不推荐】;
②让pod能够容忍(tolerations)该节点上的“污点”。

测试环境:
节点名称节点类型版本号部署方式
kube-node-01masterv1.11.2kubeadm init
kube-node-02nodev1.11.2kubeadm join
kube-node-03nodev1.11.2kubeadm join
操作步骤:
  • 创建pod查看运行节点情况
[root@kube-node-01 ~]# kubectl apply -f test-springboot-rc.yaml  
replicationcontroller/test-springboot created
[root@kube-node-01 ~]# kubectl get pods -o wide
NAME                                          READY     STATUS    RESTARTS   AGE       IP             NODE          NOMINATED NODE
test-springboot-6495q                         1/1       Running   0          2m        10.244.2.113   kube-node-03   <none>
test-springboot-b5sq2                         1/1       Running   0          2m        10.244.1.76    kube-node-02   <none>

多次尝试发现pod只运行在kube-node-02,kube-node-02节点上,不会往master节点调度

  • 查看master节点信息
[root@kube-node-01 ~]# kubectl describe node kube-node-01
……
Taints:             node-role.kubernetes.io/master:NoSchedule
Unschedulable:      false
……

发现master节点污点参数Taints为node-role.kubernetes.io/master:NoSchedule

  • 解决方案
  1. 去掉“污点”(taints)【生产环境不推荐】
[root@kube-node-01 ~]# kubectl taint nodes kube-node-01 node-role.kubernetes.io/master-
  1. 让pod能够容忍(tolerations)该节点上的“污点”
……

 spec:
   tolerations:
    - key: node-role.kubernetes.io/master
      operator: Exists
      effect: NoSchedule
   containers:
    - name: test-springboot
……
  • 结果验证
[root@tlsw-pre-01 home]# kubectl apply -f test-springboot-rc.yaml 
replicationcontroller/test-springboot configured
[root@tlsw-pre-01 home]# kubectl get pod -o wide
NAME                                          READY     STATUS              RESTARTS   AGE       IP             NODE          
test-springboot-4875k                         1/1       Running             0          10m       10.244.1.77    kube-node-02
test-springboot-6495q                         1/1       Running             0          23m       10.244.2.113   kube-node-03
test-springboot-68qtw                         1/1       Running             0          19m       10.244.2.114   kube-node-03 
test-springboot-6pz2x                         0/1       ContainerCreating   0          3s        <none>         kube-node-01
test-springboot-b5sq2                         1/1       Running             0          23m       10.244.1.76    kube-node-02 
test-springboot-hghwb                         1/1       Running             0          10m       10.244.2.115   kube-node-03 

发现问题已解决,kube-node-01节点可以调度pod了

  • 备注
  1. 让 master节点恢复不参与POD负载的命令为
[root@kube-node-01 ~]# kubectl taint nodes <node-name> node-role.kubernetes.io/master=:NoSchedule
  1. 让 master节点恢复不参与POD负载,并将Node上已经存在的Pod驱逐出去的命令
[root@kube-node-01 ~]# kubectl taint nodes <node-name> node-role.kubernetes.io/master=:NoExecute
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值