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

如果需要限制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

猜你喜欢

转载自www.cnblogs.com/Alex-zqzy/p/10297589.html
今日推荐