1. 程式人生 > 其它 >debain 10.6 安裝 kubernetes(k8s) 全流程日誌

debain 10.6 安裝 kubernetes(k8s) 全流程日誌

debian kubernetes 安裝記錄

參考來源:https://blog.csdn.net/cg980925441/article/details/114649809

個人使用雲伺服器提供的 debain10.6 安裝 kubernetes 的日誌(已刪減中間菜的坑,僅保留有效的操作) 。

  • 注意坑1:不通雲服務商提供的 debain映象可能略有環境上的差別,比如我這個就需要自己安裝gnupg2 ,僅供參考。遇到問題百度解決。

下文中的 “所有節點” 包含 master/node1 節點
下文中的 “所有子節點” 不包含 master 節點的node2、node3、node4
下文中的 “主節點” 指 master/node1 節點

為每個伺服器設定不同的名稱

在不同的伺服器上執行命令

node1:

hostnamectl set-hostname --static node1

node2:

hostnamectl set-hostname --static node2

node3

hostnamectl set-hostname --static node3

node4

hostnamectl set-hostname --static node4

所有節點:配置節點之間的主機名和ip對映

編輯 /etc/hosts 檔案,在所有的伺服器上

172.16.0.2 node1
172.16.0.3 node2
172.16.0.4 node3
172.16.0.5 node4

所有節點:禁用swa

swapoff -a
# 如果需要永久禁用
vi /etc/fstab
# 然後將 swap 那一行註釋掉,最前面加上 # ,儲存退出

所有節點:安裝key管理器

apt update -y && apt install -y gnupg2 apt-transport-https software-properties-common ca-certificates

所有節點:加速地址

echo "deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main">>/etc/apt/sources.list.d/kubernetes.list
sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/debian $(lsb_release -cs) stable"

所有節點:為 kubernetes 源新增金鑰

踩坑日記,這一步必須要安裝 gnupg2 否則提示錯誤

curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/debian/gpg | sudo apt-key add -
curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -

所有節點:更新並安裝 kubeadm

apt update -y && apt install -y kubeadm docker-ce

# 踩坑日記:安裝docker-ce 的驅動,和 kubernetes 保持一致 systemd ,否則後面初始化時,kubelet無法啟動
cat <<EOF | sudo tee /etc/docker/daemon.json
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}
EOF
systemctl daemon-reload && systemctl restart docker

主節點:安裝管理工具

apt install -y kubectl

主節點:初始化 k8s

踩坑日記:後面的 --image-repository registry.aliyuncs.com/google_containers 是用於拉取初始化映象加速用的,預設從海外拉取很慢。

# 先拉取一個配置網路的映象 ,最新版本是 v0.15.1
# docker pull quay.io/coreos/flannel:v0.15.1
kubeadm config images pull --image-repository registry.aliyuncs.com/google_containers 
# 踩坑日記!!!最大的一個坑,一定要設定pod的cidr網路地址,coredns依賴 flannel,但是直接應用 flannel沒有用,flannel配置的網路和kubeadm自己生成的網路地址是不一樣的,導致永遠卡在 Pending、ContainerCreating、Error、CrashLoopBackOff
kubeadm init --image-repository registry.aliyuncs.com/google_containers --pod-network-cidr=10.244.0.0/16
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

# 配置環境變數,kubectl 命令依賴此配置

export KUBECONFIG=/etc/kubernetes/admin.conf
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> /etc/profile
kubectl get pod -n kube-system
kubectl get pods --all-namespaces

然後是漫長的等待,因為要從伺服器拉取所需要映象,看網速吧。

所有子節點:如果沒有意外,master 初始化成功

產生配置資訊

# 這個資訊來自 kubeadm init ,每個人的都不同哦,這裡是作為參考展示
kubeadm join 172.16.0.2:6443 --token ygprv7.jp1nfwkkhvstlifw --discovery-token-ca-cert-hash sha256:9e4be9f3f5b9bb5b18aca6c0d39757d5b423e5d0b4979fd1ca3df567dfeabaf6 

所有節點:初始化flannel網路

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml