- 公司內部進行了一次高可用k8s科普匈子,故作此記錄
- 安裝docker并配置一些基礎參見http://www.reibang.com/p/f43eb65c2d3b
http://www.reibang.com/p/77226fca5a0c - 本次采用5臺虛擬機,整體是3臺master和兩臺node節(jié)點
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作為高可用負載均衡,安裝可以參考http://www.reibang.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谓厘、外網(wǎng)域名、IP等等
- 查看所有鏡像
kubeadm config images list
- 通過kubeadm拉起指定版本k8s第一個matset節(jié)點
報錯趣避,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節(jié)點加入集群
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
- 安裝集群網(wǎng)絡cni插件
kubectl apply -f https://docs.projectcalico.org/v3.14/manifests/calico.yaml
- 注意
1.要重新上傳證書并生成新的解密密鑰庞呕,請在已加入集群節(jié)點的控制平面上使用以下命令:sudo kubeadm init phase upload-certs --upload-certs
2.您還可以在 init 期間指定自定義的 --certificate-key,以后可以由 join 使用。 要生成這樣的密鑰住练,可以使用以下命令:kubeadm alpha certs certificate-key
3.節(jié)點離開步驟
kubectl drain izrj98onkrg7dzoj7hwzsjz --delete-local-data --force --ignore-daemonsets node/izrj98onkrg7dzoj7hwzsjz
刪除節(jié)點
kubectl delete node izrj98onkrg7dzoj7hwzsjz
驗證
kubectl get nodes
4.生產(chǎn)永久token:kubeadm token create --ttl 0 --print-join-command
5.如果發(fā)現(xiàn)nodeport模式不是所有主機都可用地啰,更改防火墻規(guī)則:iptables -I FORWARD -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT
6.設置開機自動設置防火墻規(guī)則
文件位置:
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