我们计划在以下节点各部署一个 k8s master,三个节点共用一个vip(192.168.17.100)
- master1 192.168.17.101
- master2 192.168.17.102
- master3 192.168.17.103
准备镜像
参考https://kubernetes.io/docs/reference/generated/kubeadm/#custom-images将 k8s 使用到的镜像下载到自己的镜像仓库,并修改 kubelet 配置以使用自定义镜像。1
2
3
4
5
6cat > /etc/systemd/system/kubelet.service.d/20-pod-infra-image.conf <<EOF
[Service]
Environment="KUBELET_EXTRA_ARGS=--pod-infra-container-image=<your-image>"
EOF
systemctl daemon-reload
systemctl restart kubelet初始化 master 节点
参考官方的安装教程在 192.168.17.101 上部署第一个 master 节点,这里初始化时使用了一个配置文件 kube-init.conf - 1 执行
kubeadm init --config=kube-init.conf
初始化 master 节点配置文件中指定 api.advertiseAddress 为 vip 使客户端通过 vip 来访问,指定 etcd.endpoints 使用我们已经搭建好的 etcd 集群存储集群数据,指定 imageRepository 使用我们自己的镜像仓库1
2
3
4
5
6
7
8
9
10
11
12apiVersion: kubeadm.k8s.io/v1alpha1
kind: MasterConfiguration
kubernetesVersion: v1.8.4
api:
advertiseAddress: 192.168.17.100
etcd:
endpoints:
- http://192.168.17.101:2379
- http://192.168.17.102:2379
- http://192.168.17.103:2379
imageRepository: myrepo.com/google_containers
tokenTTL: 0s - 2 根据提示安装网络插件 calico 从官网下载 yaml 描述文件,将名为 calico-etcd 的 DaemonSet 删除并修改名为 calico-config 的 ConfigMap,将 etcd_endpoints 值改为我们搭建好的集群
1
2
3mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/confighttp://192.168.17.101:2379,http://192.168.17.102:2379,http://192.168.17.103:2379
,执行kubectl create -f calico.yaml
安装网络插件。 - 3 安装 dashboard 及 heapster 插件
直接参考官方教程即可
安装 dashboard https://github.com/kubernetes/dashboard#kubernetes-dashboard
安装 heapster https://github.com/kubernetes/heapster/