- Kubernetes Map
- Cluster Architecture
- Master
- Etcd
- Node
- 添加方式
- 节点上的
kubelet
向控制面执行自注册; - 你(或者别的什么人)手动添加一个 Node 对象
- 要求
- 节点名称唯一
- 节点上的
- 组件
- Kubelet
- Runtime
- rkt
- Docker
- kube-proxy
- 状态
- 地址
- HostName
- ExternalIP
- InternalIP
- 状况(conditions)
- Ready
- DiskPressure
- MemoryPressure
- PIDPressure
- NetworUnavailable
- 容量与可分配
- CPU
- capacity
- allocatable
- 内存
- capacity
- allocatable
- Pod个上限
- CPU
- 信息(Info)
- Kubernetes版本
- kubelet 版本
- kube-proxy版本
- 心跳
- 节点控制器
- 作用
- 节点注册时为它分配一个 CIDR 区段(如果启用了 CIDR 分配)
- 保持节点控制器内的节点列表与云服务商所提供的可用机器列表同步
- 监控节点的健康状况
- 在节点不可达的情况下,在 Node 的
.status
中更新Ready
状况。 在这种情况下,节点控制器将 NodeReady 状况更新为Unknown
- 如果节点仍然无法访问:对于不可达节点上的所有 Pod 触发 API 发起的逐出操作。 默认情况下,节点控制器在将节点标记为
Unknown
后等待 5 分钟提交第一个驱逐请求。
- 在节点不可达的情况下,在 Node 的
- 配置
- 默认情况下,节点控制器每 5 秒检查一次节点状态,可以使用
kube-controller-manager
组件上的--node-monitor-period
参数来配置周期。 - 逐出速率限制
- 节点控制器把逐出速率限制在每秒
--node-eviction-rate
个(默认为 0.1)。 这表示它每 10 秒钟内至多从一个节点驱逐 Pod - 如果不健康节点的比例超过
--unhealthy-zone-threshold
(默认为 0.55), 驱逐速率将会降低 - 如果集群较小(意即小于等于
--large-cluster-size-threshold
个节点 - 默认为 50), 驱逐操作将会停止。 - 否则驱逐速率将降为每秒
--secondary-node-eviction-rate
个(默认为 0.01)
- 节点控制器把逐出速率限制在每秒
- 默认情况下,节点控制器每 5 秒检查一次节点状态,可以使用
- 作用
- 资源容量跟踪
- 节点拓扑
- 节点体面关闭
- 基于 Pod 优先级的节点体面关闭
- 节点非体面关闭
- 交换内存管理
- 地址
- 添加方式
- 节点与控制面之间的通信
- 控制面到节点
- 从API服务器到集群中每一个节点后三个运行的kubelet进程
- 从API服务器通过它的代理功能链接到任何节点、POD或者服务
- 节点到控制面
- API 服务器到 kubelet
- 作用
- 获取 Pod 日志
- 挂接(通过Kubectl)到运行中的Pod
- 提供kubelet的端口转发功能
- 作用
- API 服务器到节点、Pod 和服务
- SSH 隧道(废弃)
- Konnectivity 服务(SSH 隧道的替代方案)
- 控制面到节点
- CRI
- GC
- Cgroup
- Master
- 容器
- 镜像
- 镜像拉取策略
- IfNotPresent(default)
- Always
- Never
- 默认镜像拉取策略
- 如果你省略了
imagePullPolicy
字段,并且你为容器镜像指定了摘要, 那么imagePullPolicy
会自动设置为IfNotPresent
。 - 如果你省略了
imagePullPolicy
字段,并且容器镜像的标签是:latest
,imagePullPolicy
会自动设置为Always
。 - 如果你省略了
imagePullPolicy
字段,并且没有指定容器镜像的标签,imagePullPolicy
会自动设置为Always
。 - 如果你省略了
imagePullPolicy
字段,并且为容器镜像指定了非:latest
的标签,imagePullPolicy
就会自动设置为IfNotPresent
。
- 如果你省略了
- 镜像拉取策略
- 容器环境
- 容器运行时类(Runtime Class)
- 容器生命周期回调
- 镜像
- Workloads
- Pod
- 生命周期
- Pending:Pod 已被 Kubernetes 系统接受,但有一个或者多个容器尚未创建亦未运行。此阶段包括等待 Pod 被调度的时间和通过网络下载镜像的时间。
- Running:Pod 已经绑定到了某个节点,Pod 中所有的容器都已被创建。至少有一个容器仍在运行,或者正处于启动或重启状态。
- Succeeded:Pod 中的所有容器都已成功终止,并且不会再重启。
- Failed:Pod 中的所有容器都已终止,并且至少有一个容器是因为失败终止。也就是说,容器以非 0 状态退出或者被系统终止。
- Unknown:因为某些原因无法取得 Pod 的状态。这种情况通常是因为与 Pod 所在主机通信失败。
- 容器状态:
Waiting
Running
Terminated
- 容器重启策略(restartPolicy)
- Always(default)
- OnFailure
- Never
- Pod 状况
- PodScheduled
- PodHasNetwork
- ContainersReady
- Initialized
- Ready
- 探测类型
livenessProbe
readinessProbe
startupProbe
- Init 容器
- 干扰(Disruptions)
- 临时容器
- Pod QoS 类
- 用户命名空间
- Downward API
- 生命周期
- Controllers
- Deployments
- ReplicaSet
- StatefulSet(20230915更新)
- 价值:
- 稳定的、唯一的网络标识符。
- 稳定的、持久的存储。
- 有序的、优雅的部署和扩缩。
- 有序的、自动的滚动更新。
- 限制:
- PersistentVolume Provisioner
- 删除或者扩缩 StatefulSet 不会删除它关联的存储卷
- StatefulSet 当前需要无头服务来负责 Pod 的网络标识。
- 当删除一个 StatefulSet 时,该 StatefulSet 不提供任何终止 Pod 的保证。
- 在默认 Pod 管理策略(OrderedReady) 时使用滚动更新, 可能进入需要人工干预才能修复的损坏状态。
- 组件:
- 最短就绪秒数(可选,
.spec.minReadySeconds
):指定新创建的 Pod 应该在没有任何容器崩溃的情况下运行并准备就绪,才能被认为是可用的。 - Pod 管理策略(可选,
.spec.podManagementPolicy
):指定控制器如何管理 Pod。- OrderedReady,表示控制器应该按照它们在 StatefulSet 中的顺序创建和删除 Pod。
- Parallel,表示控制器可以并行创建和删除 Pod。
- 更新策略(可选,
.spec.updateStrategy
):指定控制器如何更新 Pod。- OnDelete,表示手动更新 Pod。
- RollingUpdate,表示控制器应该自动更新 Pod。
- 服务名称(可选,
.spec.serviceName
):指定用于访问 Pod 的服务的名称。 - 卷声明(可选,
.spec.volumeClaimTemplates
):指定 StatefulSet 管理的卷声明。 - Pod 模板(
.spec.template
):指定 StatefulSet 管理的 Pod 的模板。 - Pod 模板标签(
.spec.template.metadata.labels
):指定 StatefulSet 管理的 Pod 的标签。 - 起始序号(
.spec.podManagementPolicy
):指定 StatefulSet 管理的 Pod 的起始序号。 - 最大不可用 Pod 数(
.spec.updateStrategy.rollingUpdate.maxUnavailable
):指定在滚动更新期间可以不可用的 Pod 的最大数量
- 最短就绪秒数(可选,
- 价值:
- DaemonSet
- Job
- CronJob
- Replication Controller(old)
- Pod
- Services, Load Balancing, and Networking
- Service
- Ingress
- Ingress 控制器
- EndpointSlice
- 网络策略
- Service 与 Pod 的DNS
- IPv4/IPv6双协议栈
- 拓扑感知路由
- Service ClusterIP 分配
- 服务内部流量策略
- Storage
- 卷
- 持久卷
- 投射卷
- 临时卷
- 存储类
- 动态卷制备
- 卷快照
- 卷快照类
- CSI 卷克隆
- 存储容量
- 特定于节点的卷数限制
- 卷健康监测
- Configuration
- Security
- Policies
- Scheduling,Preemption and Eviction
- Cluster Architecture
文档信息
- 本文作者:王翊仰
- 本文链接:https://www.wangyiyang.cc/wiki/2023-08-27-kubernetes-core/
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)