青云LB(负载均衡)与k8s实战(一)

本文涉及的产品
网络型负载均衡 NLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
简介: 青云LB(负载均衡)与k8s实战(一)

【摘要】基于青云LB来部署高可用的k8s集群。



前言


对于生产环境,需要考虑集群的高可用性。如果关键组件(例如 kube-apiserver、kube-scheduler 和 kube-controller-manager)在相同的主节点上运行,一旦主节点出现故障,Kubernetes KubeSphere 将不可用。因此,您需要为多个主节点配置负载均衡器,以搭建高可用集群。您可以使用任何云负载均衡器或任何硬件负载均衡器(例如 F5)。此外,您也可以使用 Keepalived+HAproxyNGINX 搭建高可用集群。

集群架构


2.1 负载均衡器创建高可用集群:


屏幕截图 2023-09-06 164426.png


2.2 使用 Keepalived 和 HAproxy/Nginx 创建高可用 Kubernetes 集群:


屏幕截图 2023-09-06 164443.png


高可用方案


通常情况下,我们创建单master的k8s集群是不需要进行高可用配置的,只有在创建高可用的k8s集群时才会采用高可用配置,高可用配置的方案有很多。如下方案:


 3.1 云上:

  • 使用 KeepalivedHAproxy 创建高可用 Kubernetes 集群(有些云可能不支持keepalived)
  • 使用 KeepalivedNginx 创建高可用 Kubernetes 集群(有些云可能不支持keepalived)
  • 可以直接使用云上的lb,比如阿里云slb,腾讯云elb,青云lb等(推荐)


3.2 非云上:

  • 使用 KeepalivedHAproxy 创建高可用 Kubernetes 集群
  • 使用 KeepalivedNginx 创建高可用 Kubernetes 集群



青云LB负载均衡使用


负载均衡(Load Balancer,简称LB)提供安全快捷的流量分发服务,来自多个公网地址的访问流量经由 LB 可以自动分配到多台云服务器上,并支持自动检测并隔离故障云服务器,提供业务系统的服务能力和可用性。负载均衡支持千万级别并发访问请求,可轻松应对大流量访问,满足业务需求。

  • 创建负载均衡器,指定ip地址或者自动生成IP
  • 进入负载均衡器,创建监听器
  • 选择TCP,6443端口(此端口可调整)
  • 添加master地址与监听 apiserver  6443端口
  • 根据集群的部署位置,您可能需要在安全组中打开端口以确保外部流量不被屏蔽
  • 可以同时配置内置负载均衡器和外置负载均衡器。为外置负载均衡器分配公共 IP 地址后,您可以使用该 IP 地址来访问集群,这里我们只用内置负载均衡器,利用青云VPN进行内网访问即可

 4.1 部署k8s之前就是不可用状态,如下图所示:


屏幕截图 2023-09-06 164459.png


 4.2 k8s集群初始化:




kubeadm init --config kubeadm-init.yaml   --upload-certs##说明:upload-certs 标志用来将在所有控制平面实例之间的共享证书上传到集群,若是不加会报错如下:


不加upload-certs报错如下:


屏幕截图 2023-09-06 164514.png


4.3 kubeadm-init.yaml的内容如下:

apiVersion: kubeadm.k8s.io/v1beta3
bootstrapTokens:
- groups:
  - system:bootstrappers:kubeadm:default-node-token
  token: abcdef.0123456789abcdef
  ttl: 24h0m0s
  usages:
  - signing
  - authentication
kind: InitConfiguration
localAPIEndpoint:
  advertiseAddress: 192.168.0.1   #本机ks-m1的ip
  bindPort: 6443
nodeRegistration:
  criSocket: /var/run/dockershim.sock
  imagePullPolicy: IfNotPresent
  name: ks-m1
  taints: 
  - effect: NoSchedule
    key: node-role.kubernetes.io/master
---
apiServer:
  timeoutForControlPlane: 4m0s
  certSANs:
  - "172.17.0.252"
  extraArgs:
    authorization-mode: "Node,RBAC"
apiVersion: kubeadm.k8s.io/v1beta3
certificatesDir: /etc/kubernetes/pki
controlPlaneEndpoint: 172.17.0.252:6443  #此ip和端口是青云负载均衡器生成的内部负载ip+端口
clusterName: kubernetes
cgroupDriver: systemd
controllerManager: {}
etcd:
  local:
    dataDir: /var/lib/etcd
imageRepository: registry.aliyuncs.com/google_containers
kind: ClusterConfiguration
kubernetesVersion: 1.22.12
networking:
  dnsDomain: cluster.local
  podSubnet: 10.244.0.0/16
  serviceSubnet: 10.10.0.0/16
scheduler: {}
---
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
mode: ipvs

4.4 master都加入集群后,负载均衡器状态如下:


屏幕截图 2023-09-06 164604.png

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
29天前
|
缓存 负载均衡 算法
slb支持多种负载均衡算法
slb支持多种负载均衡算法
54 6
|
3天前
|
弹性计算 负载均衡 网络协议
ECS中实现nginx4层7层负载均衡和ALB/NLB原SLB负载均衡
通过本文的介绍,希望您能深入理解并掌握如何在ECS中实现Nginx四层和七层负载均衡,以及如何使用ALB和NLB进行高效的负载均衡配置,以提高系统的性能和可靠性。
29 9
|
19天前
|
缓存 负载均衡 监控
slb基于DNS的负载均衡
slb基于DNS的负载均衡
58 8
|
1月前
|
运维 负载均衡 安全
|
13天前
|
负载均衡 Java Nacos
常见的Ribbon/Spring LoadBalancer的负载均衡策略
自SpringCloud 2020版起,Ribbon被弃用,转而使用Spring Cloud LoadBalancer。Ribbon支持轮询、随机、加权响应时间和重试等负载均衡策略;而Spring Cloud LoadBalancer则提供轮询、随机及Nacos负载均衡策略,基于Reactor实现,更高效灵活。
34 0
|
1月前
|
负载均衡 算法
SLB-Backend的负载均衡算法
【10月更文挑战第19天】
54 5
|
27天前
|
Kubernetes 监控 安全
容器化技术:Docker与Kubernetes的实战应用
容器化技术:Docker与Kubernetes的实战应用
|
27天前
|
存储 Kubernetes Devops
Kubernetes集群管理和服务部署实战
Kubernetes集群管理和服务部署实战
45 0
|
2月前
|
Kubernetes 负载均衡 网络协议
在K8S中,负载均衡器有何作用?
在K8S中,负载均衡器有何作用?
|
2月前
|
负载均衡 Kubernetes 区块链
随机密码生成器+阿里k8s负载均衡型服务加证书方法+移动终端设计+ico生成器等
随机密码生成器+阿里k8s负载均衡型服务加证书方法+移动终端设计+ico生成器等
56 1