k8s 管理节点和被管理节点都有那些组件,之前如何通信的 k8s 探针有几种类型 k8s 有那些控制器 k8s 如何对外暴露服务的
- Master管决策,Node管干活,所有流量走apiserver,数据存etcd
- liveness杀进程,readiness切流量,startup保慢启动
- 无状态用Deploy,有状态用StatefulSet,节点常驻用DaemonSet,任务用Job
- 内网ClusterIP、测试NodePort、四层LB、七层Ingress生产首选
1.管理节点(Master/Control Plane)和被管理节点(Node)都有哪些组件?它们之间如何通信?
您的总结: Master管决策,Node管干活,所有流量走apiserver,数据存etcd。
详细展开:
| 节点类型 | 核心组件 | 功能 |
|---|---|---|
| 管理节点 (Control Plane) | kube-apiserver | 集群的唯一入口,所有操作(kubectl、其他组件)都通过它。 |
| etcd | 分布式键值存储,保存所有集群数据(状态、配置)。 | |
| kube-scheduler | 调度器,负责将新Pod分配到合适的Node上。 | |
| kube-controller-manager | 控制器管理器,运行各种控制器(如Deployment控制器),维护期望状态。 | |
| 被管理节点 (Node) | kubelet | 节点代理,负责管理Pod和容器,与apiserver通信汇报状态。 |
| kube-proxy | 网络代理,维护网络规则,实现Service的负载均衡。 | |
| 容器运行时 | 实际运行容器的引擎,如Docker、containerd。 |
通信机制:
您的总结“所有流量走apiserver”完全正确。所有组件(包括kubelet、scheduler、controller-manager)都只与kube-apiserver进行通信,不直接相互通信。apiserver是集群的总线和中枢神经。
2. Kubernetes 探针(Probe)有几种类型?
您的总结: liveness杀进程,readiness切流量,startup保慢启动。
详细展开:
| 探针类型 | 作用 | 失败后的行为 | 典型场景 |
|---|---|---|---|
| livenessProbe (存活探针) | 探测容器是否存活。 | 重启容器。 (“杀进程”) | 检测应用死锁、无响应等无法自愈的情况,让K8s替您重启恢复。 |
| readinessProbe (就绪探针) | 探测容器是否准备好接收流量。 | 将Pod IP从Service的Endpoints中移除。 (“切流量”) | 应用启动慢、依赖外部服务(如数据库)未就绪时,暂时不接收流量,避免请求失败。 |
| startupProbe (启动探针) | 探测容器应用是否启动完成。 | 失败则被livenessProbe接管,或重启容器。(“保慢启动”) | 保护启动时间特别长的应用(如Java应用),在启动期间禁用livenessProbe的检查,防止因启动慢而被误杀。 |
3. Kubernetes 有哪些常用的控制器(Controller)?
您的总结: 无状态用Deploy,有状态用StatefulSet,节点常驻用DaemonSet,任务用Job。
详细展开:
| 控制器 | 核心用途 | 典型例子 |
|---|---|---|
| Deployment | 管理无状态应用。支持滚动更新、回滚、扩缩容。 | Nginx、Web应用、微服务。 |
| StatefulSet | 管理有状态应用。提供稳定的网络标识(主机名)、持久化存储。 | MySQL、Elasticsearch、ZooKeeper。 |
| DaemonSet | 确保集群每个节点(或符合条件节点)上运行一个Pod副本。 | 日志收集(Fluentd)、监控代理(Prometheus Node Exporter)、网络插件(Calico)。 |
| Job | 负责运行一次性任务,任务完成后Pod正常退出。 | 数据库迁移、批量数据处理。 |
| CronJob | 基于时间调度的周期性任务。 | 定时备份、定时报表发送。 |
4. Kubernetes 如何对外暴露服务?
您的总结: 内网ClusterIP、测试NodePort、四层LB、七层Ingress生产首选。
详细展开(由内到外):
| Service类型/资源 | 访问范围 | 层级 | 适用场景 |
|---|---|---|---|
| ClusterIP | 仅集群内部访问。 | 四层(TCP/UDP) | 内部微服务互相调用。 |
| NodePort | 集群外部通过 <节点IP>:<端口> 访问。 | 四层(TCP/UDP) | 测试环境或临时暴露服务。生产环境少用(端口管理不便,暴露节点IP)。 |
| LoadBalancer | 利用云厂商的四层负载均衡器暴露服务。 | 四层(TCP/UDP) | 云环境(AWS、阿里云等)生产环境,提供独立公网IP。 |
| Ingress | 通过七层(HTTP/HTTPS)路由规则暴露集群内服务。 | 七层(HTTP/HTTPS) | 生产环境首选。提供基于域名、路径的路由,支持SSL证书、负载均衡、更灵活的流量管理。 |
阅读量:38次,本文由 六度 创作,采用 知识共享署名4.0 国际许可协议进行许可。
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。