HA的2中部署方式
一种是将etcd与Master节点组件混布在一起
另外一种方式是,使用独立的Etcd集群,不与Master节点混布
环境:
192.168.0.100 master1
192.168.0.110 master2
192.168.0.120 master3
192.168.0.130 node1
192.168.0.140 node2
192.168.0.150 node3
1.下载docker源
wget https://download.docker.com/linux/centos/docker-ce.repo
2.安装docker服务并加入开机启动
yum -y install docker-ce
systemctl start docker && systemctl enable docker
3.配置docker加速器
cat >> /etc/docker/daemon.json << EOF # daemon.json文件如果没有自己创建
4.重启docker服务
systemctl restart docker
5.更改各节点主机名
hostnamectl set-hostname 主机名
6.配置各节点hosts文件
cat >> /etc/hosts << EOF
7.关闭各个节点防火墙和SElinux # 根据自己的实际情况来安排
systemctl stop firewalld && systemctl disable firewald
cat >> /etc/selinux/config << EOF
8.关闭每台服务器swap分区
cat >> /etc/fstab
9.重启服务器
reboot
10.同步每台节点的时间 # 用chrony或者ntpdate都行
11.每台服务器内核调整,将桥接的IPv4流量传递到iptables的链
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_nonlocal_bind = 1
net.ipv4.ip_forward = 1
执行sysctl -p生效
12.配置每台服务器增加k8s的yum源
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
13.每台服务器安装ipset服务
yum -y install ipvsadm ipset sysstat conntrack libseccomp
14.每台服务器开启ipvs模块
cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/sh
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
给权限 运行 查询是否已经启用
chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4
15.所有master节点安装haproxy和keepalived并修改配置文件
yum -y install haproxy keepalived
cat /etc/keepalived/keepalived.conf
cat /etc/haproxy/haproxy.cfg
16.健康监测脚本
17.启动keepalived和haproxy
systemctl start keepalived && systemctl enable keepalived
systemctl start haproxy && systemctl enable haproxy
18.查看vip IP地址
19.每个节点安装kubeadm,kubelet和kubectl # 安装的kubeadm、kubectl和kubelet要和kubernetes版本一致,kubelet加入开机启动之后不手动启动,要不然会报错,初始化集群之后集群会自动启动kubelet服务!!!
yum -y install kubeadm-1.18.2 kubelet-1.18.2 kubectl-1.18.2
systemctl enable kubelet && systemctl daemon-reload
20.获取默认配置文件
kubeadm config print init-defaults > kubeadm-config.yaml
21.修改初始化配置文件
cat > kubeadm-config.yaml < EOF
22.下载相关镜像
kubeadm config images pull --config kubeadm-config.yaml
23.初始化集群
kubeadm init --config kubeadm-config.yaml
24.把主节点证书复制到其它master节点
25.每台节点kubelet加入开机启动
systemctl enable kubelet && systmectl daemon-reload
26.加入集群认证
27.查看所有节点状态
28.安装网络插件
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
29.查看节点状态
30.安装dashboard
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml
31.修改recommended.yaml文件
vim recommended.yaml
32.创建证书
#创建kubernetes-dashboard-certs对象
kubectl create secret generic kubernetes-dashboard-certs --from-file=dashboard.key --from-file=dashboard.crt -n kubernetes-dashboard
33.运行.yml文件
kubectl create -f recommended.yaml
34.注意:这里可能会报如下所示。
Error from server (AlreadyExists): error when creating "./recommended.yaml": namespaces "kubernetes-dashboard" already exists
这是因为我们在创建证书时,已经创建了kubernetes-dashboard命名空间,所以,直接忽略此错误信息即可。
35.查看安装结果
kubectl get pods -A -o wide
36.查看暴露端口
kubectl get service -n kubernetes-dashboard -o wide
37.创建dashboard管理员
vim dashboard-admin.yaml
38.保存退出后执行如下命令创建管理员
kubectl create -f dashboard-admin.yaml
39.为用户分配权限
vim dashboard-admin-bind-cluster-role.yaml
40.保存退出后执行如下命令为用户分配权限
kubectl create -f dashboard-admin-bind-cluster-role.yaml
41.查看并复制用户Token
kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep dashboard-admin | awk '{print $1}')
具体执行情况如下所示
42.查看dashboard界面
在浏览器中打开链接 https://192.168.175.101:30000/#/login ,如下所示。
43.这里,我们选择Token方式登录,并输入在命令行获取到的Token,如下所示
44.点击登录后进入dashboard,如下所示