Kubernetes 中的基本概念

2023年 1月 4日 27.2k 0

1. 集群

1.1 Master

Master 负责管理和维护 Kubernetes 集群信息,并向 Node 下放任务和接收反馈信息。Master 上运行的组件有 kube-apiserver、kube-scheduler、kube-controller-manager、cloud-controller-manager 等。

1.2 Node

Node 负责集群负载,可以是物理机,也可以是虚拟机。为了管理 Pod ,每个 Node 都会运行 Container Runtime、Kubelet、Kube-proxy 。

2. 基本组件

2.1 kube-apiserver

kube-apiserver 为 Kubernetes 集群提供了 RESTful API,是操作集群的唯一入口。

2.2 kube-scheduler

kube-scheduler 负责分配调度 Pod 到集群内的节点上。它监听 kube-apiserver,查询还未分配 Node 的 Pod,然后根据调度策略为这些 Pod 分配节点。

2.3 kube-controller-manager

kube-controller-manager 通过 apiserver 监控整个集群的状态,并确保集群处于预期的工作状态。

2.4 cloud-controller-manager

cloud-controller-manager 主要负责与底层云提供商的平台交互。

2.5 kubelet

kubelet 运行在 Node 节点,在 apiserver 上注册节点信息,定期向 Master 上报节点的资源使用情况。此外,kubelet 还接受并执行 Master 节点发送的指令,管理 Pod 和 Pod 中的容器。

2.6 kube-proxy

kube-proxy 运行在 Node 节点上,负责 service 的通信和负载均衡。

2.7 kube-dns

kube-dns 为 Kubernetes 提供命名服务。

2.8 kubeadm

kubeadm 是一个构建 Kubernetes 集群的工具。它提供的 kubeadm initkubeadm join 两个命令是快速构建 Kubernetes 集群的最佳实践。kubeadm 只关心集群中最基础的组件,不涉及 dashboard、CNI 等插件。

2.9 federation

Kubernetes 的设计定位是单一集群在同一个地域内。同一个地区的网络性能才能满足 Kubernetes 的调度和计算存储连接要求。federation 提供了跨集群同步资源、跨集群服务发现的功能,可以用于管理多集群。

2.10 kubectl

kubectl 是 Kubernetes 的命令行工具。

3. 基础对象

3.1 Pod

Pod 是 Kubernetes 中最基本的调度单元。Pod 可以运行多个 Docker 容器,容器间共享 PID、IPC、Network 和 UTS namespace。Pod 在创建时会被分配一个 IP 地址,Pod 间的容器可以相互通信。

3.2 Service

Service 用于将一组 Pod 暴露为一个服务。由于 Pod 的 IP 会随着 Pod 的重启而变化,不能直接对外提供服务。Service 为一组 Pod 提供了一个统一的访问入口。Kube-proxy 完成多个 Pod 上的负载均衡。

3.3 Label

Label 标签以 key/value 的方式附加到对象上,用于识别 Kubernetes 对象。Label Selector 可以用于选择一组相同 Label 的对象。

3.4 Replication Controller

Replication Controller 用于保证一定数量的 Pod 在集群中正常运行。Replication Controller 会持续监听 Pod 的运行状态,当 Pod 发生故障数量减少时,重新运行新的 Pod 副本。

3.5 Replica Set

Replica Set 是 Replication Controller 的升级版本。Replication Controller 仅支持 equality-based 的选择器,而 Replica Set 支持 labels user guide 中描述的 set-based 选择器。

3.6 Deployment

Deployment 是 Kubernetes 中用于处理无状态服务的资源,提供了更新 Pod 和 Replica Set 的方法,集成了上线部署、滚动升级、创建副本、暂停上线任务,恢复上线任务、回滚到以前某一版本等功能。

3.7 Job

Job 用于批量处理短暂的一次性任务,并保证指定数量的 Pod 成功结束。

3.8 DaemonSet

DaemonSet 可以保证集群中所有的或者部分的节点都能够运行同一份 Pod 副本,每当有新的节点被加入到集群时,Pod 就会在目标的节点上启动。

3.9 StatefulSet

StatefulSet 是用于支持有状态服务的资源,所管理的 Pod 拥有固定的Pod 名称,启停顺序。

4. 参考

  • https://kubernetes.io/zh/docs/
  • https://feisky.gitbooks.io/kubernetes/

相关文章

KubeSphere 部署向量数据库 Milvus 实战指南
探索 Kubernetes 持久化存储之 Longhorn 初窥门径
征服 Docker 镜像访问限制!KubeSphere v3.4.1 成功部署全攻略
那些年在 Terraform 上吃到的糖和踩过的坑
无需 Kubernetes 测试 Kubernetes 网络实现
Kubernetes v1.31 中的移除和主要变更

发布评论