k8s nodeName与nodeSelector的简单应用
k8s nodeName与nodeSelector的简单应用
默认情况下,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上创建
更多推荐
所有评论(0)