[英]running pods and containers in Kubernetes
我对 Kubernates 还很陌生,到目前为止我能理解的内容,
首先,到目前为止我是否正确?
其次,通过关于kube-scheduler 的文档说,
控制平面组件,监视没有分配节点的新创建的 pod,并选择一个节点让它们运行。
和文档还说豆荚是,
最小最简单的 Kubernetes 对象。 Pod 代表集群上运行的一组容器。
我的问题是,相当混乱是因为我们已经在不同的节点上运行了容器,为什么我们需要额外的节点来运行 pod?
集群是节点的集合
每个节点可以有一组正在运行的容器
你是对的。
- 一组紧密耦合的容器本身可以组合在一起形成一个 pod(尽管容器在其中运行)。
属于一个 Pod 的所有容器都运行在同一个节点上。
我的问题是,相当混乱是因为我们已经在不同的节点上运行了容器,为什么我们需要额外的节点来运行 pod?
实际运行的不是 pod。 在您的节点上实际运行的唯一东西是容器。 Pod 只是容器的逻辑分组,是 kubernetes 中创建容器的基本单元。 (Docker 容器的标志是一条鲸鱼,如果要并行记住这一点,则将一群鲸鱼称为 pod )。 因此,如果属于 pod 的容器正在运行,则 pod 被称为正在运行。
在以下 pod 规范中, nginx-container
和debian-container
容器属于名为two-containers
的 pod。 当你创建这个 pod 对象时, kube-scheduler
会选择一个节点来运行这个 pod(即运行两个容器),并为这个 pod 分配一个节点。 然后在该节点上运行的kubelet
收到通知并启动该节点上的两个容器。 由于这两个容器属于同一个 pod,它们运行在同一个网络命名空间中。
apiVersion: v1
kind: Pod
metadata:
name: two-containers
spec:
restartPolicy: Never
volumes:
- name: shared-data
emptyDir: {}
containers:
- name: nginx-container
image: nginx
volumeMounts:
- name: shared-data
mountPath: /usr/share/nginx/html
- name: debian-container
image: debian
volumeMounts:
- name: shared-data
mountPath: /pod-data
command: ["/bin/sh"]
args: ["-c", "echo Hello from the debian container > /pod-data/index.html"]
数字 1 和 3 是正确的。 对于数字 2,我会说“每个节点都可以设置 Pod,每个 Pod 可以有 1 个或 1 个以上的容器”
对于您的最后一个问题,假设您创建了一个部署,其中有 3 个 pod,其中 2 个部署到节点 A,并且其中的资源被其中 2 个消耗(没有内存或 cpu),但第 3 个 pod 将处于挂起状态,只要它们不是运行该 Pod 的新节点。
他们是水平 Pod 自动伸缩和集群自动伸缩的概念https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/ & https://github.com/kubernetes/autoscaler/ tree/master/cluster-autoscaler这些将进一步清除您的困惑
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.