gpt4 book ai didi

docker - 使用 Kubernetes 在不同的机器上运行 Docker 容器

转载 作者:行者123 更新时间:2023-12-02 11:45:10 25 4
gpt4 key购买 nike

Kubernetes 新手,但希望在不同机器上快速运行一些 Docker 容器,例如,节点 1(物理机 1)上的容器 1、2 和 3 以及节点 2(物理机 2)上的容器 4、5 和 6。有人可以帮助我使用配置文件和命令来启动并运行它,并且所有容器都可以相互通信吗?

我在 https://gettech1.wordpress.com/2016/10/03/kubernetes-forcefully-run-pod-on-specific-node/ 中找到了示例接近我想要的,但只有一个 pods 。如何使用两个 pod(假设我可以在每个 pod 中添加更多容器)并在一个部署中一起运行两个 pod(以便容器在同一个网络中,因此可以相互通信)?

我还想运行一个带有“共享”绑定(bind)传播的绑定(bind)挂载的 Docker 容器,我该如何指定它?

就个人而言,我发现 Kubernetes 文档在相互引用的概念层中有点难以导航。任何人都可以指出一个干净的教程也会有所帮助。我想学习如何在多台机器上运行容器,然后如何通过在 pod 中添加更多容器、在节点上添加更多 pod 以及在集群中添加更多节点来自动扩展。然后是不同类型的网络和卷管理。

最佳答案

分配 Pods to Nodes 的简单方法是使用label selectors .

Labels and Selectors 是您需要在整个 Kubernetes 中理解的概念。

首先给节点添加标签:

kubectl local nodes node-a podwants=somefeatureon-nodea
kubectl local nodes node-b podwants=somefeatureon-nodeb

一个 nodeSelector然后可以在 Pod 定义中设置 spec .
apiVersion: v1
kind: Pod
metadata:
name: nginx
labels:
app: my-app
spec:
nodeSelector:
podwants: somefeatureon-nodea
container:
- name: nginx
image: nginx:1.8
ports:
- containerPort: 80

作为 Pod 将始终位于 Pod 中的 Kubernetes 和容器中都可以互相访问, PodPod通信是通过暴露 Pod 来完成的作为 Service .注意 Service还使用标签选择器来查找它的 Pods
kind: Service
apiVersion: v1
metadata:
name: web-svc
spec:
selector:
app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 80

那么你可以 discover the available Services 在其他 Pods如果您有 added CoreDNS,则通过环境变量或通过 DNS到您的集群。
 WEB_SVC_SERVICE_HOST=x.x.x.x
WEB_SVC_SERVICE_PORT=80

您不会经常定义和安排 Pods他们自己。您可能会使用 Deployment描述您的 Pods并将帮助您扩展它们。

一旦你掌握了简单的案例,文档就会继续描述 Node affinity。它允许您定义更复杂的规则集。甚至可以根据 Pods 的内容做出调度决策。目前预定在 Node .

关于docker - 使用 Kubernetes 在不同的机器上运行 Docker 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49020582/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com