docker - 节点关闭后,Pods不在另一个节点上运行

标签 docker kubernetes

我创建了一个在Node3 172.24.18.125中运行的mysql pod。但是,在我停止了Node3中的所有kubernetes服务之后,此容器在一段时间后消失了,而不是在Node1或Node2中运行。为什么kubernetes主服务器不重新调度其他节点中的Pod?以下是Pod和复制 Controller 的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

最佳答案

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

复制 Controller 通过检测正在运行的Pod的数量何时发生更改(例如由于节点故障)而为您处理此细节,并在需要时创建Pod的新副本。

默认情况下,一旦5分钟未向主节点报告故障节点,Kubernetes就会认为该节点上的Pod已死。此后,如果您的Pod是复制 Controller 的一部分,则该 Controller 应创建一个新副本,该副本将安排在其他节点上。

关于docker - 节点关闭后,Pods不在另一个节点上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32257767/

相关文章:

linux - 你如何从 windows 主机获取文件到 linux docker 容器?

amazon-web-services - Kubernetes 的 Traefik 入口 Controller (AWS EKS)

networking - 如何从microk8s容器内部访问在主机操作系统上运行的Web服务器?

redis - 所有使用 redis 缓存的 pod 是否都应该被限制在与 rediscache 本身相同的节点上?

go - 代码生成器未下载到 vendor 文件夹

docker - Laravel 5应用程序无法连接docker容器中的MariaDB引擎

mysql - 多个 WordPress 站点和一个使用 Docker 的共享数据库

amazon-web-services - 仅运行一次 ECS 服务任务

docker - boot2docker 在 Windows 7 中启动

azure - Azure 上的 Aks Creation 需要很长时间才能收到以下错误消息