K8s高可用+负载均衡集群

Posted S4061222

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了K8s高可用+负载均衡集群相关的知识,希望对你有一定的参考价值。

K8s高可用集群

配置高可用(HA)Kubernetes集群,有以下两种可选的etcd拓扑:

  • 集群master节点与etcd节点共存,etcd也运行在控制平面节点上
  • 使用外部etcd节点,etcd节点与master在不同节点上运行

本实验使用第一种

堆叠的etcd拓扑

外部etcd拓扑

实验方案一:

IP功能
server1harbor仓库
server5高可用和负载均衡(peacemaker + haproy)
server6高可用和负载均衡(peacemaker + haproy)
server7k8s的master
server8k8s的master
server9k8s的master
server10k8s的worker

master和高可用负载均衡都需要2个CPU和2048的Mem
考虑到电脑本身内存只有8G,选择方案二进行实验,实现了负载均衡,但未能体现高可用,有条件的朋友可选择方案一进行操作!!!

实验方案二:

IP功能
172.25.28.1server1仓库
172.25.28.5server5k8s的master ,haproxy
172.25.28.6server6k8s的master
172.25.28.7server7k8s的master
172.25.28.8server8k8s的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高可用+负载均衡集群的主要内容,如果未能解决你的问题,请参考以下文章

K8s高可用+负载均衡集群

K8s高可用+负载均衡集群

【K8s 精选】CKA - 管理高可用性 Kubernetes 集群

基于腾讯云CLB实现K8S v1.10.1集群高可用+负载均衡

K8S高可用之Sealos

阿里云自建k8s集群使用slb负载均衡