kubernetes将pod分配到指定node上

由于项目部署在内网环境,但有应用A需要访问公网,而只有主机node-01是可以访问公网的,所以我们需要将应用A 的pod分配到node-01上。此时需要用到kubernetes的nodeSelector.


nodeSelector是节点选择约束的最简单的形式,通过给node添加标签的形式,将pod的分配到指定的node上。

1、给节点添加标签

我们通过以下命令给节点添加标签kubectl label nodes <node-name> <label-key>=<label-value>

>  kubectl label nodes node-01 pubilc.network=True
node/node-01 labeled

查看标签,会发现多了network=True的值。

> kubectl get no --show-labels
node-01        Ready    <none>   37d   v1.15.0   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=node-01,kubernetes.io/os=linux,pubilc.network=True

2、在pod的配置中添加nodeSelector字段

pods/pay-service.yaml

apiVersion: v1
kind: Pod
metadata:
  name: pay-service
  labels:
    env: dev
spec:
  containers:
  - name: pay-service
    image: pay-service
    imagePullPolicy: IfNotPresent
  nodeSelector:
    pubilc.network: True

这样我们的pod就会自动分配到被添加了标签pubilc.network=True 的node上。


另外kubernetes还提供了Affinity and anti-affinity以及pod间的Affinity and anti-affinity,更灵活的控制pod的分配。

参考:https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector

发布了48 篇原创文章 · 获赞 31 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/weixin_44723434/article/details/100094581