kubeadm

Kubernetes 一鍵部署腳本(使用 docker 運行時)

# on master
export USE_MIRROR=true #國內用戶必須使用MIRROR
git clone https://github.com/feiskyer/ops
cd ops
kubernetes/install-kubernetes.sh
# 記住控制檯輸出的 TOEKN 和 MASTER 地址,在其他 Node 安裝時會用到

# on all nodes
git clone https://github.com/feiskyer/ops
cd ops
# Setup token and CIDR first.
# replace this with yours.
export TOKEN="xxxx"
export MASTER_IP="x.x.x.x"
export CONTAINER_CIDR="10.244.2.0/24"

# Setup and join the new node.
./kubernetes/add-node.sh

以下是詳細的 kubeadm 部署集群步驟。

初始化系統

所有機器都需要初始化 docker 和 kubelet。

ubuntu

CentOS

安裝 master

如果需要修改 kubernetes 服務的配置選項,則需要創建一個 kubeadm 配置文件,其格式爲

注意:JoinConfiguration 重命名自 v1alpha2 API 中的 NodeConfiguration,而 InitConfiguration 重命名自 v1alpha2 API 中的 MasterConfiguration。

然後,在初始化 master 的時候指定 kubeadm.yaml 的路徑:

配置 Network plugin

CNI bridge

flannel

注意:需要 kubeadm init 時設置 --pod-network-cidr=10.244.0.0/16

weave

calico

注意:需要 kubeadm init 時設置 --pod-network-cidr=192.168.0.0/16

添加 Node

跟 Master 一樣,添加 Node 的時候也可以自定義 Kubernetes 服務的選項,格式爲

在把 Node 加入集群的時候,指定 NodeConfiguration 配置文件的路徑

Cloud Provider

默認情況下,kubeadm 不包括 Cloud Provider 的配置,在 Azure 或者 AWS 等雲平臺上運行時,還需要配置 Cloud Provider。如

刪除安裝

動態升級

kubeadm v1.8 開始支持動態升級,升級步驟爲

  • 首先上傳 kubeadm 配置,如 kubeadm config upload from-flags [flags](使用命令行參數)或 kubeadm config upload from-file --config [config](使用配置文件)

  • 在 master 上檢查新版本 kubeadm upgrade plan, 當有新版本(如 v1.8.0)時,執行 kubeadm upgrade apply v1.8.0 升級控制平面

  • 手動 升級 CNI 插件(如果有新版本的話)

  • 添加自動證書回滾的 RBAC 策略 kubectl create clusterrolebinding kubeadm:node-autoapprove-certificate-rotation --clusterrole=system:certificates.k8s.io:certificatesigningrequests:selfnodeclient --group=system:nodes

  • 最後升級 kubelet

手動升級

kubeadm v1.7 以及以前的版本不支持動態升級,但可以手動升級。

升級 Master

假設你已經有一個使用 kubeadm 部署的 Kubernetes v1.6 集群,那麼升級到 v1.7 的方法爲:

  1. 升級安裝包 apt-get upgrade && apt-get update

  2. 重啓 kubelet systemctl restart kubelet

  3. 刪除 kube-proxy DaemonSet KUBECONFIG=/etc/kubernetes/admin.conf kubectl delete daemonset kube-proxy -n kube-system

  4. kubeadm init --skip-preflight-checks --kubernetes-version v1.7.1

  5. 更新 CNI 插件

升級 Node

  1. 升級安裝包 apt-get upgrade && apt-get update

  2. 重啓 kubelet systemctl restart kubelet

安全選項

默認情況下,kubeadm 會開啓 Node 客戶端證書的自動批准,如果不需要的話可以選擇關閉,關閉方法爲

關閉後,增加新的 Node 時,kubeadm join 會阻塞等待管理員手動批准,匹配方法爲

參考文檔

Last updated