来源:https://fredal.xin/what-is-kubernetes
kubernetes 架构
Api Server:主要提供资源操作的统一入口,这样就屏蔽了与 Etcd 的直接交互。功能包括安全、注册与发现等。 Scheduler:负责按照一定的调度规则将 Pod 调度到 Node 上。 Controller:资源控制中心,确保资源处于预期的工作状态。
kubelet:主要工作包括管理容器的生命周期、结合 cAdvisor 进行监控、健康检查以及定期上报节点状态。 kube-proxy: 主要利用 service 提供集群内部的服务发现和负载均衡,同时监听 service/endpoints 变化并刷新负载均衡。
从创建 deployment 开始
首先是 kubectl 发起一个创建 deployment 的请求 apiserver 接收到创建 deployment 请求,将相关资源写入 etcd;之后所有组件与 apiserver/etcd 的交互都是类似的 deployment controller list/watch 资源变化并发起创建 replicaSet 请求 replicaSet controller list/watch 资源变化并发起创建 pod 请求 scheduler 检测到未绑定的 pod 资源,通过一系列匹配以及过滤选择合适的 node 进行绑定 kubelet 发现自己 node 上需创建新 pod,负责 pod 的创建及后续生命周期管理 kube-proxy 负责初始化 service 相关的资源,包括服务发现、负载均衡等网络规则
Pod
容器编排
水平扩缩容
更新/回滚
滚动更新
kubernetes 中的网络
node 到 pod 之间可以通 node 的 pod 之间可以通 不同 node 之间的 pod 可以通
微服务—service
pod 的 ip 不是固定的,利用非固定 ip 进行网络调用不现实 服务调用需要对不同 pod 进行负载均衡
app=xxx
的标签,同时为该微服务创建一个标签选择器为app=xxx
的 service。kubernetes 中的服务发现与网络调用
服务间调用
service-name.namespace-name.svc.cluster.local
,指向 clusterIp 地址。所以一般使用过程中,我们直接调用 service-name 即可。服务外访问
- END -
推荐阅读 31天拿下K8s含金量最高的CKA+CKS证书! 终于搞懂了服务器为啥产生大量的TIME_WAIT! Kubernetes 网络方案之炫酷的 Cilium Prometheus+InfluxDB+Grafana 打造高逼格监控平台 民生银行 IT运维故障管理 可视化案例 Kubernetes YAML 学习,提升编写能力 这些 K8S 日常故障处理集锦,运维请收藏~ 猪八戒网 CI/CD 最佳实践之路 从零开始搭建创业公司DevOps技术栈 快、狠、准!系统有效的排查运维类故障 12年资深运维老司机的成长感悟 搭建一套完整的企业级 K8s 集群(v1.20,二进制方式)
点亮,服务器三年不宕机