记一次阿里云上安装K8S集群 kubeadm安装高可用过程
Posted 2019peng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了记一次阿里云上安装K8S集群 kubeadm安装高可用过程相关的知识,希望对你有一定的参考价值。
现有环境说明
内网slb:192.168.0.203
服务器三台:master1 = 192.168.0.195 master2 = 192.168.0.198 master3 = 192.168.0.194
三台master都安装基本环境
修改三个服务器上的hosts
添加 vim /etc/hosts
192.168.0.195 master1
192.168.0.198 master2
192.168.0.194 master3
192.168.0.195 apisv (这个会成为)
然后还借用了别人的一个初始化脚本
wget https://kuboard.cn/install-script/v1.17.2/init_master.sh
开始安装docker
yum install -y yum-utils
device-mapper-persistent-data
lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install -y docker-ce-19.03.8 docker-ce-cli-19.03.8 containerd.io
systemctl enable docker
systemctl start docker
安装nfs
yum install -y nfs-utils
# 关闭 SeLinux
setenforce 0
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
# 关闭 swap
swapoff -a
yes | cp /etc/fstab /etc/fstab_bak
cat /etc/fstab_bak |grep -v swap > /etc/fstab
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
echo "net.bridge.bridge-nf-call-ip6tables = 1" >> /etc/sysctl.conf
echo "net.bridge.bridge-nf-call-iptables = 1" >> /etc/sysctl.conf
echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.conf
echo "net.ipv6.conf.default.disable_ipv6 = 1" >> /etc/sysctl.conf
echo "net.ipv6.conf.lo.disable_ipv6 = 1" >> /etc/sysctl.conf
echo "net.ipv6.conf.all.forwarding = 1" >> /etc/sysctl.conf
sysctl -p
配置K8S源
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
yum install -y kubelet-1.17.2 kubeadm-1.17.2 kubectl-1.17.2
systemctl daemon-reload
systemctl restart docker
systemctl enable kubelet && systemctl start kubelet
以master1为第一个初始化服务器
设置几个环境变量
export APISERVER_NAME=apisv(自己取名,要添加进hosts的)
export POD_SUBNET=10.100.0.1/16
以上两个是下面执行的脚本需要用的
修改init_master.sh
主要修改 kubernetesVersion: v1.17.2 (你需要安装的版本)
并运行
sh init_master.sh
等待初始化完成,并记录kubeadm join XX:6443 XXXX --discovery-token-ca-cert-hash XXX --control-plane --certificate-key (这是让其他master加入集群的命令)
这个后面跟着一个kubeadm join 是node加入集群的命令
最后 开始最重要的高可用操作方式了(一开始自己单纯用apisc指向内网slb,然后slb监听后端三个master。发现因为证书不对,只能访问到master1这个服务器)
现在开始第一步:检查master1的hosts
192.168.0.195 master1
192.168.0.198 master2
192.168.0.194 master3
192.168.0.195 apisc (这个一开始要指向自己,就是master1)
第二步:为matser2 和master3创建证书存放文件夹(去master2,master3上创建这两个文件夹)
/etc/kubernetes/pki
/etc/kubernetes/pki/etcd
第三步:分发证书
在master1上 cd /etc/kubernetes/pki
scp ca.crt ca.key sa.key sa.pub front-proxy-ca.crt front-proxy-ca.key root@192.168.0.198:/etc/kubernetes/pki/
scp ca.crt ca.key sa.key sa.pub front-proxy-ca.crt front-proxy-ca.key root@192.168.0.194:/etc/kubernetes/pki/
cd /etc/kubernetes/pki/etcd
scp ca.crt ca.key root@192.168.0.198:/etc/kubernetes/pki/etcd/
scp ca.crt ca.key root@192.168.0.194:/etc/kubernetes/pki/etcd/
第四步:master2,master3加入集群
分别在master2,master3执行上面master1初始化时保存的kubeadm join命令
master2 master3都要执行
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
最后修改master2 master3的/etc/hosts,把各自内网ip解析到apisc
master3:192.168.0.194 apisc
master2:192.168.0.198 apisc
验证:
分别在三个master上执行
kubectl get node
都能看到三个master服务器的集群状态
到这里 K8S的在阿里云上的高可用集群已经搭建完成了
内网slb还是要配置到监控这三个master的6443端口
至于node怎么加入集群
node上首先搭建基本环境docker+kubectl等等
然后修改hosts
192.168.0.195 master1
192.168.0.198 master2
192.168.0.194 master3
192.168.0.203 apisc (node上的apisc都必须指向内网的slb)
然后执行kubeadm join加入集群即可
以上是关于记一次阿里云上安装K8S集群 kubeadm安装高可用过程的主要内容,如果未能解决你的问题,请参考以下文章
Ubuntu22.04使用kubeadm安装k8s 1.26版本高可用集群