k8s将pod指定到某个节点

1、查看节点标签
kubectl get nodes --show-labels
2、给节点打标签
kubectl label node 10.64.39.219 node=bmd
kubectl label node 10.64.39.186 node=bmd
3、指定程序的运行pod
[root@apiserver k8s]# cat  selec.yml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: nginx-select-node1
spec:
  replicas: 2
  template:
    metadata:
      labels:
        app: nginx
    spec:
      nodeSelector:
        node: bmd
      containers:
      - name: nginx-select-node1
        image: nginx:latest
        ports:
        - containerPort: 80

4、相关选择节点说明

nodeSelector
在 Kubernetes 中,nodeSelector 是一个用于指定哪些节点可以运行 Pod 的属性。它是一组键值对,其中键表示标签的名称,值表示标签的值。使用 nodeSelector,可以将 Pod 分配给具有特定标签的节点,从而更好地控制应用程序的部署。
下面是一个 nodeSelector 实例,其中标签名为 "disktype",标签值为 "ssd":
Copy CodenodeSelector:
  disktype: ssd

当 Pod 定义中包含 nodeSelector 字段时,Kubernetes 将尝试将 Pod 调度到具有匹配标签的节点上。如果没有满足条件的节点,Pod 将处于挂起状态,直到有符合条件的节点可用。请注意,引用不存在的标签会使 Pod 处于 Pending 状态。
nodeSelector 可以与标签控制器一起使用来确保 Pod 部署在所需的节点上。例如,可以使用标签控制器为所有类型为 SSD 的节点打上 "disktype=ssd" 的标签,并在 Pod 中使用 nodeSelector 字段将应用程序分配给这些节点。
以下是相关知识来源链接:
[1]:此链接提供了有关 nodeSelector 字段的详细信息和示例。

nodeName

在 Kubernetes 中,nodename 是节点名称,用于唯一标识集群中的每个节点。可以使用 kubectl get nodes 命令查看节点名称列表。
nodename 可以在调试和故障排除期间十分有用。例如,在操作节点时可能需要指定节点名称来确保正确执行命令,或者查找在特定节点上运行的容器时需要查询节点名称。
另外需要注意的是,nodename 不是将 Pod 调度到特定节点的最佳方法。Kubernetes 通常会使用更高级别的策略来调度 Pod,如 nodeSelector、affinity/anti-affinity 和 taints/tolerations 等机制。如果尝试手动调度 Pod,除非明确知道后果,否则不要依赖 nodename。
以下是相关知识来源链接:
[1]:此链接提供了 API 文档,其中包含 nodename 的详细信息,以及如何在 Kubernetes API 中使用它。
[2]:此链接提供了关于如何在调试期间使用 nodename 的示例和说明。

  

  

  

  

posted @ 2023-04-21 14:07  苍茫宇宙  阅读(2434)  评论(0编辑  收藏  举报