结构图
kubernetes cluster
- 控制平面(Control Plane)------老板
- kube-API-server
- 相当于神经中枢
- 对外暴露API,用户可以通过这个API-server与k8s的cluster交互
- kube-scheduler
- 收到创建容器的命令,就把容器分发给不同的node
- etcd
- 存储数据
- 记录整个cluster的信息和状态
- kube-controller-manager
- 节点控制器(Node Controller):负责在节点出现故障时进行通知和响应
- 任务控制器(Job Controller):监测代表一次性任务的 Job 对象,然后创建 Pods 来运行这些任务直至完成
- 端点控制器(Endpoints Controller):填充端点(Endpoints)对象(即加入 Service 与 Pod)
- 服务帐户和令牌控制器(Service Account & Token Controllers):为新的命名空间创建默认帐户和 API 访问令牌
- cloud-controller-manager
- 允许你将你的集群连接到云提供商的 API 之上, 并将与该云平台交互的组件同与你的集群交互的组件分离开来。
- cloud-controller-manager 仅运行特定于云平台的控制器。 因此如果你在自己的环境中运行 Kubernetes,或者在本地计算机中运行学习环境, 所部署的集群不需要有云控制器管理器。
- 下面的控制器都包含对云平台驱动的依赖:
- 节点控制器(Node Controller):用于在节点终止响应后检查云提供商以确定节点是否已被删除
- 路由控制器(Route Controller):用于在底层云基础架构中设置路由
- 服务控制器(Service Controller):用于创建、更新和删除云提供商负载均衡器
- work node----------员工
- work node
- kubelet
- kubelet 会在集群中每个节点(node)上运行。 它保证容器(containers)都运行在 Pod 中。
- kubelet 接收一组通过各类机制提供给它的 PodSpecs, 确保这些 PodSpecs 中描述的容器处于运行状态且健康。 kubelet 不会管理不是由 Kubernetes 创建的容器。
- kube-proxy
- kube-proxy 是集群中每个节点(node)上所运行的网络代理, 实现 Kubernetes 服务(Service) 概念的一部分。
- kube-proxy 维护节点上的一些网络规则, 这些网络规则会允许从集群内部或外部的网络会话与 Pod 进行网络通信。
- 如果操作系统提供了可用的数据包过滤层,则 kube-proxy 会通过它来实现网络规则。 否则,kube-proxy 仅做流量转发。
- pod
- pod
- pod
- contain-容器--一般一个pod放一个contain,也可以是多个应用程序
POD
每个pod有一个ip,pod内的容器共享ip
在Kubernetes集群中,Pod是所有业务类型的基础,也是K8S管理的最小单位级,它是一个或多个容器的组合。这些容器共享存储、网络和命名空间,以及如何运行的规范。在Pod中,所有容器都被同一安排和调度,并运行在共享的上下文中。对于具体应用而言,Pod是它们的逻辑主机,Pod包含业务相关的多个应用容器。
总结
- Pod是kubernetes中最小的调度单位(原子单元),Kubernetes直接管理Pod而不是容器。
- 同一个Pod中的容器总是会被自动安排到集群中的同一节点(物理机或虚拟机)上,并且一起调度。
- Pod可以理解为运行特定应用的“逻辑主机”,这些容器共享存储、网络和配置声明(如资源限制)。
- 每个 Pod 有唯一的 IP 地址。 IP地址分配给Pod,在同一个 Pod 内,所有容器共享一个 IP 地址和端口空间,Pod 内的容器可以使用
localhost
互相通信。(因此pod内应用的端口不需要考虑是否与其他pod的端口内应用发生冲突)
关于POD的使用在下面k3s那里
Deployment(部署)与ReplicaSet(副本集)
Service(服务)
ServiceType 取值
- ClusterIP(默认):将服务公开在集群内部。kubernetes会给服务分配一个集群内部的 IP,集群内的所有主机都可以通过这个Cluster-IP访问服务(负载均衡)。集群内部的Pod可以通过service名称访问服务。
- NodePort:通过每个节点的主机IP 和静态端口(NodePort)暴露服务。 集群的外部主机可以使用节点IP和NodePort访问服务。
- ExternalName:将集群外部的网络引入集群内部。
- LoadBalancer:使用云提供商的负载均衡器向外部暴露服务。
关于service的使用在下面k3s那里
控制平面(Control Plane)
这个东西是k8s的大脑,他控制着k8s里运行的各种node。
同时也叫做---master node()--这个在Azure中是被微软托管的,无法查看到,同时是不收费的
一个kubernetes cluster,至少一个master node,一个或多个work node,他们都是node节点---虚拟机
CNI
CNI是一个Pod网络集成标准,简化K8s和不同Pod网络实现技术的集成