使用國內源安裝k8s

安裝過程中的問題

https://kubernetes.io/docs/setup/independent/install-kubeadm/

官網ubuntu安裝命令

apt-get update && apt-get install -y apt-transport-https curl 
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - 
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF
apt-get update
apt-get install -y kubelet kubeadm kubectl
apt-mark hold kubelet kubeadm kubectl

 

1、源問題

此處kubernetes的源 我選擇的ustc

因此/etc/apt/sources.list.d/kubernetes.list文件需要添加(ubuntu16.04 代號爲xenial)

deb https://mirrors.ustc.edu.cn/kubernetes/apt kubernetes-xenial main

 

軟件源更改 /etc/apt/sources.list

默認註釋了源碼倉庫,如有需要可自行取消註釋
deb https://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse# 
預發佈軟件源,不建議啓用# deb https://mirrors.ustc.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse

 

2swap問題

kubernetes需要關閉swap

swapoff -a

同時把/etc/fstab包含swap那行記錄刪掉。

3image問題

安裝好kubectlkubeadmkubelet之後,使用kubectl init進行初始化,初始化的時候默認使用國外的鏡像。

因此可以使用kubeadm config images lsit --kunernetes-version v1.12.2(自己的版本號)查看k8s都需要那些image,可以事先使用國內能訪問的網站下載下來

使用kubeadm初始化的時候無法拉取鏡像

推薦使用anjia0532的鏡像,機器人自動跟官方同步,非常及時。

docker pull anjia0532/google-containers.kube-controller-manager-amd64:v1.11.2 
docker pull anjia0532/google-containers.kube-apiserver-amd64:v1.11.2 
docker pull anjia0532/google-containers.kube-scheduler-amd64:v1.11.2 
docker pull anjia0532/google-containers.kube-proxy-amd64:v1.11.2 
docker pull anjia0532/google-containers.pause:3.1 
docker pull anjia0532/google-containers.etcd-amd64:3.2.18 
docker pull anjia0532/google-containers.coredns:1.1.3

 

然後重新tag

docker tag anjia0532/google-containers.kube-controller-manager-amd64:v1.11.2 k8s.gcr.io/kube-controller-manager-amd64:v1.11.2 
docker tag anjia0532/google-containers.kube-apiserver-amd64:v1.11.2 k8s.gcr.io/kube-apiserver-amd64:v1.11.2 
docker tag anjia0532/google-containers.kube-scheduler-amd64:v1.11.2 k8s.gcr.io/kube-scheduler-amd64:v1.11.2 
docker tag anjia0532/google-containers.kube-proxy-amd64:v1.11.2 k8s.gcr.io/kube-proxy-amd64:v1.11.2 
docker tag anjia0532/google-containers.pause:3.1 k8s.gcr.io/pause:3.1 
docker tag anjia0532/google-containers.etcd-amd64:3.2.18 k8s.gcr.io/etcd-amd64:3.2.18 
docker tag anjia0532/google-containers.coredns:1.1.3 k8s.gcr.io/coredns:1.1.3

 

再刪掉原來的image

docker rmi [imagename]

4join加入master時的問題

因爲我的測試機時克隆的,所以3個主機名字是一樣的,加入的時候

kubeadm join IP:6443 --token xuzad4.qkfdi57gal2bkobo

 

master kubectl get nodes 看不到加入的節點,發現問題的原因是主機名相同,修改主機名,Ubuntu修改方法  編輯/etc/hostname

修改完成之後使用kubeadm reset在節點主機上使用,重置,然後在使用kubeadm join命令,加入成功。

5join之後各節點需要運行一些組件

kubectl get nodes

 

可以查看到現有的節點仍處於not ready狀態,當各節點需要運行的組件都啓動正常之後會變爲ready狀態

可以通過

kubectl get pod --all-namespaces

查看組件啓動情況,若有組件未啓動成功,可以使用

kubectl describe pod (上一命令查到的NAME) --namespace=kube-system

節點在ready的時候會創建一些容器,需要上邊列出的7image中的一些,所以在節點機器上也要下載部分第3部中的image

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章