企业运维实战(k8s高可用集群)

实验准备

实验准备:一个携带harbor仓库的虚拟机server1
server5和server6部署pacemaker和haproxy提供高可用性、负载均衡
server7、8、9部署k8s的master端,内存必须大于2G,cpu核心2个
server10部署k8s的woker端

所有虚拟机

加入地址解析

vim /etc/hosts
在这里插入图片描述

高可用、负载均衡

在server5、6上

加入7.6的yum源以及高可用的yum源

[dvd]
name=rhel7.6
baseurl=http://172.25.21.250/rhel7.6
gpgcheck=0
[HighAvailability]
name=HighAvailability
baseurl=http://172.25.21.250/rhel7.6/addons/HighAvailability
gpgcheck=0

在这里插入图片描述
安装相关高可用软件和工具

yum install -y pacemaker pcs psmisc policycoreutils-python

设置开机自启动pcsd服务

systemctl enable --now pcsd.service

安装的软件包将创建以及空密码的hacluster用户

passwd hacluster  #创建密码

在这里插入图片描述

在server5上

在任一节点上,使用pcs群集验证作为hacluster用户进行身份验证:

pcs cluster auth server5 server6

在这里插入图片描述

接下来,在同一节点上使用pcs群集设置来生成和同步corosync配置

pcs cluster setup --name mycluster server5 server6

在这里插入图片描述

启动集群

pcs cluster start --all
pcs cluster enable --all

在这里插入图片描述
查看状态

pcs status

在这里插入图片描述

检查配置的有效性,发现有error
要禁用STONITH,请将STONITH enabled cluster选项设置为false

crm_verify -L -V
pcs property set stonith-enabled=false

在这里插入图片描述
创建一个vip,并查看配置完的vip

pcs resource create vip ocf:heartbeat:IPaddr2 ip=172.25.21.100 op monitor interval=30s
ip addr
ping 172.25.21.100

在这里插入图片描述安装haproxy,并配置

yum install -y haproxy
vim /etc/haproxy/haproxy.cfg

haproxy监控配置如图

在这里插入图片描述
查看端口是否开启

netstat -antlp 

在这里插入图片描述

查看监控:172.25.21.5/status
在这里插入图片描述测试完后关闭服务

systemctl stop haproxy.service

在server6

yum install -y haproxy

scp  server5:/etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg
systemctl restart haproxy.service

查看监控:172.25.21.6/status
在这里插入图片描述
在server5

将vip和haproxy加入同一个组,运行在同一节点

pcs resource create haproxy systemd:haproxy op monitor interval=60s
pcs resource group add hagroup vip haproxy
pcs status

在这里插入图片描述

k8s

在server7、8、9、10

加入docker的yum源

vim /etc/yum.repos.d/docker.repo

[docker]
name=docker
baseurl=http://172.25.21.250/docker-ce
gpgcheck=0

安装docker

yum install docker-ce -y

设置开机自启动

systemctl enable --now docker

查看docker相关内容

docker info

如果出现这样的警告
在这里插入图片描述

vim /etc/sysctl.d/docker.conf

net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1

sysctl --system

然后再次查看docker info ,警告消除

修改docker相关文件
vim /etc/docker/daemon.json

{
  "registry-mirrors": ["https://reg.westos.org"],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2",
  "storage-opts": [
    "overlay2.override_kernel_check=true"
  ]
}

重启docker服务

systemctl restart docker

查看docker相关内容

docker info

Cgroup Driver修改为systemd
在这里插入图片描述
镜像仓库地址为本地harbor仓库
在这里插入图片描述
在server1
将认证文件传给安装docker的主机server7、8、9、10

[root@server1 yum.repos.d]# scp -r /etc/docker/certs.d/ server7:/etc/docker
root@server7's password: 
ca.crt                                                                                                                              100% 2106     1.3MB/s   00:00    

在server7、8、9、10
测试镜像拉取

docker pull busybox

拉取成功,可以从本地镜像仓库拉取
在这里插入图片描述
安装ipvm

yum install -y ipvsadm

查看

ipvsadm -L
lsmod |grep ip_vs

在这里插入图片描述
swap禁用

swapoff -a

注释掉/etc/fstab文件中的swap定义

vim /etc/fstab

在这里插入图片描述

kubeadm部署
先解压kubeadm,进入安装包目录,安装

tar zxf kubeadm-1.21.3.tar.gz
cd packages/
yum install -y *

在这里插入图片描述设置开机自启动kubelet

systemctl enable --now kubelet

在server7

生成一个默认模板

kubeadm config print init-defaults > kubeadm-init.yaml

vim kubeadm-init.yaml

12行修改为本机ip
在这里插入图片描述
16行改为本机hostname
在这里插入图片描述
24行加入高可用集群的vip和端口
在这里插入图片描述

32行私人仓库地址k8s部署相关安装包
在这里插入图片描述

33行版本改为1.21.3
在这里插入图片描述

36行加入serviceSubnet

serviceSubnet: 10.96.0.0/12

在这里插入图片描述
结尾加

---
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
mode: ipvs

在这里插入图片描述

预先拉取镜像

kubeadm config images pull --config kubeadm-init.yaml

kubeadm初始化

kubeadm init   --config kubeadm-init.yaml --upload-certs

提示这个就部署完成

在这里插入图片描述
将初始化完成后,如果是超级用户,你执行

export KUBECONFIG=/etc/kubernetes/admin.conf
vim ~/.bash_profile
	export KUBECONFIG=/etc/kubernetes/admin.conf

配置kubectl命令补齐功能:

echo "source <(kubectl completion bash)" >> ~/.bashrc
source ~/.bashrc

查看node和pod状态

kubectl get pod -n kube-system
kubectl get node

发现coredns状态是Pending
在这里插入图片描述
安装flannel网络组件

wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

vim kube-flannel.yml

-image: flannel:v0.14.0 #设定成自己的仓库公共目录,拉取速度会很快

在这里插入图片描述
将type从vxlan改为host-gw

在这里插入图片描述
安装flannel

kubectl apply -f kube-flannel.yml

在这里插入图片描述

再次查看,ready
在这里插入图片描述

在server8、9

从上面server7初始化部署成功后的提示信息,找到join any number of the control-plane node 的命令
在这里插入图片描述显示加入成功
在这里插入图片描述
将初始化完成后,如果是超级用户,你执行

export KUBECONFIG=/etc/kubernetes/admin.conf
vim ~/.bash_profile
	export KUBECONFIG=/etc/kubernetes/admin.conf

配置kubectl命令补齐功能:

echo "source <(kubectl completion bash)" >> ~/.bashrc
source ~/.bashrc

在server10

从上面server7初始化部署成功后的提示信息,找到join any number of the control-plane node 的命令join any number of worker nodes的命令
在这里插入图片描述

加入成功
在这里插入图片描述

在server7

查看节点
在这里插入图片描述

查看监控
在这里插入图片描述

效果展示

在server7 创建一个pod 镜像为myapp:v1

在这里插入图片描述
server7和8关机(模拟出现问题)

server9测试 pod还运行
在这里插入图片描述
server5关闭pcs(模拟出现问题)

pcs node standby
pcs status

pcs和haproxy转到server6
在这里插入图片描述

测试:
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pu.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值