【问题标题】:Pods doesn't run on another node after its node downPod 在其节点关闭后不会在另一个节点上运行
【发布时间】:2015-11-22 07:57:00
【问题描述】:

我创建了一个在 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

【问题讨论】:

    标签: docker kubernetes


    【解决方案1】:

    如果 Pod 直接创建为 Pod,则它们不会重新调度到不同的节点。一个 pod 只能在单个节点上运行。

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

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

    【讨论】:

      猜你喜欢
      • 2021-04-25
      • 1970-01-01
      • 1970-01-01
      • 2018-07-21
      • 2020-04-10
      • 2020-05-19
      • 2021-11-30
      • 1970-01-01
      • 2015-09-07
      相关资源
      最近更新 更多