內容摘要
安裝K8S集群
訪問dashboard
訪問grafana
K8S是一個集群,包括多個節點,節點可以為:控制節點和工作節點,控制節點運行K8S系統組件,工作節點主要用於運行應用容器,當然也會運行部分系統組件。本指導將會指導大家安裝1個節點和多個節點的測試環境,用於實驗和學習。
安裝Docker
在K8S集群每個節點上安裝Docker,初始化容器環境。安裝方法請參考Docker動手教程第1章的相關內容。最好的方法是使用自定義容器鏡像在阿里雲創建虛擬機,這樣就不需要在每個節點上安裝Docker環境了。
安裝完成後,在每個節點上檢查容器環境是否正常,運行命令:
systemctl status docker
如果出現上圖狀態,說明Docker運行正常。
K8S安裝的過程很複雜,需要很多鏡像,在國內由於網絡的原因,一些組件下載失敗,因此我製作了離線安裝文件,可以快速簡潔地構建測試環境。
獲取離線安裝文件
我將離線安裝文件和容器環境做了一個自定義鏡像,我可以在阿里雲上共享給大家,不過需要大家提供自己的aliyunUid,請參考下圖:
這是共享鏡像的操作對話框。
如何獲取aliyunUid?
登錄阿里雲控制檯頁面後,如下圖:
請點擊右上角的頭像,進入下面的頁面:
可以看到“賬號ID”這一行,這就是aliyunUid了。
大家將自己的aliyunUid通過私信傳給我,我共享我的自定義鏡像給大家,以後大家就可以基於該鏡像創建容器環境和K8S測試環境。
當你使用我製作的鏡像構建環境時,你會發現原來可以這樣簡單!
當大家基於我的鏡像創建虛擬機後,在根目錄下可以看到如下壓縮文件:
壓縮文件名為:kube1.10.3min.tar.gz,這是kubernetes 1.10版本的離線安裝壓縮包。
初始化
在集群所有節點都放入離線安裝壓縮文件的前提下,初始化所有節點。
首先,請大家解壓所有節點上的離線安裝壓縮文件,命令為:
tar -zxvf kube1.10.3min.tar.gz
解壓可能會持續一會兒,因為這個壓縮包有幾百兆,過程如下圖:
接下來運行初始化腳本,請大家使用 cd 命令進入 kube1.10.3 解壓文件下,如下圖:
在文件夾下有shell目錄,進入其中,可以看到兩個腳本文件:init.sh,master.sh。
執行 init.sh 腳本,命令為:
sh init.sh
執行過程會持續幾分鐘,請大家耐心等待,請看下面兩個截圖:
可以看出,該腳本在配置參數。
這是在加載離線的K8S系統使用鏡像。
安裝控制節點
初始化成功以後,大家可以安裝主節點了。主節點只能有一個,當然生產環境下可以有多個,我們的測試環境用一個就可以了。主節點主要用於運行K8S系統組件。安裝方法如下:
和init.sh同級的目錄下,有master.sh腳本,使用如下命令運行該腳本:
sh master.sh
這是運行過程的部分截圖,紅色矩形框的內容提示瞭如何將其他節點加入到K8S集群中,方法是在其他節點運行該命令:
kubeadm join 172.18.151.255:6443 --token ufhjbp.4s1m6gkaivr93h7k --discovery-token-ca-cert-hash sha256:39e05aad645bac83024d581bd33b1e27d35e050bc54bbac723f46ea65dd4f035
下面顯示了創建了哪些組件,這裡大家不用深究這些組件的具體功能。
這樣,主節點就安裝成功了。
下面簡單驗證下集群是否正常,運行如下命令.
kubectl get nodes
大家可以看到只有一行數據,因為該命令查詢的是集群當中有哪些節點,目前只有1個。下面分別解釋下各列的內容:NAME:主機名;
STATUS:狀態為Ready表示該節點是正常的;
ROLES:角色,該節點是master,管理節點,也可以叫控制節點;
AGE:年齡,即創建多長時間;
VERSION:K8S版本,現在版本是v1.10.3;
添加工作節點
工作節點能夠加入的前提是:安裝Docker環境,運行過init.sh腳本。
在工作節點執行上面的命令即可加入到集群中,如下圖:
如果出現:"This node has joined the cluster" 字樣表示添加成功。
使用的是 kubeadm join 命令,kubeadm 只一個K8S安裝程序,大家感興趣的話可以去百度學習下,這裡不深究。
添加後,在控制節點上查詢下,命令為: kubectl get nodes,結果如下圖:
可以看到紅色的一行,即是剛才添加的節點信息,注意ROLES為,添加成功。
單節點集群
實際上,我們在測試的時候可以只需要一個節點,即控制節點即可,但是需要將控制節點當成工作節點使用。運行如下命令即可做到這一點:
kubectl taint node master node-role.kubernetes.io/master-
如果不想將控制節點當工作節點使用,使用如下命令:
kubectl taint node master node-role.kubernetes.io/master="":NoSchedule
關於上面命令的意義這裡先不講,後面會詳細講解這部分的內容。
多節點集群
大家可以根據實際需要,將多個工作節點加入到集群中。在我們測試的時候不建議一次添加多個節點,因為浪費錢,可以根據實驗需要加入。
訪問dashboard
在K8S集群中,安裝一個組件叫dashboard,我們可以通過它在瀏覽器中查看集群信息。
使用控制節點IP地址和端口32000既可在瀏覽器訪問,但是請注意,要使用火狐瀏覽器。
如下圖:
意使用https協議。如果出現上述頁面,點擊右邊的高級按鈕,如下圖:
點擊高級按鈕後,彈出下面內容,點擊接受風險並繼續,進入網頁:
選擇 Kubeconfig 選項,點擊跳過按鈕,進入網頁:
這就是dashboard的主頁,大家可以看到K8S的大部分信息。
下面我們使用令牌的方式登錄dashboard:
要使用令牌,必須現在環境中創建賬戶,請在控制節點根目錄下,創建yaml文件,名字為user.yaml。內容如下:
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: admin
annotations:
rbac.authorization.kubernetes.io/autoupdate: "true"
roleRef:
kind: ClusterRole
name: cluster-admin
apiGroup: rbac.authorization.k8s.io
subjects:
- kind: ServiceAccount
name: admin
namespace: kube-system
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin
namespace: kube-system
labels:
kubernetes.io/cluster-service: "true"
addonmanager.kubernetes.io/mode: Reconcile
如果有不懂yaml格式的,可以百度學習下。
運行上面的yaml文件,命令為:
kubectl create -f user.yaml
獲取admin-token 的secret 名字:
kubectl -n kube-system get secret|grep admin-token |awk '{print $1}'
比如:admin-token-2bb9p
接著根據上面查詢的結果獲取token 的值:
kubectl -n kube-system describe secret admin-token-2bb9p
操作截圖如下:
下面使用該token登錄dashboard,如下圖:
選擇令牌選項,輸入token信息,點擊登錄按鈕即可登入dashboard主頁。
訪問grafana
grafana可以查看集群的監控信息,使用控制節點IP地址和端口32001可以訪問,注意:使用http協議。
訪問主頁如下:
rafana展示了非常豐富的監控信息,包括CPU,內存,網絡等信息,大家可以瞭解下。
到這裡,K8S集群的安裝部署就講完了。
實驗
安裝一個3節點K8S集群:一個控制節點,兩個工作節點;
創建令牌並使用令牌訪問dashboard;
訪問grafana,查看監控信息;