在节点关闭后,Pod不会在另一个节点上运行

时间:2015-08-27 19:17:39

标签: docker kubernetes

我创建了一个在Node3 172.24.18.125中运行的mysql pod。但是在我停止Node3中的所有kubernetes服务之后,这个pod在一段时间后消失,而不是在Node1或Node2中运行。为什么kubernetes master不会在另一个节点重新安排pod?以下是pod和复制控制器的yaml文件。

[root@localhost pods]# kubectl get nodes
NAME LABELS STATUS
127.0.0.1 kubernetes.io/hostname=127.0.0.1 Ready
172.24.18.123 database=mysql,kubernetes.io/hostname=172.24.18.123 Ready
172.24.18.124 kubernetes.io/hostname=172.24.18.124 Ready
172.24.18.125 kubernetes.io/hostname=172.24.18.125 Ready

YAML file to create mysql pod:
apiVersion: v1
kind: Pod
metadata:
name: mysql
labels:
name: mysql
spec:
containers:
- resources:
limits :
cpu: 1
image: mysql
name: mysql
env:
- name: MYSQL_ROOT_PASSWORD
value: welcome
ports:
- containerPort: 3306
  name: mysql

mysql-service.yaml
apiVersion: v1
kind: Service
metadata:
  labels:
    name: mysql
  name: mysql
spec:
  publicIPs:
    - 172.24.18.120
  ports:
    # the port that this service should serve on
    - port: 3306
  # label keys and values that must match in order to receive traffic for this service
  selector:
    name: mysql

replicationcontroller.yaml
apiVersion: v1
kind: ReplicationController
metadata:
 name: mysql-controller
spec:
 replicas: 2
 selector:
   name: mysql
 template:
   metadata:
     labels:
       name: mysql
   spec:
     containers:
       - name: mysql
         image: mysql
         ports:
           - containerPort: 3306

1 个答案:

答案 0 :(得分:5)

如果将Pod直接创建为pod,则不会将其重新安排到不同的节点。 pod只能在单个节点上运行。

复制控制器通过检测运行的pod数何时发生变化(例如由于节点故障)以及在需要时创建pod的新副本来为您处理此详细信息。

默认情况下,一旦节点没有向主节点报告5分钟,Kubernetes会认为故障节点上的pod已经死亡。在此之后,如果您的pod是复制控制器的一部分,控制器应该创建一个将在不同节点上安排的新副本。