K8s高可用+负载均衡集群
Posted S4061222
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了K8s高可用+负载均衡集群相关的知识,希望对你有一定的参考价值。
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
以上是关于K8s高可用+负载均衡集群的主要内容,如果未能解决你的问题,请参考以下文章
基于腾讯云CLB实现K8S v1.10.1集群高可用+负载均衡