kubernetes组件
一个kubernetes集群主要由控制节点(master)与工作节点(node)组成,每个节点上需要安装不同的组件。master控制节点:负责整个集群的管理。
ApiServer:资源操作的唯一入口,接收用户输入的命令,提供认证、授权、API注册和发现等机制。
Scheduler:负责集群资源调度,按照预定的调度策略将Pod调度到相应的node节点上。
Controller-Manager:负责维护集群的状态,比如程序部署安排、故障检测、自动扩展、滚动更新等。
Etcd:负责存储集群中各种资源对象的信息。
流程:运维人员通过kuberctl命令行下发部署指令,apiserver接收指令调度shchedule去etcd数据库查看节点信息,然后etcd再反馈给schedule,schedule再将空闲node信息反馈给apiserver,apiserver再调用controllmanager,controllmanager去连接node节点内的组件kubelet,kubelet再次调用(pod控制器)去搭建pod内的容器。
node工作节点:集群的数据平面,负责为容器提供运行环境。kubelet:负责维护容器的生命周期,既通过控制docker,创建、更新、销毁容器
Docker:负责节点上容器的各种操作
kubeProxy:在node节点对外接收客户端请求
kubernetes概念
Master:集群控制节点,每个集群需要至少一个master节点负责集群的管控Node:集群工作节点,由master分配容器到这些node节点上,然后node节点上的docker负责容器的运行
Pod:kubernetes的最小控制单元。
容器都是运行在pod中,一个pod中可以有1个或多个容器
Controller:控制器,通过它来实现对pod的管理。
比如启动pod、停止pod、伸缩pod的数量等等
Service:pod对外服务的统一入口,可以维护同一类的多个pod
客户去访问k8s内的服务,由node节点内的kube-proxy组件进行介绍,然后再下发信号给service,由service通过负载均衡分配道某个pod中的docker进行处理。
Label:标签,用于对pod进行分类,同一类pod会拥有相同的标签
NameSpac:命名空间,用来隔离pod的运行环境
kubernetes集群部署方式
kubernetes有很多种部署方式,目前主流的部署方式有kubeadm、minikube、二进制包kubeadm特点:一个用于快速搭建kubernetes集群的工具
minikube特点:一个用于快速搭建单节点的kubernetes工具
二进制包:从官网下载每个组件的二进制包,依次去安装,安装麻烦
赵唯一K8S1.23.5部署(此前1.17版本步骤囊括)及问题记录
环境准备
三台服务器,一台master,两台node,master节点必须是2核cpu
192.168.40.137 master
192.168.40.138 node-1
192.168.40.139 node-2
修改主机名
[root@localhost ~]# hostnamectl set-hostname master
[root@localhost ~]# hostnamectl set-hostname node-1
[root@localhost ~]# hostnamectl set-hostname node-2
所有服务器关闭防火墙和selinux及交换分区swap 所有节点
systemctl disable firewalld
sed -i '/^SELINUX=/c SELINUX=disabled/' /etc/selinux/config
sed -i 's/.*swap.*/#&/' /etc/fstab
添加本地解析 所有节点
[root@master ~]# cat >> /etc/hosts <<eof