使用Kubernetes在不同的机器上运行Docker容器
Kubernetes新手,但希望在不同的机器上快速运行一些Docker容器,例如,节点1(物理机器1)上的容器1、2和3以及节点2(物理机器2)上的容器4、5和6。有人能帮我配置文件和命令,让它启动并运行,所有容器都可以相互通信吗 我发现这个例子很接近我想要的,但是只有一个豆荚。如何使用两个pod(假设我可以在每个pod中添加更多容器)并在一次部署中同时运行两个pod(以便容器位于同一网络中,因此可以相互通信) 我还想运行一个Docker容器,该容器带有绑定挂载和“共享”绑定传播,如何指定它 就我个人而言,我发现Kubernetes文档有点难以使用相互引用的概念层。任何人都可以指向一个干净的教程将是一个帮助。我想学习如何在多台机器上运行容器,然后学习如何通过在pod中添加更多容器、在节点上添加更多pod以及在集群中添加更多节点来自动缩放。然后是不同类型的网络和卷管理。分配的简单方法是使用 这是一个贯穿库伯内特斯的概念 首先将标签添加到节点:使用Kubernetes在不同的机器上运行Docker容器,docker,kubernetes,Docker,Kubernetes,Kubernetes新手,但希望在不同的机器上快速运行一些Docker容器,例如,节点1(物理机器1)上的容器1、2和3以及节点2(物理机器2)上的容器4、5和6。有人能帮我配置文件和命令,让它启动并运行,所有容器都可以相互通信吗 我发现这个例子很接近我想要的,但是只有一个豆荚。如何使用两个pod(假设我可以在每个pod中添加更多容器)并在一次部署中同时运行两个pod(以便容器位于同一网络中,因此可以相互通信) 我还想运行一个Docker容器,该容器带有绑定挂载和“共享”绑定传播,如何指定它 就
kubectl local nodes node-a podwants=somefeatureon-nodea
kubectl local nodes node-b podwants=somefeatureon-nodeb
然后可以在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
由于a将始终位于Kubernetes中,并且Pod
中的容器都将能够彼此访问,Pod
到Pod
的通信是通过将Pod
作为a进行的。注意,服务
还使用标签选择器来查找它的吊舱
kind: Service
apiVersion: v1
metadata:
name: web-svc
spec:
selector:
app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 80
然后,您可以通过环境变量或DNS(如果您必须访问您的集群)在其他pod
WEB_SVC_SERVICE_HOST=x.x.x.x
WEB_SVC_SERVICE_PORT=80
您不会经常定义和安排pod
本身。您可能会使用一个用于描述您的吊舱
,并帮助您调整它们的大小
一旦您完成了简单的案例,接下来的文档将描述哪些允许您定义更复杂的规则集。即使是根据节点上当前调度的吊舱
做出调度决策,这也是一个很好的问题,因为它表明了一些概念上的混乱。在这个问题上,似乎应该用pod这个词来代替container这个词。POD是调度的单位,而不是单个容器。容器可以通过多种方式与其他容器通信(例如通过服务名称),即使它们没有打包在同一个pod中。看起来k8s只支持rshared绑定传播,不支持共享。一些背景:也许把绑定挂载部分拆分成一个单独的问题?这是我在库伯内特斯的文档面前感到困惑和有点不知所措。我的理解是,Pod可以有多个容器,但不能跨节点(物理机器)。首先,我只想配置Pod1(容器1、2和3)在Node1上运行,Pod2(容器4、5和6)在Node2上运行,并使所有这些容器能够相互通信,但我找不到一个简单的示例来说明如何做到这一点。我可以用docker compose在一台机器上轻松地运行这些容器,并且容器之间可以很好地通信。@hanaZ容器1、2、3和4、5、6之间需要什么样的通信?使用http调用每一个?或者其他什么?例如,容器1是所有其他节点都需要注册的管理节点。容器4提供元数据,容器2和5提供存储,容器3和6是访问存储的客户端。存储和客户端从管理容器中获取元数据容器IP地址和端口,然后进行元数据查询。客户端还从管理容器中获取存储地址。