1.什么是K8s
Kubernetes是一个开源容器编排引擎,用于自动化容器化应用程序的部署、扩展和管理。
2.虚拟容器优点
物理机无法定义资源边界以及隔离资源,难以合理分配资源。
虚拟机技术使应用得以隔离,隔离层级最高
容器化技术降低了隔离层级,共享OS,但每个容器有自己的文件系统、CPU、内存、进程空间。部署容易快速。
3.什么是容器
容器其实是一种沙盒技术。顾名思义,沙盒就是能够像一个集装箱一样,把你的应用“装”起来的技术。这样,应用与应用之间,就因为有了边界而不至于相互干扰
可以说,容器封装了应用软件本身以及软件运行起来需要的依赖。
4.k8s组织架构
k8s集群由一组节点组成,节点分为Master和Worker,两种节点上面部署的组件是不同的。
5. 组件说明
(1)kube-apiserver
- 提供 Kubernetes API,Kubernetes控制平台的前端。
kubectl / kubernetes dashboard / kuboard 等Kubernetes管理工具就是通过 kubernetes API 实现对 Kubernetes 集群的管理。
- 提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制;
- 提供 Kubernetes API,Kubernetes控制平台的前端。
kubectl / kubernetes dashboard / kuboard 等Kubernetes管理工具就是通过 kubernetes API 实现对 Kubernetes 集群的管理。
- 提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制;
(2)Etcd
- Kubernetes集群的所有配置信息都存储在 etcd 中,保存了整个集群的状态
(3)kube-scheduler
- 监控所有新创建尚未分配到节点上的 Pod,并且自动选择为 Pod 选择一个合适的节点去运行
(4)kube-controller-manager
运行了所有的控制器
节点控制器: 负责监听节点停机的事件并作出对应响应
副本控制器: 负责为集群中每一个 副本控制器对象(Replication Controller Object)维护期望的 Pod 副本数
端点(Endpoints)控制器:负责为端点对象(Endpoints Object,连接 Service 和 Pod)赋值
Service Account & Token控制器: 负责为新的名称空间创建 default Service Account 以及 API Access Token
5.1.2 Worker组件
(1)Container Runtime
- 容器引擎,如Dokcer,还有其他的如containerd、cri-o、rktlet等
(2)kubelet
- 通过Restapi与apiserver交互
- 直接和Container Runtime交互,解析apiserver的指令,转化成Container Runtime能识别的命令
- 保证容器(containers)都 运行在 Pod,确保pod处于运行状态且健康
- 上报worker节点状态
(3)kube-proxy
- 在节点上维护网络规则,是实现Pod、集群与集群外网络的重要组件
(4)Pod
Pod 是可以在 Kubernetes 中创建和管理的、最小的可部署的计算单元。
Pod 容器组 是一个k8s中一个抽象的概念,用于存放一组 container(可包含一个或多个 container 容器,即图上正方体),以及这些 container (容器)的一些共享资源。具体的说:Pod 里的所有容器,共享的是同一个 Network Namespace,并且可以声明共享同一个 Volume。。