Kubeadm 安装 Kubernetes 1.6.2

因为一些莫可名状的原因,国内网络使用 Kubeadm 颇有难度,这里大概说一下过程中的一些坑。

主体流程遵循官网指南:https://kubernetes.io/docs/getting-started-guides/kubeadm/

1/4 准备工作

这里用包管理的方式安装 kubeadm、Docker 等组件。需要注意一点点的是,如果用的非 Root 用户,要注意 sudo 的时候的环境代理设置问题。或者干脆在 apt/yum 的配置文件中写入代理服务器。

另外这里安装 Docker 之后,注意给 Docker 配置代理。或者可以直接想法子搞到下面列表中的镜像,并导入 Docker 之中:

镜像准备

下面提到的镜像基于目前的 1.6.2 版本,每次更新都会有不同。

Image Ver Component
gcr.io/google_containers/kube-proxy-amd64 v1.6.2 Kubernetes
gcr.io/google_containers/kube-controller-manager-amd64 v1.6.2 Kubernetes
gcr.io/google_containers/kube-apiserver-amd64 v1.6.2 Kubernetes
gcr.io/google_containers/kube-scheduler-amd64 v1.6.2 Kubernetes
gcr.io/google_containers/etcd-amd64 3.0.17 Kubernetes
gcr.io/google_containers/pause-amd64 3.0 Kubernetes
gcr.io/google_containers/k8s-dns-sidecar-amd64 1.14.1 DNS
gcr.io/google_containers/k8s-dns-kube-dns-amd64 1.14.1 DNS
gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64 1.14.1 DNS
gcr.io/google_containers/etcd 2.2.1 Calico
quay.io/calico/node v1.1.3 Calico
quay.io/calico/cni v1.8.0 Calico
quay.io/calico/kube-policy-controller v0.5.4 Calico

2/4 Master 初始化

kubeadm init

这里的几个问题:

  • 如果准备采用 flannel 插件,需要 -pod-network-cidr 10.244.0.0/16 参数
  • Ubuntu 下可能会出现无限等待 Node 加入的情况,可能的原因是 /etc/resolv.conf 中有关于 localhost 的 search 记录,删掉这行就能解决。
  • 如果准备采用 Calico 插件,那么要注意 Calico 的 YAML 中的 ip pool 跟集群设置一致。
  • 如果不是预先准备好的备份,过程会比较长,耐心。。

Init 成功之后会出一堆文本信息,其中包含几点内容,最好保存下来:

  • 自动生成的 kubectl config 文件,可以复制到 ~/.kube/config 中作为缺省 kubectl 使用。
  • 把新节点加入集群的方法。

另外这里还有个提示——没有安装 Pod Network。

3/4 安装 Pod Network

这一步很重要,所有的应用包括 Kube DNS 在内,都依赖于此。

如上文所示,准备使用的是 Calico,这里值得注意的一坑是,不同版本的 Kubernetes 会有不同的 Calico 安装,1.6 版本应该使用的是:kubectl apply -f http://docs.projectcalico.org/v2.1/getting-started/kubernetes/installation/hosted/kubeadm/1.6/calico.yaml

http://docs.projectcalico.org/v2.1/getting-started/kubernetes/installation/hosted/kubeadm/ 还有一些其他的安装方式可以参考。

Calico 的注意事项

  • 他的 ETCD 服务器要求装在 Master 所在的 Node 上,使用的是 nodeSelector 的方式,选择标签:node-role.kubernetes.io/master: ""
  • 上文提到的 pod network cidr 和 ip pool 的一致性问题
  • --service-cidr 和 IP Pool 不能重叠

4/4 加入节点

在其他 Node 上做好准备工作之后,用kubeadm init命令中提到的kubeadmin join方法加入集群。


上一篇:Create you course K8s cluster-创建课程所需的k8s集群


下一篇:搭建K8S高可用集群