天天看點

【K8S】之 下載下傳Kubeadm、node元件和指令行工具

文章目錄

  • ​​一、安裝kubeadm、kubelet和kubectl​​
  • ​​(1)添加kubernets apt源公鑰檔案​​
  • ​​(2)加入kubernetes的官方源​​
  • ​​(3)安裝工具​​
  • ​​二、核心元件鏡像下載下傳​​
  • ​​1. 先檢視kubeadm版本​​
  • ​​2. 再根據檢視其所需鏡像​​
  • ​​3. 拉取`K8S` 的包并打 tag(标簽)​​
  • ​​4. 初始化​​
  • ​​三、驗證master節點的引導結果​​
  • ​​四、配置 kubectl​​
  • ​​五、安裝叢集網絡(安裝 Pod 網絡)​​
  • ​​六、驗證​​
  • ​​七、參考資料​​

一、安裝kubeadm、kubelet和kubectl

(1)添加kubernets apt源公鑰檔案

有兩種方法:

  1. 直接執行下面指令(需要科學上網)

    ​curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add-​

  2. (無需科學上網)

    先:

    ​wget https://raw.githubusercontent.com/EagleChen/kubernetes_init/master/kube_apt_key.gpg​

再:

​cat kube_apt_key.gpg | apt-key add -​

【K8S】之 下載下傳Kubeadm、node元件和指令行工具

(2)加入kubernetes的官方源

在該檔案中,加入kubernetes的官方源

有兩種方法:

  1. 直接操作

    ​​

    ​vi /etc/apt/sources.list.d/kubernetes.list​

deb http://apt.kubernetes.io/ kubernetes-xenial main      
【K8S】之 下載下傳Kubeadm、node元件和指令行工具

可不可以,看包更新是否成功

更新本地包 ​

​apt-get update​

  1. 使用鏡像

    ​​

    ​echo "deb [arch=amd64] https://mirrors.ustc.edu.cn/kubernetes/apt kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list​

更新本地包 ​

​apt-get update​

  1. 使用 aliyun 源
apt-get update && apt-get install -y apt-transport-https
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add - 
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF      

(3)安裝工具

​apt-get install -y --allow-unauthenticated kubelet kubeadm kubectl​

​--allow-unauthenticated​

​ 可以試試不加。

檢視kuberadm 的目前版本

​​

​kubeadm version​

檢視kubectl 的目前版本

​​

​kubectl version​

檢視kubelet目前狀态

​systemctl status kubelet​

【K8S】之 下載下傳Kubeadm、node元件和指令行工具
【K8S】之 下載下傳Kubeadm、node元件和指令行工具

二、核心元件鏡像下載下傳

下載下傳方式:

  1. kubeadm​​預設從k8s.gcr.io​​​(老版本:​​gcr.io/google_containers)上下載下傳核心元件鏡像​​
  2. K8s 1.8之前可以通過KUBE_REPO_PREFIX 指定其他k8s鏡像倉庫字首
  3. 手工将鏡像下載下傳到本地主機

采用第三種(手工下載下傳鏡像)

1. 先檢視kubeadm版本

​kubeadm version​

2. 再根據檢視其所需鏡像

​kubeadm config images list --kubernetes-version v1.12.3​

【K8S】之 下載下傳Kubeadm、node元件和指令行工具

3. 拉取​

​K8S​

​ 的包并打 tag(标簽)

拉取鏡像

docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver-amd64:v1.12.3
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager-amd64:v1.12.3
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler-amd64:v1.12.3
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy-amd64:v1.12.3
  
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd-amd64:3.2.24
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.2.2      

打标簽

docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler-amd64:v1.12.3 k8s.gcr.io/kube-scheduler:v1.12.3
 docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager-amd64:v1.12.3 k8s.gcr.io/kube-controller-manager:v1.12.3
 docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver-amd64:v1.12.3 k8s.gcr.io/kube-apiserver:v1.12.3
 docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy-amd64:v1.12.3 k8s.gcr.io/kube-proxy:v1.12.3

docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1 k8s.gcr.io/pause:3.1
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.2.2 k8s.gcr.io/coredns:1.2.2
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/etcd-amd64:3.2.24 k8s.gcr.io/etcd:3.2.24      

可以删除多餘标簽

​​

​docker rmi $(docker images | grep "^registry.cn-hangzhou.aliyuncs.com")​

4. 初始化

​kubeadm init --apiserver-advertise-address 10.0.2.15 --pod-network-cidr=192.168.16.0/20​

​--apiserver-advertise-address​

​ 指明用 Master 的哪個 interface 與 Cluster 的其他節點通信。

​--pod-network-cidr=​

​ 指定 Pod 網絡的範圍。 Kubernetes 支援多種網絡方案,而且不同網絡方案對 --pod-network-cidr 有自己的要求

關閉Swap

​vi /etc/fstab​

​ 把最後的swap分區注釋掉

【K8S】之 下載下傳Kubeadm、node元件和指令行工具

然後重新開機此節點 ​

​reboot now​

【K8S】之 下載下傳Kubeadm、node元件和指令行工具
【K8S】之 下載下傳Kubeadm、node元件和指令行工具
kubeadm join 10.0.2.15:6443 --token r6yz3v.c35eyym0a7dpgz86 --discovery-token-ca-cert-hash sha256:93d721518f5a4d42a6df0bd5cbcfdbe9ed2f7935cf0efaaace241d10d5cf61f6      

三、驗證master節點的引導結果

  1. 設定環境變量

    ​​

    ​export KUBECONFIG=/etc/kubernetes/admin.conf​

檢視master 運作情況

​kubectl get pods -n kube-system -o wide​

【K8S】之 下載下傳Kubeadm、node元件和指令行工具

四、配置 kubectl

推薦用 Linux 普通使用者執行 kubectl (root 會有一些問題)

為 donald 使用者配置 kubectl:(donald 是 我這邊的使用者)

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

# 啟動 kubectl 自動補全功能
echo "source < (kubectl completion bash)"  >> ~/.bashrc      

五、安裝叢集網絡(安裝 Pod 網絡)

這裡選擇安裝 Weave Net

  1. 直接安裝(可能會出錯)

    ​kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"​

  2. 【K8S】之 下載下傳Kubeadm、node元件和指令行工具
  3. 間接

    ​curl -L "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')" > weave.yaml​

​vi weave.yaml​

添加環境變量

- name : IPALLOC_RANGE
  value: 192.168.16.0/20      
【K8S】之 下載下傳Kubeadm、node元件和指令行工具

​kubectl apply -f weave.yaml​

六、驗證

檢視master 運作情況

​​

​kubectl get pods -n kube-system -o wide​

【K8S】之 下載下傳Kubeadm、node元件和指令行工具

有個疑問?

為嘛我這沒有 kube-dns呢?

Kubernetes 1.11已經使用coredns替換了kube-dns

七、參考資料

  1. 每天5分鐘玩轉kubernetes
  2. ​​http://morecoder.com/article/1133743.html​​
  3. ​​https://ieevee.com/tech/2018/09/01/kubeadm.html#增加kubernetes-aliyun鏡像源​​
  4. ​​https://kubethink.com/posts/create-an-on-premises-cluster-in-china-v1-12/​​