什么是组织窗格中Kubernetes集群通常的方式?
我有一个詹金斯构建服务器,多克尔注册表,Git仓库,而我想在谷歌集装箱引擎运行其他的开发工具。我创建为他们每个人一个集群?或者,可以在多个荚在每个节点上安排?
所以我的问题是:你会创建一个包含所有这些服务,或多个集群一个集群?同样的问题也适用于生产,QA等enviroments。难道我为每个环境一个集群还是我让他们在同一个集群中?
要回答你的第一个问题,多荚可以在每个节点上进行调度。
一个关于谷歌集装箱引擎/ Kubernetes最好的部分是,它是真正灵活的,所以你可以在最适合你的方式组织你的服务。为了您的具体使用情况下,我认为,一个单一集群将使意义,因为所有你想要运行的应用程序密切相关。你要考虑选择合适的尺寸为群集,以适应您的整个工作负载(虚拟机的数量和每个VM的大小)位。
你可以创建一个单一集群为您的QA和PROD负载试验,或者你可以在群集分割。直到Kubernetes有QoS的更好的支持(调度豆荚),它可能更有意义,以保持QA环境不同的(也可能是大小更谦虚)。
通常情况下,吊舱由不同节点提供集群上取决于吊舱需要,也正在运行的集群可以不超载节点的资源主办。此外,在集群中的单个节点可以承载多个吊舱。
具体到这个问题,谈所有的开发工具这里所有的豆荚应在单个节点上托管只是因为个个都互相通信时。当问题出现了不同的环境中,明智的做法是收留他们不同的节点,但同一集群上。
Kubernetes为我们提供了选择上,我们希望运行我们的豆荚节点的额外优势。该NodeSelector概念可以在这种情况下都得心应手。
kubectl get nodes
kubectl get pods
标签,你在你的集群有任何节点:
kubectl label nodes gke-cluster1-default-pool-4db7fabf-zzx9 disktype=ccd
kubectl get nodes --show-labels
现在创建一个文件来创建一个吊舱和提nodeSelector在该文件中。
纳米task6pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: pod6
labels:
env: test
spec:
containers:
- name: container6
image: nginx
nodeSelector:
disktype: ccd
nodeSelector在这个文件是相同的标签如前面提到的节点的标签。
kubectl create -f task6pod.yaml
kubectl get pods -o wide
这个命令后,你可以看到新创建的吊舱将有你想要的一个带有标签的节点。