kubeasz/docs/setup/kubeasz_on_public_cloud.md

3.2 KiB
Raw Blame History

公有云上部署 kubeasz

在公有云上使用kubeasz部署k8s集群需要注意以下几点:

  1. 注意虚机的安全组规则配置,一般集群内部节点之间端口放开即可;

  2. 部分k8s网络组件受限,一般可以选择 flannel (vxlan模式)、calico开启ipinip;

  3. 无法自由创建lb节点一般使用云负载均衡内网四层TCP负载模式;

  4. 部分云厂商负载均衡使用四层负载模式时不支持添加进后端云服务器池的 ECS 既作为 Real Server又作为客户端向所在的 SLB 实例发送请求;因此注意不要在 master节点执行 kubectl会出现时通时不通的情况

在公有云上部署多主多节点集群

  • 单节点和单主多节点集群的节点规划与自有环境没有差异

  • 多主多节点集群节点规划不需要lb节点

其他在公有云上的安装步骤与自有环境没有差异,节点规划可以参考 example/hosts.cloud.example如下避免deploy节点同时作为master节点

# 集群部署节点一般为运行ansible 脚本的节点
# 变量 NTP_ENABLED (=yes/no) 设置集群是否安装 chrony 时间同步, 公有云上虚机不需要
[deploy]
10.1.0.160 NTP_ENABLED=no

# etcd集群请提供如下NODE_NAME注意etcd集群必须是1,3,5,7...奇数个节点
[etcd]
10.1.0.160 NODE_NAME=etcd1
10.1.0.161 NODE_NAME=etcd2
10.1.0.162 NODE_NAME=etcd3

[kube-master]
10.1.0.161
10.1.0.162

# 公有云上一般都有提供负载均衡产品且不允许自己创建lb 节点留空,仅保留组名
[lb]

[kube-node]
10.1.0.160
10.1.0.163

# 参数 NEW_INSTALLyes表示新建no表示使用已有harbor服务器
[harbor]
#10.1.0.8 HARBOR_DOMAIN="harbor.yourdomain.com" NEW_INSTALL=no

...
  • 创建云负载均衡例如阿里云slb如下
1. 首先创建SLB注意选择【可用区】【实例类型】可以先选私网【网络类型】专有网络【虚拟交换机】跟你k8s集群节点同一交换机
2. 配置【协议&监听】TCP 【端口】8443【后端服务器】即 master 节点服务器,端口 6443
3. 配置完成,记下负载均衡的内部地址(例如 10.1.0.200
  • 继续配置 ansible hosts设置MASTER_IP 为刚才创建的SLB地址
[all:vars]
# ---------集群主要参数---------------
#集群部署模式allinone, single-master, multi-master
DEPLOY_MODE=multi-master

# 创建内网云负载均衡,然后配置:前端监听 tcp 8443后端 tcp 6443后端节点即 master 节点
MASTER_IP="10.1.0.200"          # 即负载均衡内网地址
KUBE_APISERVER="https://{{ MASTER_IP }}:8443"

# 集群网络插件目前支持calico, flannel
CLUSTER_NETWORK="flannel"

... 
  • 一步创建集群 ansible-playbook /etc/ansible/90.setup.yml

其他资料

另外由li-sen分享的kubeasz-阿里云vpc部署记录介绍了阿里云上自建高可用k8s集群碰过的问题与解决主要是使用一台haproxy中转解决slb的限制问题。