本次安裝環境是Ubuntu16.04,其餘環境下,shell命令會有一些不一樣,但步驟應該大體相同,默認docker已經安裝完成html
下載安裝下列軟件node
因爲牆的緣由,獲取這些軟件包有些麻煩。通過上網查閱了一些資料,目前主要有兩種下載安裝這些軟件包。linux
其中一種是去k8s的github倉庫上下載源碼,解壓安裝。我最開始就是用的這種方式,可是以失敗了結,詳情見後面的問題總結。git
第二種是添加k8s國內軟件鏡像源,使用apt進行下載安裝。主要在/etc/apt/source.list文件附加下面的源github
# 我使用的是阿里的鏡像,若是你使用的其餘國內鏡像,請找對應的k8s鏡像源 deb https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial main
而後執行下列命令,安裝軟件。docker
# 我使用的是1.13.0-00版本,若是不清楚具體的版本號, # 可使用 apt-cache show 命令進行查詢 export K8S_VERSION=1.13.0-00 apt-get update # 更新軟件源 apt-get install kubelet=${K8S_VERSION} apt-get install kubeadm=${K8S_VERSION} apt-get install kubectl=${K8S_VERSION}
經過這種方式下載的軟件,已經被自動安裝好了,全部的環境已經被設置好了,能夠直接運行命令便可。
若是不熟悉kubelet和kubeadm的一些啓動參數,不建議下載可執行包,本身手動安裝。
經過apt進行安裝,能夠省下不少事情。我最終經過這種方式成功安裝好了三個軟件。shell
首先須要作一些配置,以及下載必要的鏡像。原本能夠直接執行kubeadm init命令初始化master節點的,可是因爲國內有牆,因此在執行kubeadm init命令前,須要作一些額外的工做,主要是下載鏡像。ubuntu
通常狀況下須要執行下列命令關閉虛擬內存[1],不然報以下錯誤
api
# 關閉swap。 # 可是系統重啓後,swap又會被啓動。 # 所以每次重啓節點,都要手動執行該命令關閉swap,不然kubelet會啓動失敗 # 能夠執行 sysctl -w vm.swappiness=0 完全關掉swap swapoff -a
因爲牆的緣由,在下載"pause"等docker鏡像時,會出現問題
解決辦法是從阿里docker鏡像網站上下載鏡像,而後修改鏡像的tag[3]
執行以下命令網絡
# $imageName指要下載鏡像的名稱,能夠經過 kubeadm config images list 命令獲取,但要去掉前面的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
執行kubeadm init命令,結果以下:
接下來配置kubectl(若是kubeadm init執行成功的,會顯示如何配置kubectl),主要執行下列命令
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config # 將文件權限設爲當前用戶
而後就能夠用kubectl執行一些命令測試是否成功運行(如 kubectl get nodes)。
因爲我是隻有一臺機器,因此只有一個master節點
執行kubeadm token create --print-join-command獲取加入命令,而後在節點上執行,便可加入集羣
爲k8s安裝插件,至關於在集羣中建立一些資源,主要使用kubectl apply -f config_file
爲了使Pod之間可以跨節點通訊,所以須要按照額外的虛擬二層網絡組件。因爲我目前只有一臺節點,沒法測試,因此暫未安裝
首先須要去github上k8s的倉庫下,找到release頁面,並在該頁面下尋找須要下載的版本,好比咱們目前的項目須要1.13版,那麼我就找到了https://github.com/kubernetes...這個頁面,而後不要去下載這個頁面裏的壓縮包,找到CHANGELOG-1.13,點擊進入真正的下載頁面。以下圖紅圈所示:
進入該頁面,找到Server區域,下載k8s服務端的軟件包(壓縮包裏包括了安裝k8s必須的軟件),這裏我下載的是kubernetes-server-linux-amd64.tar.gz軟件包。
下載完成後,切換到指望安裝的目錄,而後解壓軟件包。這裏我但願安裝到/usr/local目錄下,因此執行下列命令
cd /usr/local tar zxf kubernetes-server-linux-amd64.tar.gz
而後設置PATH,修改/etc/profile
export K8S_HOME=/usr/local/kubernetes export PATH=$PATH:$K8S_HOME/server/bin
而後重啓,或者執行source /etc/profile,以更新環境變量。
經過這種方式下載軟件包後,還須要作不少工做去安裝配置kubeadm和kubelet,很麻煩。
通過我無數次的嘗試,我最終以失敗了結,沒有用這種方式安裝配置成功。
主要的問題在於kubeadm和kubelet的啓動參數有點複雜,本身配置的話,須要對k8s有很深刻的認識,不然會按下葫蘆浮起瓢。
我本身在那設置的半天,systemd都用的很熟練了,依然沒有安裝成功。
當我把個人ubuntu虛擬機重啓後,發現k8s的組件沒有自動運行,而後我一個個的去啓動相應的容器,可是沒有用。
最後我發現是由於kubelet沒有啓動成功,而沒有啓動的成功的緣由是由於swap沒有關閉。
而且我還發現當在master節點上成功啓動kubelet後,其餘的組件,如apiserver也會隨之啓動。
[1] 只要用 kubeadm 小朋友都能部署 Kubernetes
[2] kubernetes基本安裝-k8s-3
[3] 基於阿里雲鏡像站安裝Kubernetes
[4] 用kubeadm在Ubuntu上快速構建Kubernetes測試集羣