高可用架构
本文采用kubeadm方式搭建k8s高可用集群,k8s高可用集群主要是对apiserver、etcd、controller-manager、scheduler做的高可用;高可用形式只要是为:
1. apiserver利用haproxy+keepalived做的负载,多apiserver节点同时工作;
2. etcd利用k8s内部提供的解决方案做的高可用,最多容忍一台etcd服务宕机
3. controller-manager、scheduler的高可用机制为如果多个服务同时存在,则会选举一个leader工作,另外两个处于sleep的状态
集群信息规划
服务器的初始化
#此些操作根据实际需求所有服务器都需要操作
修改hosts文件
修改主机名称
关闭NetworkManager服务
修改服务器的IP地址

安装依赖包
设置防火墙并且清空规则
关闭selinux
服务器之间免密配置
Docker依赖安装
安装Docker源
安装Docker
配置daemon配置文件
启动docker并且设置开机自启动
安装kubelet
启动kubelet并且设置为开机启动
Keepalive安装
修改配置文件:
master01和master02和master03配置一样,只是router_id记得变一下
启动keepalived
验证
master01

master02

master03

k8s安装
下载镜像

部署镜像中心
将镜像push到镜像中心
创建kubeadm-config.yaml的配置文件
初始化master
验证安装

创建flannel网络
下载flannel的yaml文件
创建flannel网络
验证安装

master节点添加至集群
master01向其他两个节点颁发证书
其他节点将证书放到指定目录
加入集群
查看布置的节点


高可用架构
本文采用kubeadm方式搭建k8s高可用集群,k8s高可用集群主要是对apiserver、etcd、controller-manager、scheduler做的高可用;高可用形式只要是为:
1. apiserver利用haproxy+keepalived做的负载,多apiserver节点同时工作;
2. etcd利用k8s内部提供的解决方案做的高可用,最多容忍一台etcd服务宕机
3. controller-manager、scheduler的高可用机制为如果多个服务同时存在,则会选举一个leader工作,另外两个处于sleep的状态
集群信息规划
主机名称
系统版本
主机IP
备注
K8s-master01
Centos7.6
192.168.0.101
Master01/registry
K8s-master02
Centos7.6
192.168.0.102
Master02
K8s-master03
Centos7.6
192.168.0.103
Master03
K8s-node01
Centos7.6
192.168.0.111
Node01
K8s-node02
Centos7.6
192.168.0.112
Node02
K8s-node03
Centos7.6
192.168.0.113
Node03
Apiserver-keepalived
Centos7.6
192.168.0.100
HA-apiserver
服务器的初始化
#此些操作根据实际需求所有服务器都需要操作
修改hosts文件
192.168.0.101 k8s-master01
192.168.0.102 k8s-master02
192.168.0.103 k8s-master03
192.168.0.111 k8s-node01
192.168.0.112 k8s-node02
192.168.0.113 k8s-node03
修改主机名称
hostnamectl set-hostname k8s-master01
hostname -b k8s-master01
#其余服务器按照此方式进行修改
关闭NetworkManager服务
修改服务器的IP地址
安装依赖包
设置防火墙并且清空规则
关闭selinux
服务器之间免密配置
Docker依赖安装
安装Docker源
安装Docker
配置daemon配置文件
[root@k8s-master01 ~]# mkdir -p /etc/docker [root@k8s-master01 ~]# mkdir -p /etc/systemd/system/docker.service.d [root@k8s-master01 ~]# cat > /etc/docker/daemon.json < { > "exec-opts": ["native.cgroupdriver=systemd"], #着重注意标红字体 > "log-driver": "json-file", > "log-opts": { > "max-size": "100m" > }, > "insecure-registries":["http://registry.k8s-test.com"] #后面会使用到私有镜像仓库 > } > EOF启动docker并且设置开机自启动
安装kubelet
启动kubelet并且设置为开机启动
Keepalive安装
修改配置文件:
master01和master02和master03配置一样,只是router_id记得变一下
[root@k8s-master01 ~]# more /etc/keepa hived/keepalhived.Conf ! Configuration File for keepalived global_ defs{ router_id master01 } vrrp_instance VI_1 { state BACKUP interface ens33 virtual_router_id 5 priority 90 advert_int 1 authentication { auth type PASS auth pass 1111 } virtual ipaddress { 192.168.0.100 } }启动keepalived
验证
master01
master02
master03
k8s安装
下载镜像
部署镜像中心
将镜像push到镜像中心
[root@k8s-master01 images]# docker images | awk '{print $1":"$2}' | xargs -i docker push {}创建kubeadm-config.yaml的配置文件
初始化master
验证安装
创建flannel网络
下载flannel的yaml文件
创建flannel网络
验证安装
master节点添加至集群
master01向其他两个节点颁发证书
其他节点将证书放到指定目录
加入集群
kubeadm join 192.168.0.100:6443 --token lllil4.2wm1u6ocuxmysn7l \ --discovery-token-ca-cert-hash sha256:fa5075ba896b8dbfdaf19125dee28817fdd349b7c4cea9ab243ad4224eb90892 \ --control-plane查看布置的节点