Kubernetes集群向指定节点上创建容器

Kubernetes Pod调度到特定Node
本文介绍如何在Kubernetes中通过给Node打标签,并在Pod配置中使用NodeSelector,实现Pod调度到指定Node上运行的方法。具体步骤包括:1) 查看节点信息;2) 给指定节点添加标签;3) 在Pod配置文件中指定nodeSelector;4) 创建Pod;5) 验证Pod是否在指定节点上运行。

如果需要限制Pod到指定的Node上运行,则可以给Node打标签并给Pod配置NodeSelector。

给节点添加标签

首先查看节点信息

[root@k8s-master ~]# kubectl get nodes
NAME          STATUS    AGE
k8s-slave01   Ready     4d
k8s-slave02   Ready     4d

选择一个节点,给这个节点添加一个标签

[root@k8s-master ~]# kubectl label nodes k8s-slave01 disktype=abc
node "k8s-slave01" labeled

查看标签信息

[root@k8s-master ~]# kubectl get nodes --show-labels
NAME          STATUS    AGE       LABELS
k8s-slave01   Ready     4d        beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,disktype=abc,kubernetes.io/hostname=k8s-slave01
k8s-slave02   Ready     4d        beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/hostname=k8s-slave02

 

向指定节点上创建pod

mysql-rc-xxx.yaml文件示例

kind: ReplicationController
metadata:
  name: mysql-master
  namespace: default
  labels:
    name: mysql-master
    version: v1
spec:
  replicas: 1
  selector:
    name: mysql-master-pod
    version: v1
  template:
    metadata:
      labels:
        name: mysql-master-pod
        version: v1
    spec:
      containers:
        - image: docker.io/mysql
          name: master
          ports:
            - containerPort: 3306
          nodeSelector:
              disktype: abc
          env:
            - name: MYSQL_ROOT_PASSWORD
              value: "123456"
          volumeMounts:
            - name: mysql-storage
              mountPath: /var/lib/mysql
      volumes:
        - name: mysql-storage
          hostPath:
            path: /data/mysql_master

创建pod

[root@k8s-master k8s_yamls]# kubectl create -f  mysql-rc-master.yaml
replicationcontroller "mysql-master" created

mysql-svc-xxx.yaml示例

apiVersion: v1
kind: Service
metadata:
  name: mysql-master-svc
  namespace: default
  labels:
    name: mysql-master-svc
spec:
  externalIPs:
    - 192.168.44.61
  type: NodePort
  ports:
  - port: 3306
    protocol: TCP
    targetPort: 3306
    name: http
    nodePort: 30006 
  selector:
    name: mysql-master-pod

创建svc

[root@k8s-master k8s_yamls]# kubectl create -f  mysql-svc-master.yaml
service "mysql-master-svc" created

查看是否在slave01上

[root@k8s-master ~]# kubectl get pods -o wide      
NAME                 READY     STATUS    RESTARTS   AGE       IP            NODE
mysql-master-5h2kg   1/1       Running   0          42m       172.17.25.2   k8s-slave01

 

转载于:https://www.cnblogs.com/blazeZzz/p/10297589.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值