首页 > 其他分享 >如何为Azure Kubernetes Services启用Internal Loadbalancer

如何为Azure Kubernetes Services启用Internal Loadbalancer

时间:2024-01-23 14:05:51浏览次数:36  
标签:Kubernetes AKS app Internal 均衡器 Services Public LoadBalancer

如何为Azure Kubernetes Services启用Internal Loadbalancer

熟悉Azure Kubernetes Services(AKS)的小伙伴都知道,默认情况下,当我们创建Azure Kubernetes Services群集时,创建的都是Public的AKS群集,也就是可以提供Internet访问的AKS群集。Public AKS群集会默认附带一个Public类型的Load Balancer以用于我们创建发布Services使用。Public LoadBalancer具有分配给他的公网IP地址并且可以通过Internel进行服务访问。

但是在很多情况下,我们会存在一个群集内的某些服务是对内的,需要提供内网访问。那这个时候,使用Public LoadBalancer就不是很适用于这种场景了。此时需要使用Internal LoadBalancer来帮助我们在多个Pod之间进行流量分配。Internal LoadBalancer具有与 Pod 虚拟网络关联的内部 IP 地址。它没有与之关联的公共 IP 地址。这意味着无法通过互联网访问内部负载均衡器。它只能在 Kubernetes 集群内使用。

一般情况下,当我们创建负载均衡器时,会使用类似于如下格式的YAML文件,此时我们所创建的即为Public LoadBalancer类型的负载均衡器:

apiVersion: v1kind: Service 
kind: Service
metadata: 
  name: Public-IP-address
spec: 
  type: LoadBalancer 
  ports: 
  — port: 80 
  selector: 
    app: internal-app

对于Public类型的LoadBalancer,创建完成以后,可以使用kubectl get svc来查看具体的IP地址信息。

那如果我们想要去创建一个Internal的负载均衡器,应该如何操作呢。细心的朋友可能会发现,在K8S的服务定义中,并没有提供Internal LoadBalancer的特定属性。要配置内部负载均衡器,可以使用注释,这是 AKS 特有的。注释是可以添加到任何资源的附加元数据信息。AKS 使用此元数据信息来预配内部负载均衡器而不是公共负载均衡器。

接下来这个YAML文件,会给大家展示了如何在AKS中创建Internal LoadBalancer,这里大家需要注意,这个YAML文件的“annotations”部分。你会发现,annotations定义了 service.beta.kubernetes.io/azure-load-balancer- internal: "true"这个属性来告诉AKS需要创建的是一个Internal LoadBalancer类型的Services资源。

apiVersion: v1 kind: Service 
kind: Service
metadata: 
  name: internal-app 
  annotations:
    service.beta.kubernetes.io/azure-load-balancer- internal: "true" 
spec: 
  type: LoadBalancer 
  ports: 
  - port: 80 
  selector: 
    app: internal-app

上述YAML文件执行以后如下图所示,可以看到,会创建出一个Internal LoadBalancer类型的资源:

如何为Azure Kubernetes Services启用Internal Loadbalancer_Kubernetes

创建好以后,回到Azure Portal,可以看到已经部署了一个Internal LoadBalancer类型的资源:

如何为Azure Kubernetes Services启用Internal Loadbalancer_Azure_02

如果各位在部署Internal LoadBalancer资源的时候想要指定IP,可以在Yaml文件的 annotations中设置service.beta.kubernetes.io/azure-load-balancer-ipv4注解,具体可参考如下YAML文件:

apiVersion: v1
kind: Service
metadata:
  name: internal-app
  annotations:
    service.beta.kubernetes.io/azure-load-balancer-ipv4: 10.2.1.100
    service.beta.kubernetes.io/azure-load-balancer-internal: "true"
spec:
  type: LoadBalancer
  ports:
  - port: 80
  selector:
    app: internal-app

需要注意的是,指定IP地址的前提是IP地址没有被其他资源所占用,所以大家在使用之前要提前做好规划哈。

标签:Kubernetes,AKS,app,Internal,均衡器,Services,Public,LoadBalancer
From: https://blog.51cto.com/wuyvzhang/9378969

相关文章

  • Kubernetes 中容器的退出状态码参考指南
    Kubernetes中容器的退出状态码参考指南云原生生态圈 2024-01-2208:10 发表于北京 听全文什么是容器退出码当容器终止时,容器引擎使用退出码来报告容器终止的原因。如果您是Kubernetes用户,容器故障是pod异常最常见的原因之一,了解容器退出码可以帮助您在排查时找到......
  • Kubernetes 学习整理(一)
    RKEv2:rollingupgrades,zerodowntimeupgrade,andautomaticetcdbackups.Varietyofnetworkpluginsandhasbuilt-insupportfortheHelmpackagemanager.InRKEv2,CoreDNSisthedefaultDNS,isaflexible,extensibleDNSserver,canserveastheKu......
  • Kubernetes 学习整理
    MetalLB:routeTCPorUDPtraffic(layer4).Ingress:isbasedontheHTTPorHTTPS(layer7),usingNGINXorHAProxy.OnceMetalLBisinstalled,themetallb-operator-controller-managerdeploymentstartsapodnamedoperator.AssoonastheMetalLBoperat......
  • spring boot一个奇怪的错误(There was an unexpected error (type=Internal Server Err
    今天运行springboot的时候爆了这个错(Therewasanunexpectederror(type=InternalServerError,status=500).Exceptionparsingdocument:template=“index”,line6-column3)说什么无法解析文档,昨天还运行的好好的,看一下控制台说什么meta标签没关闭,我可是用idea自己创......
  • [译] kubernetes:kube-scheduler 调度器代码结构概述
    本文翻译自https://github.com/kubernetes/community/blob/master/contributors/devel/sig-scheduling/scheduling_code_hierarchy_overview.md译者:胡云Troy调度器代码层次结构概述介绍调度器监视新创建的还没有分配节点的Pod。当发现这样的Pod后,调度器将Pod调度到最......
  • 人人都会Kubernetes(二):使用KRM实现快速部署服务,并且通过域名发布
    1.上节回顾上一小节《人人都会Kubernetes(一):告别手写K8syaml,运维效率提升500%》介绍了KRM的一些常用功能,并且使用KRM的DEMO环境,无需安装就可以很方便的生成一些资源的YAML数据并使用。本节将实现在自己的集群中安装KRM,并且使用KRM去管理分布在各个地方的K8s集群,同时将实现快速......
  • Kubernetes容器实践操作深度解析
    Kubernetes容器实践深度解析引言在当今云原生时代,容器技术已经成为构建、部署和管理应用程序的关键工具之一。而在众多的容器编排系统中,Kubernetes(简称K8s)因其强大的自动化、弹性和可扩展性而备受欢迎。本文将深入探讨Kubernetes容器实践,从基础概念到高级应用,为读者提供全面的指南......
  • rke2 offline install kubernetes v1.26.12
    文章目录1.准备2.安装ansible3.基础配置3.1配置hosts3.2安装软件包3.3内核参数3.4连接数限制3.5关闭swap、selinux、防火墙3.6时间同步4.RKE2安装4.1下载安装4.2配置其他管理节点4.3新增worker节点1.准备7台主机主机名ipcpu内存diskos角色user密码kube-mast......
  • Istio从入门到精通—— 安装 —— Kubernetes 删除 istio-system namesapce 时候,出现
    Kubernetes删除istio-systemnamesapce时候,出现Terminating解决办法当你在Kubernetes中遇到无法删除处于Terminating状态的命名空间时,可能是由于该命名空间中仍有活跃的资源或服务。要解决这个问题,你可以尝试以下几个步骤:一、常规方法检查命名空间中的活跃资源:......
  • kubernetes限制命名空间的磁盘
    kubernetes限制命名空间的磁盘只有requests没有limits,其中requests限制了请求的大小,但是限制不了实际使用的大小磁盘的requests限制apiVersion:v1kind:ResourceQuotametadata:name:namespace-quotaspec:hard:requests.storage:60Gi申请指定sc的requests......