天天看点

生产环境部署K8S高可用集群

环境规划

<col>

服务器名称

IP地址

角色

安装组件

版本

备注

master_1

47.140.1.41

192.168.1.101

master

etcd-v3.3.11

kube-apiserver

kube-controller-manager

kube-scheduler

docker

v1.16.6

master节点

master_2

47.140.1.42

192.168.1.102

master_3

47.140.1.43

192.168.1.103

node_1

47.140.1.44

192.168.1.104

worker

kubelet

kube-proxy

flannel-v0.11.0

haproxy

keepalived

worker节点

node_2

47.140.1.45

192.168.1.105

node_3

47.140.1.46

192.168.1.106

192.168.1.100

kube-apiserver内网的VIP地址

说明:

192.168.1.101-103为master节点,部署etcd,kube-apiserver,kube-controll-manager,kube-scheduler,kube-apiserver的高可用与负载方式采取在192.168.1.105和192.168.1.106上部署keepalived+haproxy来实现。

kube-controller-manager和kube-scheduler需要操作kube-apiserver,为了保证数据的唯一性,采用了选举leader的方式来实现高可用。192.168.1.104和192.168.1.105采用了daemonset+hostNetwork部署了nginx-ingress-controller,直接在宿主机上暴露80和443端口。

使用firewalld防火墙,eth0为外网网卡,eth1为内网网卡,将eth0添加到zone为publi区域,eth1和flannel.1添加到internal区域:

firewall-cmd --zone=public --change-interface=eth0     

firewall-cmd --zone=internal --change-interface=eth1

firewall-cmd --zone=internal --change-interface=flannel.1

部署etcd集群etcd简介

etcd是CoreOS团队于2013年6月发起的开源项目,它的目标是构建一个高可用的分布式键值(key-value)数据库。etcd内部采用raft协议作为一致性算法,etcd基于Go语言实现。etcd作为服务发现系统,有以下的特点:

简单:安装配置简单,而且提供了HTTP API进行交互,使用也很简单

安全:支持SSL证书验证

快速:根据官方提供的benchmark数据,单实例支持每秒2k+读操作

可靠:采用raft算法,实现分布式系统数据的可用性和一致性

etcd项目地址:https://github.com/coreos/etcd/

下载安装包

创建证书文件

添加配置文件

防火墙zone为internal开放2379和2380端口

启动

验证集群

部署master节点下载kubernetes v1.16.6版本文件

部署kube-apiserver

部署kube-controller-manager

部署kube-scheduler

部署worker节点部署docker

部署flanneld网络插件

配置docker连接flanneld网络

配置kubeconfig,在master节点操作

部署kubelet

部署kube-proxy

加入其他worker节点

部署master节点高可用kube-apiserver高可用(内网高可用vip为192.168.1.100)

kube-controller-manager高可用

kube-scheduler高可用

部署haproxy+keepalived(192.168.104和192.168.105)

修改kublet和kube-proxy配置文件的kube-apiserver为vip地址

生成管理集群工具kubectl的配置文件

高可用测试

部署coredns

部署ingress-nginx

注册到阿里云k8s集群

如没有阿里帐号的点击https://www.aliyun.com/minisite/goods?userCode=8srasrh9 可以领取阿里云优惠劵。

生产环境部署K8S高可用集群

了为方便k8s集群管理,将部署好的k8s集群注册到阿里云。参考https://help.aliyun.com/document_detail/121053.html?spm=5176.2020520152.0.0.7ebf16ddqDNQWO。

打开阿里云容器服务kubernetes控制台,点击右上角的注册集群,输入集群名称,选择地域,绑定EIP,然后点创建集群。

生产环境部署K8S高可用集群
生产环境部署K8S高可用集群

在集群导入代理配置区域单击复制,将以下内容拷贝到一个文件中,并执行Kubectl命令,将目标集群注册至新集群中。

新建agent.yaml文件,将以下内容拷贝到agent.yaml文件中,并在目标集群中执行kubectl apply -f agent.yaml命令。注册成功后,您可以在容器服务管理控制台的Kubernetes 集群列表页面,看到新集群的状态为运行中

生产环境部署K8S高可用集群
生产环境部署K8S高可用集群

继续阅读