一、系统初始化
安装配置好docker以后
二、master01节点上操作
1、在主节点启动 Haproxy 与 Keepalived 容器
在 master01、master02、master03 上创建目录,上传相关文件。
mkdir -p /usr/local/kubernetes/install/images
cd /usr/local/kubernetes/install/images
# 导入镜像
docker load -i haproxy.tar
docker load -i keepalived.tar
# 解压镜像文件
tar -zxvf kubeadm-basic.images.tar.gz
# 修改镜像目录 (网友评论方案: ls | xargs -i docker load {} 搞定)
vi load-images.sh
chmod a+x load-images.sh
./ load-images.sh
tar -zxvf start.keep.tar.gz
# 将data目录移动到根目录下
mv data/ /
cd /data/lb/
cat etc/haproxy.cfg
vim etc/haproxy.cfg
# 修改以下为3台master节点的ip
server rancher01 192.168.66.10:6443
server rancher02 192.168.66.21:6443
server rancher03 192.168.66.22:6443
cd etc
# 备份文件
cp haproxy.cfg /root/
# 继续修改,只保留一条 server rancher01 192.168.66.10:6443
vim haproxy.cfg
cd ..
vim start-haproxy.sh
MasterIP1=192.168.66.10
MasterIP1=192.168.66.20
MasterIP1=192.168.66.21
./start-haproxy.sh
# 查看端口,已经处于监听状态
netstat -anpt | grep :6444
# 查看网卡名称
ifconfig
# 启动keepalived
vim start-keepalived.sh
VIRTUAL_IP=192.468.66.100
INTERFACE=ens33
./start-keepalived.sh
# 查看虚拟ip地址
ip addr show
2、安装kubeadm(主从配置)
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 -y install kubeadm-1.15.1 kubectl-1.15.1 kubelet-1.15.1
# 设置开机自启
systemctl enable kubelet.service
3、初始化主节点
cd /usr/local/kubernetes/install
# 生成yaml文件(这个文件不用,使用上传的)
kubeadm config print init-defaults > kubeadm-config.yaml
将 kubeadm-config.yaml 上传,替换掉刚刚生成的文件
vim kubeadm-config.yaml
# 当前节点的ip地址
advertiseAddress:192.168.66.10
# 这里默认配置的是空字符串,这里因为是高可用集群,所以需要添加高可用节点的地址。
controlPlaneEndpoint:"192.168.66.100:6444"
# 执行初始化命令,这里会生成加入master节点的命令。
kubeadm init --config=kubeadm-config.yaml --experimental-upload-certs | tee kubeadm-init.log
# 查看server地址是否为 192.168.66.100
vim /root/.kube/config
kubectl get node
4、将文件复制到其他 master 节点
cd /
scp haproxy.cfg root@192.168.66.20:/root/
scp haproxy.cfg root@192.168.66.21:/root/
# 拷贝 01节点的data目录到 02 03节点
scp -r /data root@k8s-master02:/
scp -r /data root@k8s-master03:/
三、master02 节点上操作
1、在主节点启动 Haproxy 与 Keepalived 容器
cd /data/lb
./start-haproxy.sh
./start-keepalived.sh
2、安装kubeadm(主从配置)
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 -y install kubeadm-1.15.1 kubectl-1.15.1 kubelet-1.15.1
# 设置开机自启
systemctl enable kubelet.service
3、将 master02 加入 master01
安装好后,执行加入 master01 节点的命令。
# 查看node状态
kubectl get node
cd .kube/
# 查看server地址是否为 192.168.66.100
cat config
四、master03 节点上操作
master03 节点和 master02节点操作一样
五、后续配置
master01 上修改 haproxy配置
cd /data/lb/
# 修改配置,将其他两个节点配置加入(yy 和 pp 可能是vim的复制一行和粘贴一行)
vim etc/haproxy.cfg
server rancher01 192.168.66.10:6443
server rancher02 192.168.66.21:6443
server rancher03 192.168.66.22:6443
# 查看haproxy名称为 HAProxy-K8S
docker ps
# 重启haproxy
docker rm -f HAProxy-K8S && bash /data/lb/start-haproxy.sh
将haproxy.cfg拷贝到另外两台节点后,重启haproxy。
# 查看node节点,都是NotReady状态。
kubectl get node
# 部署flannel
cd /usr/local/kubernetes/install
# 上传kube-flannel.yml
kubectl apply -f kube-flannel.yml
# 查看flannel状态
kubectl get pod -n kube-system
# 查看node状态
kubectl get node
六、高可用测试
# 关闭master01节点实验
shutdown -h now
# 在master02上执行,此时可能会卡死
kubectl get node
# 卡死需要修改master02的配置,将server地址改为master02的ip,这里的keepalived vip没飘过来,原因可能是health check 少了。vip那步增加健康检查可以移除错误的节点,这样可以不改的。
vim ./kube/config
重新启动master01节点。
cd /usr/local/kubernetes/install
# 查看node节点加入的命令
cat kubeadm-init.log