歡迎訪問博客原文
本文分享 K8s 單機版本 v1.16.3 安裝步驟,安裝過程20分鐘以內。
K8s最新 Release 版本爲 v1.16.4
,v1.18.0
還是 alpha 版本。
資源需求
- Master 節點:2 核 2G,本次採用騰訊雲按流量計費的 2核4G 服務器,帶寬20M用於下載資源。
- Master 節點局域網IP:172.17.0.7
- OS:CentOS 7.6 64位
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-MRkuPZP2-1578838895246)(https://imgcdn.chenyongjun.vip/2020/01/12/3.png)]
關於 Kubespray
Kubespray 在 GitHub 描述是:“Deploy a Production Ready Kubernetes Cluster”。
Google 的開源工具,用於部署生產級的 K8s 集羣。
在騰訊雲購買了一臺 美國硅谷ECS,使用 kubespray 安裝K8s,耗時約10分鐘左右,速度很快,這是國外開發者的體驗。
在晚上跑個Job,將所需的鏡像、工具上傳到國內,後續會繼續更新新版本的資源,詳見最後的附錄。
安裝步驟
基礎準備
這一小節內容在master節點、普通節點都需要執行,本次僅演示master節點。
- 關閉 SELinux 並修改配置文件爲 disabled
setenforce 0
sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
- 關閉防火牆
systemctl disable firewalld
systemctl stop firewalld
- 安裝必要軟件
EPEL (Extra Packages for Enterprise Linux):自動配置yum的軟件倉庫
ansible:自動化運維工具
Jinja2:基於python的模板引擎
yum install -y epel-release ansible
yum install -y python36 python36-devel python36-pip
pip3 install --upgrade Jinja2
處理密鑰
生成ssh公私鑰對,不要設置密碼,直接三次回車即可。僅需在 master 節點生成,普通節點不用處理。
ssh-keygen
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-1sNaRS9f-1578838895247)(https://imgcdn.chenyongjun.vip/2020/01/12/5.png)]
將密鑰分發給節點建立SSH通道,此處master也作爲普通節點需要分發。若添加新節點也需執行該步驟。
ssh-copy-id [email protected]
處理 kubespray
下載 kubespray
wget https://github.com/kubernetes-sigs/kubespray/archive/v2.12.0.tar.gz
tar -zxvf v2.12.0.tar.gz
mv kubespray-2.12.0 kubespray
安裝依賴
以下所有命令均在 kubespray
目錄執行。
cd kubespray
pip3.6 install -r requirements.txt
生成集羣host文件
sample 是樣例配置,拷貝出一個新的 mycluster。
cp -rfp inventory/sample inventory/mycluster
通過 Ansible invendor builder 工具, 自動生成 ansible inventory file,IPS中有多個IP(多個節點)時以空格隔開。
declare -a IPS=(172.17.0.7)
CONFIG_FILE=inventory/mycluster/hosts.yaml python3 contrib/inventory_builder/inventory.py ${IPS[@]}
自動生成的 yaml 配置文件如下,將其中的 node1 節點名稱改爲 master,這樣後續普通節點可從 node1 開始命名。
all:
hosts:
node1:
ansible_host: 172.17.0.7
ip: 172.17.0.7
access_ip: 172.17.0.7
children:
kube-master:
hosts:
node1:
kube-node:
hosts:
node1:
etcd:
hosts:
node1:
k8s-cluster:
children:
kube-master:
kube-node:
calico-rr:
hosts: {}
修改資源地址
安裝時默認從國外下載資源,我已將資源上傳到騰訊雲,直接從騰訊雲下載即可,需修改下配置。
- 修改
inventory/mycluster/group_vars/k8s-cluster/k8s-cluster.yml
版本、鏡像下載地址、鏡像cheksum都在該文件中。
原內容:kube_image_repo: "{{ gcr_image_repo }}/google-containers"
修改爲:kube_image_repo: "ccr.ccs.tencentyun.com/easyk8s"
- 修改
roles/download/defaults/main.yml
下載的資源配置均在其中,下面例舉幾個:
kubelet_download_url: "https://storage.googleapis.com/kubernetes-release/release/{{ kube_version }}/bin/linux/{{ image_arch }}/kubelet"
...
etcd_image_repo: "{{ quay_image_repo }}/coreos/etcd"
etcd_image_repo: "{{ quay_image_repo }}/etcd"
需要修改的配置有:
- kubelet_download_url、kubectl_download_url、kubeadm_download_url、etcd_download_url、cni_download_url、calicoctl_download_url
- etcd_image_repo、calico_node_image_repo、calico_cni_image_repo、calico_policy_image_repo、coredns_image_repo、dashboard_image_repo
如想手工調整,可參考如下例子:
原內容:etcd_image_repo: "{{ quay_image_repo }}/coreos/etcd"
修改爲:etcd_image_repo: "{{ quay_image_repo }}/etcd"
主要是去掉namespace,騰訊雲namespace只能有一段。
我已調整好,可直接執行下面命令獲取配置:
wget https://k8s-1256695615.cos.ap-shanghai.myqcloud.com/v1.16.3/main.yml
mv main.yml roles/download/defaults/main.yml
wget https://k8s-1256695615.cos.ap-shanghai.myqcloud.com/v1.16.3/download_file.yml
mv download_file.yml roles/download/tasks/download_file.yml
download_file.yml 主要加了日誌,例如下面拼接了 “{{ download.url }}”。
- block:
- name: download_file | Starting download of file | "{{ download.url }}"
安裝
上述配置OK後,直接安裝即可。從騰訊雲下載比較快,大約十幾分鍾即可安裝完成。
ansible-playbook -i inventory/mycluster/hosts.yaml cluster.yml -b -v --private-key=~/.ssh/id_rsa
安裝完後,日誌會打印所有時間信息,雖然不太準。
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-8k7gA8sn-1578838895248)(https://imgcdn.chenyongjun.vip/2020/01/12/6.png)]
安裝好後看看集羣基礎信息。
查看節點信息
[root@master ~]# kubectl get no
NAME STATUS ROLES AGE VERSION
master Ready master 10h v1.16.3
查看集羣信息
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-nMXuf1Le-1578838895248)(https://imgcdn.chenyongjun.vip/2020/01/12/7.png)]
查看所有Pod信息
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-8EN9qMrz-1578838895249)(https://imgcdn.chenyongjun.vip/2020/01/12/8.png)]
至此,安裝完畢,消耗時間在20分鐘內。
小結
kubespray 很贊,安裝非常簡單,體驗一下就好。
如果使用雲服務,直接購買容器服務最方便,提供了K8s各類對象管理控制檯。
如果內網自建,就需要自行管理集羣。
附錄
鏡像資源
所需鏡像如下:
gcr.io/google-containers/k8s-dns-node-cache
gcr.io/google-containers/kube-proxy
gcr.io/google-containers/kube-apiserver
gcr.io/google-containers/kube-controller-manager
gcr.io/google-containers/kube-scheduler
gcr.io/google-containers/cluster-proportional-autoscaler-amd64
gcr.io/google_containers/kubernetes-dashboard-amd64
gcr.io/google-containers/pause
gcr.io/google_containers/pause-amd64
coredns/coredns
calico/node
calico/cni
calico/kube-controllers
quay.io/coreos/etcd
在騰訊雲容器服務的公有鏡像中搜 easyk8s。
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-t7Eb7QLm-1578838895249)(https://imgcdn.chenyongjun.vip/2020/01/12/4.png)]
可一次拉取下來。
docker pull ccr.ccs.tencentyun.com/easyk8s/k8s-dns-node-cache:1.15.8
docker pull ccr.ccs.tencentyun.com/easyk8s/kube-proxy:v1.16.3
docker pull ccr.ccs.tencentyun.com/easyk8s/kube-apiserver:v1.16.3
docker pull ccr.ccs.tencentyun.com/easyk8s/kube-controller-manager:v1.16.3
docker pull ccr.ccs.tencentyun.com/easyk8s/kube-scheduler:v1.16.3
docker pull ccr.ccs.tencentyun.com/easyk8s/coredns:1.6.0
docker pull ccr.ccs.tencentyun.com/easyk8s/node:v3.7.3
docker pull ccr.ccs.tencentyun.com/easyk8s/cni:v3.7.3
docker pull ccr.ccs.tencentyun.com/easyk8s/kube-controllers:v3.7.3
docker pull ccr.ccs.tencentyun.com/easyk8s/cluster-proportional-autoscaler-amd64:1.6.0
docker pull ccr.ccs.tencentyun.com/easyk8s/kubernetes-dashboard-amd64:v1.10.1
docker pull ccr.ccs.tencentyun.com/easyk8s/etcd:v3.3.10
docker pull ccr.ccs.tencentyun.com/easyk8s/pause:3.1
docker pull ccr.ccs.tencentyun.com/easyk8s/pause-amd64:3.1
工具
包含K8s安裝及使用所需的:kubelet、kubectl、kubeadm、calicoctl、cni-plugins。
下載地址如下:
# kubelet
https://k8s-1256695615.cos.ap-shanghai.myqcloud.com/v1.16.3/kubelet-v1.16.3-amd64
# kubectl
https://k8s-1256695615.cos.ap-shanghai.myqcloud.com/v1.16.3/kubectl-v1.16.3-amd64
# kubeadm
https://k8s-1256695615.cos.ap-shanghai.myqcloud.com/v1.16.3/kubeadm-v1.16.3-amd64
# cni-plugins
https://k8s-1256695615.cos.ap-shanghai.myqcloud.com/v1.16.3/cni-plugins-linux-amd64-v0.8.1.tgz
# calicoctl
https://k8s-1256695615.cos.ap-shanghai.myqcloud.com/v1.16.3/calicoctl
參考資料
歡迎關注公衆號 [陳一樂],一起學習,一起成長