Monthly Archives: 9 月 2020

Kubernetes 设计解读 – Replica Set

By | 13 9 月, 2020

Replica Set 可以被认为是升级版的 Replication Controller。也就是说,Replica Set 也是用于保证与 label selector 匹配的 Pod 数量维持在期望状态。

Replica Set 和 Replication Controller 的区别是引入了基于子集的 selector 查询条件,而 Replication Controller 仅支持基于值相等的 selector 条件查询。

虽然 Replica…

Kubernetes 设计解读 – Service

By | 13 9 月, 2020

由于重新调度的原因,Pod 在 Kubernetes 上的地址是不固定的,因此需要一个代理来确保需要使用 Pod 的应用不需要知道 Pod 的真实地址。另一个原因是当使用 Replication Controller 创建了多个Pod 的副本时,需要一个代理来为这些 Pod 做负载均衡。

定义 service

Service 主要由一个 IP 地址和一个 label selector 组成。在创建之初,每个 service 被分配了一个独一无二的…

Kubernetes 设计解读 – Replication Controller

By | 13 9 月, 2020

Replication Controller 是 Kubernetes 为了解决 “如何构造完全同质的 Pod 副本” 问题而引入的资源对象。

Replication Controller 决定了一个 Pod 有多少同时运行的副本,并保证这些副本的期望状态与当前状态一致。在设计上依然体现出了“旁路控制”的思想,为每个 Pod “外挂” 了一个控制器进程,从而避免了该组件成为性能瓶颈,即使这个控制器进程失效,容器依然可以正常运行。…

Kubernetes 设计解读 – Pod

By | 13 9 月, 2020

在 Kubernetes 中,能够被创建、调度和管理的最小单元是 Pod。

Pod 可以想象成一个篮子,而容器则是篮子里的鸡蛋,当 Kubernetes 需要调度容器时,它直接把一个篮子(连同篮子里的鸡蛋)从一个宿主机调度到另一个宿主机,而不是一个一个地搬运里面的鸡蛋。篮子与鸡蛋的关系主要表现在:
1. 一个 Pod 里的容器能有多少定义的资源也取决于这个篮子的大小
2. label 是贴在篮子上的
3. IP 分配给篮子而不是容器,篮子里面的所有容器共享这个…

在 Kubernetes 集群中启动一个 Bash

By | 13 9 月, 2020
kubectl run my-shell --rm -i --tty --image ubuntu -- bash

参数说明:

  • --rm : 当脱离容器后对该容器进行删除,也就是说当你退出这个 bash 后,会自动清理对应的 Deployment 和 Pod
  • -i/-tty : 允许 attach 到这个交互的会话中
  • -- : 界定 kubctl run 的参数结束标识
  • bash : 要启动的命令