k8s nodeName与nodeSelector的简单应用(转)
原文:https://blog.csdn.net/xhredeem/article/details/127687465
作者:xhredeem
来源:CSDN
默认情况下,k8s master 管理节点有污点标签,默认是NoSchedule,即不会被调度。新创建的pod 会随机选择除了master管理节点的以外的node工作节点上创建。如果想要使某个新建pod在某个node节点创建,可以使用nodeName或者nodeSelector两种方式
nodeName
这种方式适合某个pod在某台主机上创建。以nginx为例
[root@matser-0001 test]# kubectl apply -f nginx.pod.nodeName.example.yml
apiVersion: apps/v1 #api版本,没什么可说的 kind: Deployment # 资源类型为Deployment metadata: #元数据,即资源的描述 name: nginx-deployment #Deployment资源的名称, 可以自定义 labels: #Deployment的标签定义 app: nginx #Deployment的标签 spec: #Deployment资源对象的核心信息 replicas: 4 #定义pod副本的数量为4 selector: #定义标签选择器 matchLabels: #定义匹配标签 app: nginx #定义匹配的标签具体是谁 template: #定义pod的模板 metadata: #定义pod的元数据,即pod的描述信息 labels: #定义pod的标签 app: nginx #pod标签的具体值 spec: #pod资源对象的核心信息 containers: #定义容器资源 - name: nginx #容器名 image: nginx #容器使用的镜像 imagePullPolicy: IfNotPresent #镜像拉取策略,默认是Always ports: #容器端口定义 - containerPort: 80 #暴露容器端口 nodeName: node-0002 # 选择在主机名为node-0002的主机上创建pod
结果显示在node-0002上创建了4个nginx pod
nodeSelector
这种方式适合给打上特定标签的node节点上创建pod。还是以nginx为例,给node-0001标签app=nginx
[root@matser-0001 test]# kubectl label nodes node-0001 app=nginx
[root@matser-0001 test]# kubectl
apply -f nginx.pod.nodeSelector.example.yml
apiVersion: apps/v1 #api版本,没什么可说的 kind: Deployment # 资源类型为Deployment metadata: #元数据,即资源的描述 name: nginx-deployment #Deployment资源的名称, 可以自定义 labels: #Deployment的标签定义 app: nginx #Deployment的标签 spec: #Deployment资源对象的核心信息 replicas: 4 #定义pod副本的数量为4 selector: #定义标签选择器 matchLabels: #定义匹配标签 app: nginx #定义匹配的标签具体是谁 template: #定义pod的模板 metadata: #定义pod的元数据,即pod的描述信息 labels: #定义pod的标签 app: nginx #pod标签的具体值 spec: #pod资源对象的核心信息 containers: #定义容器资源 - name: nginx #容器名 image: nginx #容器使用的镜像 imagePullPolicy: IfNotPresent #镜像拉取策略,默认是Always ports: #容器端口定义 - containerPort: 80 #暴露容器端口 nodeSelector: #定义节点标签选择 app: nginx # 选择在打了标签app=nginx的主机上创建pod
结果显示pod在点node-0001上创建