高可用k8s集群搭建:初始化第一个master节点

  我们计划在以下节点各部署一个 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
    6
    cat > /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 节点
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    apiVersion: 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
    配置文件中指定 api.advertiseAddress 为 vip 使客户端通过 vip 来访问,指定 etcd.endpoints 使用我们已经搭建好的 etcd 集群存储集群数据,指定 imageRepository 使用我们自己的镜像仓库
  • 2 根据提示安装网络插件 calico
    1
    2
    3
    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    官网下载 yaml 描述文件,将名为 calico-etcd 的 DaemonSet 删除并修改名为 calico-config 的 ConfigMap,将 etcd_endpoints 值改为我们搭建好的集群http://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/