K8S動手教程1:安裝指南

內容摘要

安裝K8S集群

訪問dashboard

訪問grafana

K8S是一個集群,包括多個節點,節點可以為:控制節點和工作節點,控制節點運行K8S系統組件,工作節點主要用於運行應用容器,當然也會運行部分系統組件。本指導將會指導大家安裝1個節點和多個節點的測試環境,用於實驗和學習。

安裝Docker

在K8S集群每個節點上安裝Docker,初始化容器環境。安裝方法請參考Docker動手教程第1章的相關內容。最好的方法是使用自定義容器鏡像在阿里雲創建虛擬機,這樣就不需要在每個節點上安裝Docker環境了。

安裝完成後,在每個節點上檢查容器環境是否正常,運行命令:

systemctl status docker

K8S動手教程1:安裝指南

如果出現上圖狀態,說明Docker運行正常。

K8S安裝的過程很複雜,需要很多鏡像,在國內由於網絡的原因,一些組件下載失敗,因此我製作了離線安裝文件,可以快速簡潔地構建測試環境。

獲取離線安裝文件

我將離線安裝文件和容器環境做了一個自定義鏡像,我可以在阿里雲上共享給大家,不過需要大家提供自己的aliyunUid,請參考下圖:

K8S動手教程1:安裝指南

這是共享鏡像的操作對話框。

如何獲取aliyunUid?

登錄阿里雲控制檯頁面後,如下圖:

K8S動手教程1:安裝指南

請點擊右上角的頭像,進入下面的頁面:

K8S動手教程1:安裝指南

可以看到“賬號ID”這一行,這就是aliyunUid了。

大家將自己的aliyunUid通過私信傳給我,我共享我的自定義鏡像給大家,以後大家就可以基於該鏡像創建容器環境和K8S測試環境。

當你使用我製作的鏡像構建環境時,你會發現原來可以這樣簡單!

當大家基於我的鏡像創建虛擬機後,在根目錄下可以看到如下壓縮文件:

K8S動手教程1:安裝指南

壓縮文件名為:kube1.10.3min.tar.gz,這是kubernetes 1.10版本的離線安裝壓縮包。

初始化

在集群所有節點都放入離線安裝壓縮文件的前提下,初始化所有節點。

首先,請大家解壓所有節點上的離線安裝壓縮文件,命令為:

tar -zxvf kube1.10.3min.tar.gz

解壓可能會持續一會兒,因為這個壓縮包有幾百兆,過程如下圖:

K8S動手教程1:安裝指南

接下來運行初始化腳本,請大家使用 cd 命令進入 kube1.10.3 解壓文件下,如下圖:

K8S動手教程1:安裝指南

在文件夾下有shell目錄,進入其中,可以看到兩個腳本文件:init.sh,master.sh。

執行 init.sh 腳本,命令為:

sh init.sh

執行過程會持續幾分鐘,請大家耐心等待,請看下面兩個截圖:

K8S動手教程1:安裝指南

可以看出,該腳本在配置參數。

K8S動手教程1:安裝指南

這是在加載離線的K8S系統使用鏡像。

安裝控制節點

初始化成功以後,大家可以安裝主節點了。主節點只能有一個,當然生產環境下可以有多個,我們的測試環境用一個就可以了。主節點主要用於運行K8S系統組件。安裝方法如下:

和init.sh同級的目錄下,有master.sh腳本,使用如下命令運行該腳本:

sh master.sh

K8S動手教程1:安裝指南

這是運行過程的部分截圖,紅色矩形框的內容提示瞭如何將其他節點加入到K8S集群中,方法是在其他節點運行該命令:

kubeadm join 172.18.151.255:6443 --token ufhjbp.4s1m6gkaivr93h7k --discovery-token-ca-cert-hash sha256:39e05aad645bac83024d581bd33b1e27d35e050bc54bbac723f46ea65dd4f035

下面顯示了創建了哪些組件,這裡大家不用深究這些組件的具體功能。

這樣,主節點就安裝成功了。

下面簡單驗證下集群是否正常,運行如下命令.

kubectl get nodes

K8S動手教程1:安裝指南

大家可以看到只有一行數據,因為該命令查詢的是集群當中有哪些節點,目前只有1個。下面分別解釋下各列的內容:NAME:主機名;

STATUS:狀態為Ready表示該節點是正常的;

ROLES:角色,該節點是master,管理節點,也可以叫控制節點;

AGE:年齡,即創建多長時間;

VERSION:K8S版本,現在版本是v1.10.3;

添加工作節點

工作節點能夠加入的前提是:安裝Docker環境,運行過init.sh腳本。

在工作節點執行上面的命令即可加入到集群中,如下圖:

K8S動手教程1:安裝指南

如果出現:"This node has joined the cluster" 字樣表示添加成功。

使用的是 kubeadm join 命令,kubeadm 只一個K8S安裝程序,大家感興趣的話可以去百度學習下,這裡不深究。

添加後,在控制節點上查詢下,命令為: kubectl get nodes,結果如下圖:

K8S動手教程1:安裝指南

可以看到紅色的一行,即是剛才添加的節點信息,注意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既可在瀏覽器訪問,但是請注意,要使用火狐瀏覽器。

如下圖:

K8S動手教程1:安裝指南

意使用https協議。如果出現上述頁面,點擊右邊的高級按鈕,如下圖:

K8S動手教程1:安裝指南

點擊高級按鈕後,彈出下面內容,點擊接受風險並繼續,進入網頁:

K8S動手教程1:安裝指南

選擇 Kubeconfig 選項,點擊跳過按鈕,進入網頁:

K8S動手教程1:安裝指南

這就是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

操作截圖如下:

K8S動手教程1:安裝指南

下面使用該token登錄dashboard,如下圖:

K8S動手教程1:安裝指南

選擇令牌選項,輸入token信息,點擊登錄按鈕即可登入dashboard主頁。

訪問grafana

grafana可以查看集群的監控信息,使用控制節點IP地址和端口32001可以訪問,注意:使用http協議。

訪問主頁如下:

K8S動手教程1:安裝指南

rafana展示了非常豐富的監控信息,包括CPU,內存,網絡等信息,大家可以瞭解下。

到這裡,K8S集群的安裝部署就講完了。

實驗

安裝一個3節點K8S集群:一個控制節點,兩個工作節點;

創建令牌並使用令牌訪問dashboard;

訪問grafana,查看監控信息;


分享到:


相關文章: