kubernetes安裝(國內環境)

既然打算學習kubernetes,那麼首先要做的就是如何安裝k8s。由於k8s的很多核心原理都是基於Linux,所以如果打算學習kubernetes,在Linux上面安裝kubernetes是一個很好的建議。所以接下來就介紹如何在Linux上面安裝kubernetes。

kubernetes的國外安裝其實非常簡單,國內安裝的主要問題在於kubernetes部件所需的官方鏡像在 gcr.io(Google Cloud Container Registry)上,很不辛,這個網站被牆了。所以解決了這個問題,國內環境的安裝也就簡單了。

安裝環境

OS : Ubuntu 16.04

網路 : 國內網路,無VPN

目標 : 單節點集群安裝

Kubernetes需要安裝的部件如下:

最為簡單的方式是使用官方的快速安裝工具kubeadm,其中Kubeadm, Kubelet和kube-cni可以直接從ubuntu源中下載,剩下的部件有相應的docker鏡像,所以可以直接通過kubeadm init來獲取。由於需要獲取docker鏡像,所以在此之前,還要安裝docker。

總結下來,安裝步驟如下:

  1. 添加相應的源
  2. 下載Docker & Kubeadm & Kubelet & Kubernetes-cni
  3. 關閉swap
  4. 獲取鏡像列表,以便從國內獲取
  5. 初始化環境
  6. 配置授權信息, 以便可以便捷訪問kube-apiserver
  7. 添加網路插件
  8. 單節點,設置master節點也可以運行Pod(默認策略是master節點不運行)
  9. 部署其他插件

下面將分步說明:

添加相應的源 由於需要下載Kubeadm,Kubelet和Kubernetes-cni,多以需要添加源。國外的直接添加google源,具體可以網上搜索。國內的推薦中科大的源,命令如下:

bash cat <<EOF > /etc/apt/sources.list.d/kubernetes.list deb http://mirrors.ustc.edu.cn/kubernetes/apt kubernetes-xenial main EOF

下載Docker & Kubeadm & Kubelet & Kubernetes-cni

apt-get install -y docker.io kubelet kubernetes-cni=0.6.0-00 kubeadm

添加源之後,使用 apt-get update 命令會出現錯誤,原因是缺少相應的key,可以通過下面命令添加(E084DAB9 為上面報錯的key後8位):

gpg --keyserver keyserver.ubuntu.com --recv-keys E084DAB9
gpg --export --armor E084DAB9 | sudo apt-key add -

關閉swap

如果不關閉kubernetes運行會出現錯誤, 及時安裝成功了,node重啟後也會出現kubernetes server運行錯誤。

sudo swapoff -a #暫時關閉,永久關閉可以上網查詢

獲取鏡像列表

由於官方鏡像地址被牆,所以我們需要首先獲取所需鏡像以及它們的版本。然後從國內鏡像站獲取。

kubeadm config images list

獲取鏡像列表後可以通過下面的腳本從阿里雲獲取:

images=(
kube-apiserver:v1.12.1
kube-controller-manager:v1.12.1
kube-scheduler:v1.12.1
kube-proxy:v1.12.1
pause:3.1
etcd:3.2.24
coredns:1.2.2
)

for imageName in ${images[@]} ; do
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName
done

初始化環境

這個就很簡單了,只需要簡單的一個命令:

kubeadm init

配置授權信息

所需的命令在init成功後也會有提示,主要是為了保存相關的配置信息在用戶目錄下,這樣不用每次都輸入相關的認證信息。

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

添加網路插件

上面安裝成功後如果通過查詢kube-system下Pod的運行情況,會放下和網路相關的Pod都處於Pending的狀態,這是因為缺少相關的網路插件,而網路插件有很多個,可以選擇自己需要的。

安裝參考: kubernetes.feisky.xyz/b

單節點,設置master節點也可以運行Pod

kubernetes官方默認策略是worker節點運行Pod,master節點不運行Pod。如果只是為了開發或者其他目的而需要部署單節點集群,可以通過以下的命令設置:

kubectl taint nodes --all node-role.kubernetes.io/master-

部署其他插件

由於很多官方的插件所需鏡像也在 gcr.io 上,所以遇到這種情況,可以通過下面的方式獲取:

將yaml文件中鏡像地址的k8s.gcr.io替換成registry.cn-hangzhou.aliyuncs.com/google_containers

這些都是自己學習過程中的總結,所以有任何錯誤的地方,歡迎指正。附贈一份自己畫的步驟圖:

國內環境安裝k8s


推薦閱讀:

TAG:環境 | Kubernetes | 科技 |