相关疑难解决方法(0)

如何跨节点分发部署?

我有一个看起来像这样的Kubernetes部署(用'....'替换名称和其他东西):

# Please edit the object below. Lines beginning with a '#' will be ignored,
# and an empty file will abort the edit. If an error occurs while saving this file will be
# reopened with the relevant failures.
#
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  annotations:
    deployment.kubernetes.io/revision: "3"
    kubernetes.io/change-cause: kubectl replace deployment ....
      -f - --record
  creationTimestamp: 2016-08-20T03:46:28Z
  generation: 8
  labels:
    app: ....
  name: ....
  namespace: default
  resourceVersion: "369219"
  selfLink: /apis/extensions/v1beta1/namespaces/default/deployments/....
  uid: aceb2a9e-6688-11e6-b5fc-42010af000c1
spec:
  replicas: 2
  selector:
    matchLabels:
      app: …
Run Code Online (Sandbox Code Playgroud)

google-cloud-platform kubernetes

22
推荐指数
4
解决办法
1万
查看次数

Kubernetes Pod 在具有首选模式的节点之间分布

我正在努力将我的应用程序迁移到 Kubernetes。我正在使用 EKS。

我想将我的 Pod 分布到不同的节点,以避免出现单点故障。我读到了pod-affinityandanti-affinityrequiredandpreferred模式。

这个答案提供了一个非常好的方法来实现这一点。

但我的疑问是,假设我有 3 个节点,其中 2 个节点已满(资源方面)。如果我使用requiredDuringSchedulingIgnoredDuringExecution,k8s 将启动新节点并将 Pod 分发到每个节点。如果我使用preferredDuringSchedulingIgnoredDuringExecution,它将检查首选节点,并且不会找到不同的节点,只会将所有 Pod 部署在第三个节点上。在这种情况下,它将再次成为单点故障。

我该如何解决这种情况?

我能想到的一种方法是拥有一个超额配置的集群,这样总会有一些额外的节点。

第二种方法,我不知道如何做到这一点,但我认为应该有一种同时使用requiredDuringSchedulingIgnoredDuringExecution和 的方法preferredDuringSchedulingIgnoredDuringExecution

谁能帮我这个?我错过了什么吗?在这种情况下人们如何工作?

我是 Kubernetes 的新手,所以如果我错了或者遗漏了什么,请随时纠正我。

提前致谢

笔记:

我在同一节点上运行几个类似的 pod 没有问题,只是不希望所有 pod 都在同一节点上运行,因为只有一个节点可供部署。

kubernetes kubernetes-pod amazon-eks

5
推荐指数
1
解决办法
1476
查看次数