kubernetes高可用安装手记

  • 公司内部进行了一次高可用k8s科普,故作此记录
  • 安装docker并配置一些基础参见https://www.jianshu.com/p/f43eb65c2d3b
    https://www.jianshu.com/p/77226fca5a0c
  • 本次采用5台虚拟机,整体是3台master和两台node节点
5台机器
  • 更改驱动为systemd


    "exec-opts":["native.cgroupdriver=systemd"] 文件位置为/etc/docker/daemon.json 修改后重启docker service docker restart
  • 禁用swap
vim /etc/fstab注释掉这行,重启机器
  • 安装一些基础软件
sudo apt-get update && sudo apt-get install -y apt-transport-https curl
  • 国内添加阿里云源信息
echo "deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main" >>/etc/apt/sources.list.d/kubernetes.list
  • 国内添加认证信息
curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
  • 更新软件源
apt update
  • 查找kubeadm版本
apt-cache madison kubelet
  • 选择kubeadm、kubelet、kubectl版本(注意:最好与k8s版本一致)

这里选择1.17.1-00版本

  • 安装kubeadm、kubelet、kubectl
apt-get install kubeadm=1.17.1-00 && apt-get install kubelet=1.17.1-00 && apt-get install kubectl=1.17.1-00
  • 配置高可用,这里选择nginx作为高可用负载均衡,安装可以参考https://www.jianshu.com/p/02a647941173
image.png
   worker_processes  1;
   events {
       worker_connections  1024;
   }
   stream {
       upstream backend {
           #hash $remote_addr consistent;
           server 172.20.225.242:6443       max_fails=3 fail_timeout=30s;
           server 192.168.1.241:6443        max_fails=3 fail_timeout=30s;
           server 192.168.1.240:6443        max_fails=3 fail_timeout=30s;
       }

       server {
           listen 10443;
           proxy_pass backend;
       }
   }
  • 暴露方式

可选配置hosts、外网域名、IP等等

  • 查看所有镜像
kubeadm config images list
  • 通过kubeadm拉起指定版本k8s第一个matset节点
报错,vim /etc/profile 行尾追加export DOCKER_API_VERSION=1.35 然后 source /etc/profile
  • 重新拉起
kubeadm init --image-repository registry.aliyuncs.com/google_containers --kubernetes-version=v1.17.1 --control-plane-endpoint "192.168.1.241:10443" --upload-certs | tee /root/log 等待完成
  • 其余两台master节点加入集群
kubeadm join 192.168.1.241:10443 --token vnit62.l5ydr8p0j0exz3dn \ --discovery-token-ca-cert-hash sha256:7b6726808a3a68918b99ccd84d8c355dd063b41a9f1bcbbbec2725471a963a47 \ --control-plane --certificate-key 4cbe583ac1d398396117d6370f1e754e9ee7abbed17ba6e13145542513cb0a8a
  • 其余node加入集群
kubeadm join 192.168.1.241:10443 --token vnit62.l5ydr8p0j0exz3dn \ --discovery-token-ca-cert-hash sha256:7b6726808a3a68918b99ccd84d8c355dd063b41a9f1bcbbbec2725471a963a47
  • 选择一台master安装kubectl命令配置文件

mkdir -p HOME/.kube/config
sudo chown (id -g) $HOME/.kube/config

  • 安装集群网络cni插件
kubectl apply -f https://docs.projectcalico.org/v3.14/manifests/calico.yaml
  • 注意

1.要重新上传证书并生成新的解密密钥,请在已加入集群节点的控制平面上使用以下命令:sudo kubeadm init phase upload-certs --upload-certs
2.您还可以在 init 期间指定自定义的 --certificate-key,以后可以由 join 使用。 要生成这样的密钥,可以使用以下命令:kubeadm alpha certs certificate-key
3.节点离开步骤
kubectl drain izrj98onkrg7dzoj7hwzsjz --delete-local-data --force --ignore-daemonsets node/izrj98onkrg7dzoj7hwzsjz
删除节点
kubectl delete node izrj98onkrg7dzoj7hwzsjz
验证
kubectl get nodes
4.生产永久token:kubeadm token create --ttl 0 --print-join-command
5.如果发现nodeport模式不是所有主机都可用,更改防火墙规则:iptables -I FORWARD -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT
6.设置开机自动设置防火墙规则

文件位置:
cd /etc/init.d/
vim add-forward-iptable-rule.sh
内容:
#!/bin/bash
### BEGIN INIT INFO
# Provides:          storeteam.cn
# Required-Start:    $local_fs $network
# Required-Stop:     $local_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: ciptables service
# Description:       ciptables service daemon
### END INIT INFO
sleep 10
iptables -I FORWARD -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT
权限:
chmod 777 add-forward-iptable-rule.sh
开机启动:
sudo update-rc.d add-forward-iptable-rule.sh defaults 90









你可能感兴趣的:(kubernetes高可用安装手记)