APIServer: APIServer负责对外提供RESTful的kubernetes API的服务,它是系统管理指令的统一接口,任何对资源的增删该查都要交给APIServer处理后再交给etcd,如图,kubectl(kubernetes提供的客户端工具,该工具内部是对kubernetes API的调用)是直接和APIServer交互的。
schedule: schedule负责调度Pod到合适的Node上,如果把scheduler看成一个黑匣子,那么它的输入是pod和由多个Node组成的列表,输出是Pod和一个Node的绑定。 kubernetes目前提供了调度算法,同样也保留了接口。用户根据自己的需求定义自己的调度算法。
controller manager: 如果APIServer做的是前台的工作的话,那么controller manager就是负责后台的。每一个资源都对应一个控制器。而controller manager就是负责管理这些控制器的,比如我们通过APIServer创建了一个Pod,当这个Pod创建成功后,APIServer的任务就算完成了。
etcd:etcd是一个高可用的键值存储系统,kubernetes使用它来存储各个资源的状态,从而实现了Restful的API。
Node节点:
每个Node节点主要由三个模板组成:kublet, kube-proxy,Docker
kube-proxy: 该模块实现了kubernetes中的服务发现和反向代理功能。kube-proxy支持TCP和UDP连接转发,默认基Round Robin算法将客户端流量转发到与service对应的一组后端pod。服务发现方面,kube-proxy使用etcd的watch机制监控集群中service和endpoint对象数据的动态变化,并且维护一个service到endpoint的映射关系,从而保证了后端pod的IP变化不会对访问者造成影响,另外,kube-proxy还支持session affinity。
kublet:kublet是Master在每个Node节点上面的agent,是Node节点上面最重要的模块,它负责维护和管理该Node上的所有容器,但是如果容器不是通过kubernetes创建的,它并不会管理。本质上,它负责使Pod的运行状态与期望的状态一致。
Docker:进行容器生成、配置和使用,作为pod节点的重要支撑。
Kubernetes单节点安装及配置前面划分的ha 高可用双master部署 K8S ,先以单master实例进行演示,后续增加master,但是不冲突,后续增加LB 节点、和master高可用既可以。
ip 操作系统 角色 安装软件 主机名192.168.0.10 centos7.6_x64 master01 docker,etcd 8bettest518
192.168.0.7 centos7.6_x64 node01 docker 8bettest520
192.168.0.8 centos7.6_x64 node02 docker 8bettest521
本教程以安装Centos7 mini版本为系统镜像安装
初始化环境 设置关闭防火墙及SELINUX systemctl stop firewalld && systemctl disable firewalld setenforce 0 yum install yum-utils -y vi /etc/selinux/config SELINUX=disabled 关闭Swap swapoff -a && sysctl -w vm.swappiness=0 vi /etc/fstab UUID=7bff6243-324c-4587-b550-55dc34018ebf swap swap defaults 0 0 设置Docker所需参数(未做) cat << EOF | tee /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 EOF sysctl -p /etc/sysctl.d/k8s.conf 在node节点上安装 Docker 1. 安装好docker yum-config-manager --add-repo yum list docker-ce --showduplicates | soft -r yum install docker-ce -y systemctl start docker && systemctl enable docker 2. 配置docker加速器 curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s && systemctl restart docker 创建安装目录 mkdir /data/soft/etcd/{bin,cfg,ssl} -p mkdir /data/soft/kubernetes/{bin,cfg,ssl} -p 安装及配置CFSSL 使用cfssl来生成自签证书,先下载cfssl工具: wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64 wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64 chmod +x cfssl_linux-amd64 cfssljson_linux-amd64 cfssl-certinfo_linux-amd64 mv cfssl_linux-amd64 /usr/local/bin/cfssl mv cfssljson_linux-amd64 /usr/local/bin/cfssljson mv cfssl-certinfo_linux-amd64 /usr/bin/cfssl-certinfo 部署ETCD 创建etcd集群认证证书创建 ETCD 证书
创建以下三个文件:
首先创建一个etcd-cert证书存储目录目录,命令如下
mkdir /data/www/etcd-cert cd /data/www/etcd-cert