kubernetes集羣——部署kubelet

kubernetes集羣——部署kubelet

環境:
CentOS-7-1611-x86_64
docker:18.03.1-ce
kubernetes版本:1.11.2

一、下載kubernetes
根據操作系統選擇正確的kubernetes二進制文件下載,CentOS-7.3.1611-x86_64需要下載kubernetes-server-linux-amd64.tar.gz文件,下載地址:https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.11.md#downloads-for-v1112。kubernetes有client、server、node二進制文件包,server包中就包含了kubernetes的所有文件(包括client和node包中的文件),所以只需下載server包即可。

二、kubelet安裝及配置
1、解壓kubernetes-server-linux-amd64.tar.gz文件。本文將壓縮包裏的kubernetes目錄解壓到了/usr/local/lib目錄下,並重命名爲kubernetes-1.11.2,本文將此目錄(/usr/local/lib/kubernetes-1.11.2)作爲kubernetes的工作目錄。kubelet就在/usr/local/lib/kubernetes-1.11.2/server/bin目錄下。
這裏寫圖片描述

2、創建並編輯/usr/lib/systemd/system/kubelet.service文件,文件內容如下:

[Unit]
Description=Kubelet Server
Documentation=https://kubernetes.io
After=network-online.target
Wants=network-online.target

[Service]
Type=notify
ExecStart=/usr/local/lib/kubernetes-1.11.2/server/bin/kubelet \
          --logtostderr=false \
          --log-dir=/usr/local/lib/kubernetes-1.11.2/logs/kubelet \
          --fail-swap-on=false \
          --pod-manifest-path=/usr/local/lib/kubernetes-1.11.2/config/kubelet/manifest \
          --pod-infra-container-image=192.168.31.11:5000/pod-infrastructure:latest-20180809 \
          --hostname-override=192.168.31.11
Restart=on-failure

[Install]
WantedBy=multi-user.target

kubelet啓動參數說明:(1)“logtostderr”決定kubelet的日誌信息輸出到哪裏,默認值爲true,表示輸出到系統的標準輸出,即“/var/log/messages”文件中;若值爲false,則表示將日誌信息輸出到日誌文件中,日誌文件在參數“log-dir”設置的目錄中;若“logtostderr”設置爲false,而又沒有設置“log-dir”參數,則不知道日誌信息輸出到了哪裏。(2)kubelet是不允許使用SWAP的,要啓動kubelet,需要將SWAP關閉。如果不想關閉SWAP,又想正常啓動kubelet,需要將“fail-swap-on”參數設置爲false。(3)參數“pod-manifest-path”設置了pod描述文件所在的目錄,kubelet會定時輪詢這個目錄下的pod描述文件,根據文件調整(增刪改)docker中的容器。(4)參數“pod-infra-container-image”指定了基礎鏡像,創建每個pod時,都必需用基礎鏡像啓動一個容器(Pause容器)。國內可用的基礎鏡像有:registry.access.redhat.com/rhel7/pod-infrastructure:latest,本文將此鏡像上傳到了docker私有鏡像倉庫(docker私有鏡像倉庫的搭建及使用,請參考本博客另一篇文章《centos7搭建及使用DOCKER私有倉庫》)。(4)“hostname-override”設置了此kubelet節點名稱,如果爲空,則使用主機名作爲此kubelet節點名。(5)更多kubelet參數說明請參閱官網:https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/

三、kubelet的安裝驗證
1、創建並編輯pod描述文件“/usr/local/lib/kubernetes-1.11.2/config/kubelet/manifest/nginx-pod.yaml”,內容如下:

apiVersion: v1
kind: Pod
metadata:
  name: nginx-server
spec:
  containers:
  - name: nginx
    image: 192.168.31.11:5000/nginx:latest-20180809
    ports:
    - containerPort: 80
      hostPort: 80

說明:pod描述文件支持yaml和json兩種格式,網上的教程大部分是json格式,本文使用yaml格式。上述是一個極簡的pod描述文件,這個文件啓動的pod只有一個nginx容器(Pause容器是必需啓動的,無需在文件描述),這個容器開放了80端口,並將其映射到宿主機的80端口。pod使用的鏡像是從網上下載再上傳到私有鏡像倉庫的docker官網的nginx鏡像。更多yaml文件格式的說明,請參閱:https://www.cnblogs.com/FRESHMANS/p/8444214.html

2、啓動kubelet,觀察kubelet狀態及docker的容器狀態。

systemctl start kubelet.service
systemctl status kubelet.service

可以看到kubelet運行正常,如下圖:
這裏寫圖片描述
查看docker容器狀態,可以看到dock啓動了兩個容器,一個就是每個pod都需要的基礎容器,另外一個就是我們在pod描述文件中配置的nginx容器,查看服務器端口,可以看到80端口已經處於偵聽狀態。如下圖:
這裏寫圖片描述
而一旦我們刪除pod描述文件“/usr/local/lib/kubernetes-1.11.2/config/kubelet/manifest/nginx-pod.yaml”,docker中的這兩個容器就會消失。
至此,一個最簡單的kubelet就部署完成了,本文以外的更多應用場景,請讀者自行嘗試。

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