最開始測驗部署的k8s集群是在本地的三個虛擬機上,由于服務越來越復雜,決定就直接搭在阿里云的服務器上了,目前的兩臺機器還行(4+8和2+4),有其它廠商的服務器,但是就得走公網,感覺沒多大意義了,所以就用這兩臺機器來測驗了,(PS:輕量應用服務器沒得安全組的,hhh)
篇幅原因,這里只涉及Kubernetes集群的基礎部署,KubeSphere等其他套件部署見后續文章,
0x01.環境基礎
- 阿里云服務器1:4核+8G,系統:Centos8.2,內網ip:172.17.xx.xx,公網ip:39.96.xx.xx
- 阿里云服務器2:2核+4G,系統:Centos8.2,內網ip:172.17.xx.xx,公網ip:59.110.xx.xx
- 兩臺服務器使用同一個VPS,使用同一個安全組,內網可以互相ping通,(如果內網不能互相ping通,那么就是公網集群環境,部署的方式有較大差異,)
- 兩臺服務器均安裝了Docker,
- 采用一主一從模式,其中master節點也作為一個node,
- 安裝的Kubernetes及其組件的版本為v1.17.3,
- 如果nodes增加,只需要按照nodes的部署步驟操作即可,
0x02.Kubenetes組件安裝及準備(所有節點執行)
1.準備:關閉swap磁區
- 該版本的Kubernetes默認不支持開啟swap的情況下運行,(也可以修改配置保持在開啟swap磁區的情況下運行,但最好關閉swap磁區)
- 關閉swap磁區:
# 暫時關閉swap磁區
swapoff -a
# 永久關閉swap磁區 或進入/etc/fstab檔案,注釋掉swap所在行
sed -ri's/.*swap.*/#&/' /etc/fstab
2.準備:關閉selinux安全策略
- selinux實際上沒多大用處,但會產生很多沒必要的提示,最好關掉,
- 永久關閉slinux:
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
3.準備:橋接IPv4流量
- 橋接IPv4流量傳遞到iptables鏈 ,便于流量統計,
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl -p /etc/sysctl.d/k8s.conf
4.配置:yum配置阿里云的Kubernetes源
- 告訴yum下載阿里云鏡像上的Kubernetes,
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[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
EOF
5.安裝:kubeadm,kublet,kubectl
- 配置好源后直接用yum下載,
yum install -y kubelet-v1.17.3 kubeadm-v1.17.3 kubectl-v1.17.3
- 安裝成功的界面:

6.設定開機啟動
systemctl enable kubelet
systemctl start kubelet
7.開放相關埠
- 由于需要多個服務器間通信,可以選擇關閉防火墻或者開放相關的埠,
- 埠資訊:https://v2-1.docs.kubesphere.io/docs/zh-CN/installation/port-firewall/
| 服務 | 協議 | 操作 | 起始埠 | 結束埠 | 備注 |
|---|---|---|---|---|---|
| ssh | TCP | allow | 22 | ||
| etcd | TCP | allow | 2379 | 2380 | |
| apiserver | TCP | allow | 6443 | ||
| calico | TCP | allow | 9099 | 9100 | |
| bgp | TCP | allow | 179 | ||
| nodeport | TCP | allow | 30000 | 32767 | |
| master | TCP | allow | 10250 | 10258 | |
| dns | TCP | allow | 53 | ||
| dns | UDP | allow | 53 | ||
| local-registry | TCP | allow | 5000 | 離線環境安裝 | |
| local-apt | TCP | allow | 5080 | 離線環境安裝 | |
| rpcbind | TCP | allow | 111 | 使用 NFS 作為持久化存盤 | |
| ipip | IPIP | allow | Calico 需要允許 IPIP 協議 |
0x03.Master節點初始化
1.下載Master節點所需鏡像
- 運行該shell腳本,批量下載Master節點所需鏡像,
#!/bin/bash
images=(
kube-apiserver:v1.17.3
kube-proxy:v1.17.3
kube-controller-manager:v1.17.3
kube-scheduler:v1.17.3
coredns:1.6.5
etcd:3.4.3-0
pause:3.1
)
for imageName in ${images[@]} ; do
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
# docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName
done
2.Master節點初始化
- 使用kubeadm進行Master節點的初始化,
apiserver-advertise-address修改為內網ip,
kubeadm init \
--apiserver-advertise-address=172.17.96.12 \
--kubernetes-version v1.17.3 \
--image-repository registry.cn-hangzhou.aliyuncs.com/google_containers \
--service-cidr=10.96.0.0/16 \
--pod-network-cidr=10.244.0.0/16
3.復制組態檔
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
4.部署網路插件
- 使用配置好的yml檔案部署flannel插件,
kubectl apply -f kube-flannel.yml
- yml檔案內容太多,需要請私聊我,
5.讓Master也能當作Node使用的方法
kubectl taint node Master名 node-role.kubernetes.io/master-
0x04.node節點加入集群
- 復制Master節點初始化完成后的token資訊,在子結點中粘貼,
kubeadm join 172.17.96.12:6443 --token n7ybwv.0q1d8f7w9k9lok7e \
--discovery-token-ca-cert-hash sha256:9c8db5e1f190d1b01bfc2084ded47d2c14ff4c143935839a57376f0e71b09cf6

0x05.驗證集群是否搭建成功
- 在Master節點查看,子節點是否在集群中:
kubectl get nodes

- 查看所有pod的狀態是不是Running,如果有pod一直處在某一個狀態,那么這個pod就出現了問題,可以查看日志,
kubectl get pods --all-namespaces
# 查看具體pod的日志
kubectl describe pod pod名 --namespace=命名空間
0x06.kubeadm重新初始化
- Master節點:
# 輸入 y 確認
kubeadm reset
ifconfig cni0 down
ip link delete cni0
ifconfig flannel.1 down
ip link delete flannel.1
rm /var/lib/cni/ -rf
rm /etc/kubernetes/ -rf
rm /var/lib/kubelet/ -rf
rm -rf $HOME/.kube
- 子節點:
rm -rf /etc/kubernetes/*
- 即可回到初始只安裝好三個基本組件的狀態,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/208500.html
標籤:其他
上一篇:用”軟洗掉“來洗掉資料庫中的資料
