kubernetes 使用1.31.1 版本搭建集群核心组件,选择flannel 网络插件为整体集群的运行提供网络通信功能。
flannel 网络插件
kube-flannel kube-flannel-ds-9fgml 1/1 Running 1 (18m ago) 2d21h
kube-flannel kube-flannel-ds-ghwbq 1/1 Running 1 (18m ago) 2d21h
kube-flannel kube-flannel-ds-mkm4r 1/1 Running 1 (18m ago) 2d21h
K8S核心组件:
1、coredns提供集群内的DNS解析
kube-system coredns-fcd6c9c4-cvcvt 1/1 Running 1 (18m ago) 2d21h
kube-system coredns-fcd6c9c4-m9kxk 1/1 Running 1 (18m ago) 2d21h
2、ectd (基于键值对的数据库) 提供集群数据的存储(1) pod的名称数量(2)网络参数的分配(3)集群的状态
kube-system etcd-control 1/1 Running 1 (18m ago) 2d21h
3、api-server:Kubernetes的api响应服务器,用户向K8S平台发出的所有指令,都是先给到api-server,由APIserver 根据用户的请求以调用不同的组件
kube-system kube-apiserver-control 1/1 Running 1 (18m ago) 2d21h
4、controller-manager:完成pod的启动和状态维护,比如pod停止了,由controller-manager 完成pod的重启
kube-system kube-controller-manager-control 1/1 Running 1 (18m ago) 2d21h
5、kube-proxy:K8s的代理服务
kube-system kube-proxy-54j4f 1/1 Running 1 (18m ago) 2d21h
kube-system kube-proxy-c8cdj 1/1 Running 1 (18m ago) 2d21h
kube-system kube-proxy-v7td8 1/1 Running 1 (18m ago) 2d21h
6、scheduler-control: 调度管理器,决定K8S中运行pod的节点,指定pod的运行节点。
kube-system kube-scheduler-control 1/1 Running 1 (18m ago) 2d21h
pod
pod 是K8S平台上最小的管理单位,pod是K8S平台上运行的进程。
什么是容器?应用容器化的本质是什么?
容器是一个隔离的沙盒环境。容器实现隔离环境所使用的技术是namespace (名称空间)cgroup (控制组)。沙盒环境中包括了运行某一个应用所需要的基本依赖关系和运行的环境(配置文件、日志输出、启动程序等)。一个应用的镜像包括了应用运行所需要的所有的依赖管理和运行环境的支持。应用容器化的本质分为两步:1.将应用运行需要的所有文件打包,制作镜像2. 将镜像中的程序启动(运行起来),程序运行起来之后,就是进程了,换一句叫做运行容器,或者跑一个容器。
总结一下: 容器实际就是在操作系统上使用软件技术隔离一个环境,然后运行程序的过程。所以在容器宿主机上,在容器内部只能看到容器内部启动的进程,举个例子:容器中通常有一个pid为1 的进程,而这个进程不是容器宿主机中pid为1 的进程,容器宿主机中可以看到容器启动的进程,但是并不知道容器具体使用哪个程序启动对应的进程。
pod的重点类似于容器,也是需要在一个相对隔离的环境下启动进程,并为隔离环境中的进程提供需要的网络、存储等资源的访问。但是pod并不是容器,pod提供容器所需要的隔离环境,并为隔离环境内的容器提供必要的网络和存储,所以某种程度上pod 是用来管理容器的上一级概念。