微服務探索之路02篇liunx ubuntu伺服器部署k8s(kubernetes)-kubernetes/dashboard
本章介紹所需環境:ubuntu18.04,建立在上一篇微服務探索之路01篇已經安裝了docker的基礎上。
1 替換k8s鏡像源為中國鏡像
- 進入目錄
cd /etc/apt/sources.list.d

- 編輯文件
vim kubernetes.list執行之後打開一個編輯介面按字母i進入編輯狀態複製deb //mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main放進去,按esc再:wq保存

- 執行
apt-get update

如果出現如上圖提示,需要先執行
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys FEEA9169307EA071key後面那一串就是截圖裡的那一串根據系統提示修改為對應的就行,執行完如下圖

這時候再重新執行apt-get update就成功了
- 執行
apt upgrade遇到選擇看不懂就選擇y,看的懂就按照自己想要的選擇遇到選擇直接默認ok下一步,最後執行完成表示鏡像已經替換為中國鏡像,並且所有源都更新為新版本
2 安裝k8s
-
執行
apt-get install -y kubelet kubeadm kubectl --allow-unauthenticated -
執行
kubeadm version查看版本號
3 安裝鏡像包
- 需要安裝多個鏡像所有寫一個腳本來完成
1.先退到最外層目錄下或者去自己知道的目錄(這邊直接退到最外層目錄執行cd回車)
2.創建k8spull.sh內容為(文件創建和編輯方法可以百度vim用法)
for i in `kubeadm config images list`; do
imageName=${i#k8s.gcr.io/}
docker pull registry.aliyuncs.com/google_containers/$imageName
docker tag registry.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName
docker rmi registry.aliyuncs.com/google_containers/$imageName
done;
3.執行chmod +x k8spull.sh給腳本文件賦予許可權
4.執行腳本sh k8spull.sh
5.執行docker images,再執行kubeadm config images list對比鏡像是否全都載入成功

這邊發現少了一個coredns,可以手動拉取試試(執行docker pull registry.aliyuncs.com/google_containers/coredns/coredns:v1.8.6)

嘗試後如上圖發現阿里雲鏡像裡面沒有這個版本號也不知道去哪查看最新的版本,所以這邊選擇使用dockerhub里的最新版本1.8.3執行
docker pull rancher/coredns-coredns:1.8.3
,然後更改鏡像名執行
docker tag rancher/coredns-coredns:1.8.3 k8s.gcr.io/coredns/coredns:v1.8.6
,最後刪除原始鏡像執行
docker rmi rancher/coredns-coredns:1.8.3
重新執行docker images檢查鏡像是否已經成功,如下圖表示成功

4 初始化kubeadm
- 執行
kubeadm init --pod-network-cidr=10.244.0.0/16 --ignore-preflight-errors=NumCPU
5 設置網路插件
1.設置環境變數執行export KUBECONFIG=/etc/kubernetes/admin.conf,執行完這裡順便把環境變數加到系統配置里防止下次重啟伺服器的時候沒有變數,具體操作如下
vim /etc/profile打開之後在底部添加export KUBECONFIG=/etc/kubernetes/admin.conf,添加之後保存退出文件,然後執行source /etc/profile使其生效。
2.編寫yml進行資源配置,這裡可以直接使用網路上別人寫好的yml文件直接用以下命令和地址即可
kubectl apply -f //raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
需特別注意:
如果執行上一行命令報錯,內容包含did you specify the right host or port,這時候是因為kubelet沒有正常啟動,可以執行journalctl -xefu kubelet查看具體的錯誤日誌,本次配置遇到的錯誤是docker和kubelet的驅動程式不同具體如圖

解決方法:
(1).查看文件/var/lib/kubelet/config.yaml里的驅動

(2).把docker的改為跟這個一樣的方式
編輯文件/etc/docker/daemon.json,如果文件本身有內容那就在對象內添加一行"exec-opts": ["native.cgroupdriver=systemd"],如果空文件那就要用大括弧包起來{"exec-opts": ["native.cgroupdriver=systemd"]},然後保存退出文件。
(3)重啟服務,執行以下三個命令
-
systemctl daemon-reload -
systemctl restart docker -
systemctl restart kubelet
運行成功,出現下類似圖

3.執行kubectl get nodes查看如果出現如下圖內容表示已經成功部署可以進行增加和移除Node(節點)

6 安裝面板
1.下載yaml文件wget //raw.githubusercontent.com/kubernetes/dashboard/v2.4.0/aio/deploy/recommended.yaml
版本號可以去github上選擇tag查看最新的或者選擇合適自己的
2.打開yaml文件查看鏡像然後用docker拉取鏡像,搜索文件中image關鍵字可以找到以下兩個相關的鏡像,版本不一樣版本號也會對應改變
鏡像1命令:docker pull kubernetesui/dashboard:v2.4.0
鏡像2命令:docker pull kubernetesui/metrics-scraper:v1.0.7
3.修改yaml文件將訪問方式改為NodePort,如下圖

改完保存退出,然後執行kubectl apply -f recommended.yaml
以上執行完之後執行這個看一下是否有綁定好埠號kubectl get svc --namespace=kubernetes-dashboard,結果如下圖表示成功

7 配置Token
1.打開//ip:埠號,會出現如下介面這時不要繼續操作介面,需要先配置Token

2.創建文件vim dashboard-admin.yaml,文件內容為

apiVersion: v1
kind: ServiceAccount
metadata:
name: kubernetes-dashboard-admin
namespace: kubernetes-dashboard
labels:
k8s-app: kubernetes-dashboard
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: kubernetes-dashboard-admin
namespace: kubernetes-dashboard
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: kubernetes-dashboard-admin
namespace: kubernetes-dashboard
3.運行剛才創建的yaml文件直接為 Dashboard 賦予 Admin 的許可權kubectl create -f dashboard-admin.yaml
4.查找創建好的token,先執行kubectl -n kubernetes-dashboard get secret | grep dashboard-admin | awk '{print $1}',出現如下圖

然後根據結果里返回的名稱執行下面的命令kubectl -n kubernetes-dashboard describe secret kubernetes-dashboard-admin-token-g7vxn這命令里的kubernetes-dashboard-admin-token-g7vxn是上一個命令返回的要根據自己得到的替換

5.複製token然後登陸

登陸之後可以切換命名空間查看相關的內容

本章結束,下一章詳解如何將自己的項目部署至k8s
以下為遇到錯誤的記錄和解決方案如下:
1.遇到kube-flannel無限自動重啟,先刪除它,等會重新安裝執行刪除命令
kubectl delete -f //raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
刪除殘留文件rm -rf /var/lib/cni/,rm -f /etc/cni/net.d/*
2.遇到一直循環創建k8s-pod,這裡不知道怎麼回事直接重置所有配置,執行命令kubeadm reset之後重新從第4步初始化環境開始,先給docker設置一下中國鏡像這一步之前沒操作過;打開文件vim /etc/docker/daemon.json,添加"registry-mirrors":[ "//阿里雲加速的id.mirror.aliyuncs.com" ],這個加速id參考第一篇有說怎麼拿到。
下面開始重新運行:
(1)重新初始化kubeadm,直接照著上面的第4步
(2)重新安裝kube-flannel網路環境,為了防止一直自動重啟,我們這邊先下載yml做完修改再執行
下載,找個路徑然後執行wget //raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
然後打開vim kube-flannel.yml修改記憶體50mi為200mi

改完保存之後給文件添加可執行許可權chmod +x filename,最後執行kubectl apply -f kube-flannel.yml
最後查看是否運行成功如下圖

圖上用到的命令kubectl get pods -o wide --all-namespaces,kubectl get nodes

