K8s高可用集群
配置高可用(HA)Kubernetes集群,有以下两种可选的etcd拓扑:
- 集群master节点与etcd节点共存,etcd也运行在控制平面节点上
- 使用外部etcd节点,etcd节点与master在不同节点上运行
本实验使用第一种
堆叠的etcd拓扑  外部etcd拓扑  实验方案一:
IP | 功能 |
---|
server1 | harbor仓库 | server5 | 高可用和负载均衡(peacemaker + haproy) | server6 | 高可用和负载均衡(peacemaker + haproy) | server7 | k8s的master | server8 | k8s的master | server9 | k8s的master | server10 | k8s的worker |
master和高可用负载均衡都需要2个CPU和2048的Mem 考虑到电脑本身内存只有8G,选择方案二进行实验,实现了负载均衡,但未能体现高可用,有条件的朋友可选择方案一进行操作!!!
实验方案二:
IP | | 功能 |
---|
172.25.28.1 | server1 | 仓库 | 172.25.28.5 | server5 | k8s的master ,haproxy | 172.25.28.6 | server6 | k8s的master | 172.25.28.7 | server7 | k8s的master | 172.25.28.8 | server8 | k8s的worker |
server5 负载均衡的配置
server5,server6,server6编写dvd.repo文件,保证仓库配置成功  server5 vip :172.25.28.100,此处使用虚拟ip 与真实主机进行隔离 
ping vip 查看是否ping 通!!! 
安装 haproxy ,编写配置文件  
使用(http协议)80端口来监控:ststus 
haproxy端口:设定为8443,此处一定要区分haproxy和api-server的端口,因为server5即负责haproxy,又负责k8s的master !!! api-server的端口:6443,tcp协议 haproxy支持 4/7 层 http协议是7层,tcp协议是4层 
重启haproxy 
端口查看,80端口为监听haproxy状态的端口,8443端口为haproxy的端口

网页访问:
监控查看,此处也可以访问虚拟ip!!! 
serveer5,server6,server7 部署docker
复制docker.rep文件给server5,server6,server7 
server5,server6,server7安装docker,设置开机自启!!!  
server5,server6,server7 编写解析文件,添加私有仓库 

复制 daemon.json 给server5,server6,server7 
复制 docker.conf 给server5,server6,server7 
加载内核参数 
重启docker 
docker info 可以查看查看私有仓库已经接入,cgroup为system  
测试: 拉取景象成功   ‘
server5,server6,server7 k8s集群部署为master
server5,server6,server7都需要禁掉swap分区  准备kubeadm,kubelet,kubectl 安装包 
  server5,server6,server7安装 kubeadm,kubelet,kubectl    server5,server6,server7都启动kubelet    server5上修改kubeadm的yaml文件  
 server5,server6,server7加载内核参数    server5拉取镜像  初始化k8s集群 
申明后,即可看到pod的所有信息  查看server5节点未ready!!!pod也出现pending!!!  需要安装网络插件,此处选择flanner的网络插件  kubectl 命令补齐  修改flanner.yaml文件中的网络模式为host-gw直连网关  执行清单  此时pod全部running!!!node已经就绪  此时server6和server7以master形式加入集群中   查看节点状态,成功ready!!!  查看kube-system的ns中pod的状态  网页测试: 172.25.28.5/status 
server8 部署为k8s集群中的worker
新建虚拟机server8,添解析  配置docker的仓库  安装docker,设定开机自启动   复制json,认证,内核参数文件  重启,内核参数设定生效  docker info查看是否成功介入私有仓库,cgroup是否设定为systemd   添加仓库的解析  拉取镜像进行测试  准备k8s部署需要的包  安装kubeadm,kubelet,kubectl  禁用swap分区  server8以worker形式加入k8s集群  kubelet设定开机自启动  查看所有集群节点,server5,6,7为master,server8为worker 
运行demo容器,查看pod状态 ,集群内部访问成功  server6声明,查看所有node状态 
server7声明,查看所有node状态 
测试:
server6进行down,测试pod是否能够调度在另外一个node节点进行工作  外部查看监控,发现server6已经down掉 
server7上查看pod正常running 
|