阿里slb做为k8s的负载均衡的限制

阿里slb做为k8s的负载均衡的限制,第1张

如果在本地搭建,我们可以使用haproxy+keepalived方式轻松实现k8s中的负载均衡,但是阿里的ecs不能使用keepalived,所以我们被迫只能使用阿里的 slb了。

既然keepalived的方式不能使用,那我们就使用阿里的slb进行负载均衡呗,由于该负载均衡不需要被外部访问,只提供对k8s集群节点之间的访问,所以我们就使用私网的slb。
[上传失败(image-b02d7-1604545387128)]

我们保证该slb和k8s集群节点的node属于同一个局域网内,具体配置如下

第一步就是监听该slb的6443端口,该端口后端的服务器组分别是3台ecs的6443端口(apiserver服务)。接着我们可以 在master1节点 上执行如下命令

由于后端服务器组的 apiserver 都尚未运行,预期会出现一个连接拒绝错误。然而超时意味着负载均衡器不能和控制平面节点通信。 如果发生超时,请重新配置负载均衡器与控制平面节点进行通信。

我们在master1节点上创建kubeadm-configyaml文件,用于初始化控制平面节点,如下。

接着我们在master1节点上执行如下命令初始化

最后结果如下

看上面的日志好像是kubelet的问题。我们先确认kubelet是否运行,发现处于running状态。

接着查看kubelet的日志

发现一个奇怪的问题,>

kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具。

这个工具能通过两条指令完成一个kubernetes集群的部署:

在开始之前,部署Kubernetes集群机器需要满足以下几个条件:

31 安装相关包和keepalived

32配置master节点

master1节点配置

master2节点配置

33 启动和检查

在两台master节点都执行

启动后查看master1的网卡信息

41 安装

42 配置

两台master节点的配置均相同,配置中声明了后端代理的两个master节点服务器,指定了haproxy运行的端口为16443等,因此16443端口为集群的入口

43 启动和检查

两台master都启动

检查端口

Kubernetes默认CRI(容器运行时)为Docker,因此先安装Docker。

51 安装Docker

52 添加阿里云YUM软件源

53 安装kubeadm,kubelet和kubectl

由于版本更新频繁,这里指定版本号部署:

61 创建kubeadm配置文件

在具有vip的master上 *** 作,这里为master1

62 在master1节点执行

按照提示保存以下内容,一会要使用(kubeadm init中的回显内容):

按照提示配置环境变量,使用kubectl工具:

查看集群状态

创建kube-flannelyml,在master1上执行

安装flannel网络

检查

81 复制密钥及相关文件

从master1复制密钥及相关文件到master2

82 master2加入集群

执行在master1上init后输出的join命令,需要带上参数--control-plane表示把master控制节点加入集群(之前kubeadm init回显内容)

检查状态(master1上执行)

在node1上执行

向集群添加新节点,执行在kubeadm init输出的kubeadm join命令(之前kubeadm init回显内容,注意不加--control-plane):

集群网络重新安装,因为添加了新的node节点(在master1上执行)

检查状态(在master1上执行)

在Kubernetes集群中创建一个pod,验证是否正常运行:

访问地址:>

Kubernetes(简称K8S) 是Google开源的分布式的容器管理平台,方便我们在服务器集群中管理我们容器化应用。

节点 (Master node and Worker node)
节点通常指的就是服务器,在k8s中有两种节点:管理节点(Master Node)和工作节点(Worker Node)
管理节点(Master Node):负责管理整个k8s集群,一般由3个管理节点组成HA的架构。
工作节点(Worker Node):主要负责运行容器。

命名空间 (Namespace)
k8s命名空间主要用于隔离集群资源、隔离容器等,为集群提供了一种虚拟隔离的策略;默认存在3个名字空间,分别是默认命名空间 default、系统命名空间 kube-system 和 kube-public。

Object
k8s 对象(Object)是一种持久化存储并且用于表示集群状态的实体。k8s 对象其实就是k8s自己的配置协议,总之我们可以通过定义一个object让k8s根据object定义执行一些部署任务、监控任务等等。

POD
Pod是 Kubernetes 部署应用或服务的最小的基本单位。一个Pod 封装多个应用容器(也可以只有一个容器)、存储资源、一个独立的网络 IP 以及管理控制容器运行方式的策略选项。

副本集 (Replica Set,RS)
是一种控制器,负责监控和维护集群中pod的副本(replicas)数,确保pod的副本数是我们期望的样子。

部署 (Deployment)
表示对k8s集群的一次更新 *** 作,是k8s集群中最常用的Object,主要用于部署应用。支持滚动升级。

服务 (service)
是对应用的抽象,也是k8s中的基本 *** 作单元,一个服务背后由多个pod支持,服务通过负载均衡策略将请求转发到容器中。

Ingress
是一种网关服务,可以将k8s服务通过>

无状态应用 & 有状态应用

无状态应用指的是应用在容器中运行时候不会在容器中持久化存储数据,应用容器可以随意创建、销毁;如果一个应用有多个容器实例,对于无状态应用,请求转发给任何一个容器实例都可以正确运行。例如:web应用

有状态应用指的是应用在容器中运行时候需要稳定的持久化存储、稳定的网络标识、固定的pod启动和停止次序。例如:mysql数据库


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/12907857.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-28
下一篇 2023-05-28

发表评论

登录后才能评论

评论列表(0条)

保存