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 会阻塞等待管理员手动批准,匹配方法为

参考文档

最后更新于