我有一个Kubernetes集群,运行3个节点,但我只想在两个节点上运行我的应用,所以我想问,我可以只在一个节点上运行Kubernetes集群中的其他pod(Kubernetes扩展)吗?1.节点=仅Kubernetes pod1.节点=我的应用程序1.节点=我的应用程序
xdyibdwo1#
可以,您只能在两个节点上运行应用程序POD,而在一个节点上运行其他扩展Kubernetes POD。当您提到Kubernetes扩展POD时,请考虑一些外部第三方POD(如Nginx入口控制器)和其他非默认系统POD(如kube-proxy、kubelet等),这些POD应要求运行每个可用节点。
您可以使用Node affinity在特定节点上调度POD。
apiVersion: v1 kind: Pod metadata: name: with-node-affinity spec: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: topology.kubernetes.io/hostname operator: In values: - node-1 - node-2 containers: - name: with-node-affinity image: nginx
您可以使用taint & toleration在特定节点上调度POD。
cnwbcb6i2#
某些kube-system pod(如kube-proxy、CNI pod(cilium/flannel))和其他daemonSet必须在每个工作节点上运行,您不能停止它们。如果不是这样,可以使用以下命令将节点更改为noSchedule。kubectl损坏节点类型=<a_node_label>:NoSchedule您可以进一步了解https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/的增强功能
2条答案
按热度按时间xdyibdwo1#
可以,您只能在两个节点上运行应用程序POD,而在一个节点上运行其他扩展Kubernetes POD。
当您提到Kubernetes扩展POD时,请考虑一些外部第三方POD(如Nginx入口控制器)和其他非默认系统POD(如kube-proxy、kubelet等),这些POD应要求运行每个可用节点。
您可以使用Node affinity在特定节点上调度POD。
您可以使用taint & toleration在特定节点上调度POD。
cnwbcb6i2#
某些kube-system pod(如kube-proxy、CNI pod(cilium/flannel))和其他daemonSet必须在每个工作节点上运行,您不能停止它们。如果不是这样,可以使用以下命令将节点更改为noSchedule。
kubectl损坏节点类型=<a_node_label>:NoSchedule
您可以进一步了解https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/的增强功能