前言
k8s部署的方式多种多样,除去各家云厂商提供的工具,在bare metal中,也有二进制部署和一系列的自动化部署工具(kubeadm,kubespary,rke等)。具体二进制部署大家可以参考宋总的系列文章。而rke是由rancher提供的工具,由于刚刚出来,有不少问题,我亲测centos上安装失败,ubuntu上可以成功。而kubeadm官方提供的自动化部署工具,虽然官方暂时不建议用于生产,但是其实安装过程中改造一下就可以部署一个高可用的集群,另外官方在blog中申明会在2018年release。而且kubeadm紧跟k8s新版本发布。
集群概述
整个集群包括4大部分
- etcd集群(3节点)
- keepalived
- k8s master(3节点)
- k8s node
etcd集群:主要作为kubernetes集群和calico网络的数据存储。本安装pod网络采用calico。
keepalived:由于kube-apiserver可横向扩展,实现高可用,所以主要通过keepalived设置的vip作为统一的入口。
addon:准备采用coredns替换skydns。
集群组件版本
- docker 1.12.6
- kubenetes1.9
- etcd 3.2.11
- coredns 1.0
- calico 2.6
- nginx-ingress 0.9
- keepalived 1.3.9
集群机器
- etcd-host1 172.16.120.151
- etcd-host2 172.16.120.152
- etcd-host3 172.16.120.153
- master-host1 172.16.120.154
- master-host2 172.16.120.155
- master-host3 172.16.120.156
- node-host1 172.16.120.157
- 主keepalived 172.16.120.154
- 从keepalived 172.16.120.155
- 从keepalived 172.16.120.156
- VIP 172.16.120.200
后续计划
- 用kube-router替换kube-proxy。因为calico网络策略和kube-proxy的ipvs模式有冲突,一直找不到解决办法。而kube-router启用service proxy模式,该模式基于IPVS/LVS。
- 用contour替换nginx ingress,contour基于 Envoy proxy实现。