本文记录了使用AKO(AVI)为TKG提供对外LoadBalancer服务的配置过程。

TKG的介绍请参考:Tanzu Kubernetes Grid介绍
TKG以及其安装配置参考:安装 Tanzu Kubernetes Grid
Tanzu Kubernetes Grid基本操作

环境

项目 内容 备注
VMware ESXi 7.0.1 17325551
vCenter Server 7.0.1.00300 17491101
NSX-T 3.11 3.1.1.0.0.17483185
Tanzu Kubernetes Grid CLI 1.21 tkg-linux-amd64-v1.2.1+vmware.1
kubectl cluster cli v1.19.3 kubectl-linux-v1.19.3
Client OS CentOS 7 CentOS-7-x86_64-DVD-2009.iso
AVI Controller 20.1.3 AKO 1.3.3
NSX-T 3.1

安装过程

AVI 配置准备

AVI的环境沿用在前面文:实现VMware Horizo​​n+负载均衡(AVI)中的环境。

IP网段配置

本次使用的地址段是172.20.0.0/24,为此段ip进行预配置:
导航到Infrastructure–>Networks–>Default-Cloud,编辑172.20.0.0/24网段

增加Subnet。
导航到Templates–>Profiles–>IPAM/DNS Profiles,编辑原有IPAM-VMLAB,在Default-Cloud增加172.20.0.0/24网段。

新增SE-Group

为了和前面的环境区分,配置新的SE Group,导航到Infrastructure–>Service Engine Group–>CREATE

TKG Cluster 配置

参数修改

  • 已经安装好TKG 管理Cluster和TKG Cluster:
[root@hop-172 ~]# kubectl config get-contexts
CURRENT   NAME                                    CLUSTER           AUTHINFO                NAMESPACEmgmt-admin@mgmt                         mgmt              mgmt-admin              tanzu-cluster-admin@tanzu-cluster       tanzu-cluster     tanzu-cluster-admin     -         tanzu20-cluster-admin@tanzu20-cluster   tanzu20-cluster   tanzu20-cluster-admin
  • CentOS跳板机已经安装好Helm
  • 增加repository到 helm CLI
helm repo add ako https://projects.registry.vmware.com/chartrepo/ako

搜索 Charts for AKO:

[root@hop-172 ~]# helm search repo
NAME                    CHART VERSION   APP VERSION     DESCRIPTION
ako/ako                 1.3.3           1.3.3           A helm chart for Avi Kubernetes Operator
ako/ako-operator        1.3.1           1.3.1           A Helm chart for Kubernetes AKO Operator
ako/amko                1.3.1           1.3.1           A helm chart for Avi Kubernetes Operator
  • 利用命令获取参数,并根据AVI环境进行编辑。
helm show values ako/ako --version 1.3.3 > values.yaml
  • VALUES修改的内容:
    ClusterName:
KOSettings:logLevel: WARN   #enum: INFO|DEBUG|WARN|ERRORfullSyncFrequency: '1800' # This frequency controls how often AKO polls the Avi controller to update itself with cloud configurations.apiServerPort: 8080 # Internal port for AKO's API server for the liveness probe of the AKO pod default=8080deleteConfig: 'false' # Has to be set to true in configmap if user wants to delete AKO created objects from AVI disableStaticRouteSync: 'false' # If the POD networks are reachable from the Avi SE, set this knob to true.clusterName: 'tanzu20-cluster'   # A unique identifier for the kubernetes cluster, that helps distinguish the objects for this cluster in the avi controller. // MUST-EDIT

网络参数:

NetworkSettings:## This list of network and cidrs are used in pool placement network for vcenter cloud.## Node Network details are not needed when in nodeport mode / static routes are disabled / non vcenter clouds.nodeNetworkList: []subnetIP: '172.20.0.0' # Subnet IP of the vip networksubnetPrefix: '24' # Subnet Prefix of the vip networknetworkName: 'ls-172.20.0' # Network Name of the vip networkenableRHI: false # This is a cluster wide setting for BGP peering.

AVI参数:

ControllerSettings:serviceEngineGroupName: se-group   # Name of the ServiceEngine Group.controllerVersion: 20.1.2   # The controller API versioncloudName: Default-Cloud   # The configured cloud name on the Avi controller.controllerHost: '10.105.130.55' # IP address or Hostname of Avi ControllertenantsPerCluster: 'false' # If set to true, AKO will map each kubernetes cluster uniquely to a tenant in AvitenantName: admin   # Name of the tenant where all the AKO objects will be created in AVI. // Required only if tenantsPerCluster is set to True

注意:AVI到版本是20.1.3,可是实测不能通过。改为20.1.2可以成功。

AKO安装

利用上文修改好的value.yaml文件,安装AKO

root@hop-172 ~]# helm install  ako/ako  --generate-name --version 1.3.3 -f values.yaml  -n avi-system
NAME: ako-1613991974
LAST DEPLOYED: Mon Feb 22 11:06:15 2021
NAMESPACE: avi-system
STATUS: deployed
REVISION: 1

查看pod情况

[root@hop-172 ~]# kubectl get po -n avi-system
NAME    READY   STATUS    RESTARTS   AGE
ako-0   1/1     Running   0          11s
[root@hop-172 ~]# helm list -n avi-system
NAME            NAMESPACE       REVISION        UPDATED                                 STATUS          CHART           APP VERSION
ako-1613991974  avi-system      1               2021-02-22 11:06:15.446844648 +0000 UTC deployed        ako-1.3.3       1.3.3

验证

在Cluster上利用yaml文件创建Deployment,指定Service type为LoadBalancer

apiVersion: v1
kind: Service
metadata:name: hello-kubernetes
spec:type: LoadBalancerports:- port: 80targetPort: 8080selector:app: hello-kubernetes
---
apiVersion: apps/v1
kind: Deployment
metadata:name: hello-kubernetes
spec:replicas: 3selector:matchLabels:app: hello-kubernetestemplate:metadata:labels:app: hello-kubernetesspec:containers:- name: hello-kubernetesimage: paulbouwer/hello-kubernetes:1.5ports:- containerPort: 8080env:- name: MESSAGEvalue: I just deployed Web Service via AVI for pod Cluster!!

查看SVC情况:

[root@hop-172 ~]# kubectl get svc
NAME               TYPE           CLUSTER-IP      EXTERNAL-IP    PORT(S)        AGE
hello-kubernetes   LoadBalancer   111.69.112.27   172.20.0.100   80:30321/TCP   85m
kubernetes         ClusterIP      111.64.0.1      <none>         443/TCP        114m

可以看到这里的外部IP地址172.20.0.100,正是在AVI 172.20.0.0/24中配置的地址段172.20.0.100-172.20.0.149中的一个。
在AVI上查看:

体验效果


参考文档:
avi-helm-charts
以上。

使用AKO为TKG提供LoadBalancer相关推荐

  1. 为私有Kubernetes集群创建LoadBalancer服务

    MetalLB - 可以为私有 Kubernetes 集群提供LoadBalancer类型的负载均衡支持. 在Kubernetes集群中,可以使用Nodeport.Loadbalancer和Ingre ...

  2. Knative 暂时不会捐给任何基金会 | 云原生生态周报 Vol. 22

    作者 | 新胜.心贵.进超.元毅.衷源 业界要闻 谷歌:不会向任何基金会捐赠 Knative 自 Knative 项目开始以来,一直存在关于是否将 Knative 捐赠给基金会(例如 CNCF)的疑问 ...

  3. Ribbon源码解析(一)

    目录 介绍 引入 关键组件 Modules模块 Ribbon和Spring-Cloud-Loadbalancer Core IClient RetryHandler DefaultLoadBalanc ...

  4. 在 Kubernetes 集群中使用 MetalLB 作为 Load Balancer(上)

    作者 | Addo Zhang 来源 | 云原生指北 TL:DR 网络方面的知识又多又杂,很多又是系统内核的部分.原本自己不是做网络方面的,系统内核知识也薄弱.但恰恰是这些陌生的内容满满的诱惑,加上现 ...

  5. Argo CD系列视频图文版之手把手教你搭建Argo CD 实验环境

    开篇 本期视频,我们一起来手把手的搭建实验环境.为了节省资源,我们部署 All-In-One K8S环境,也就是所有 kubernetes 资源,运行在一台服务器上. 视频直达 第一部分视频 第二部分 ...

  6. kubernetes上部署rook-ceph存储系统

    文章目录 1. 简单说说为什么用rook 2. rook-ceph部署 2.1 环境 2.2 Rook Operator部署 2.3 Ceph集群创建 2.3.1 标识osd节点 2.3.2 yaml ...

  7. Use Octavia to Implement HTTPS Health Monitors (by quqi99)

    几张图感性认识ocatvia 问题 采用Neutron LBaaS v2实现HTTPS Health Monitors时的配置如下(步骤见附件 - Neutron LBaaS v2) backend ...

  8. KubeFed 集群联邦的演进和架构概览

    KubeFed 集群联邦的演进和架构概览 Kubernetes 集群联邦 Kubernetes 从 1.8 版本起就声称单集群最多可支持 5000 个节点和 15 万个 Pod,我相信很少有公司会部署 ...

  9. Step by step:安装 Tanzu Kubernetes Grid

    简介 本文的目的是实践Tanzu Kubernetes Grid(以下简称TKG)的安装和部署.有关TKG的介绍请参考:Tanzu Kubernetes Grid介绍 使用环境 项目 内容 备注 VM ...

最新文章

  1. Waymo CEO:将在卡车领域商用无人驾驶技术
  2. jsp页面获取参数的方法(url解析、el表达式赋值、session取值)【原创】
  3. php页面栏目访问权限,PHPCMS 栏目和内容浏览权限的解决方法
  4. Gargari and Permutations CodeForces - 463D(建图+记忆化搜索)
  5. AB-string CodeForces - 1238D(思维)
  6. Codeforces Round #686 (Div. 3) F. Array Partition 二分 + 线段树
  7. python 结构数组_Python数组
  8. simplejson.scanner.JSONDecodeError: Extra data: line 1 column 22089 - line 1 column 22090
  9. 怎样往mysql里添加数据_怎么往mysql表里添加数据
  10. 前端每日一算(我掐指一算,這题不难~入门啊入门)
  11. pands库中的一些函数用法
  12. 中国电信与阿里巴巴签署全面战略合作协议
  13. MySQL中表的增删查改操作(CRUD)
  14. 香橙派装php_【香橙派】安装宝塔面板 orange pi
  15. iOS 朋友圈点赞评论,发布朋友圈,想要的都有
  16. 乳腺数据DDSM标注overlay文件python处理
  17. Instant Neural Graphics Primitives with a Multiresolution Hash Encoding 翻译
  18. CGB2106-Day01
  19. iphone如何最快已读全量未读短信
  20. js实现谷歌网站统计

热门文章

  1. 数据库安全性案例分享
  2. Hive-创建表的几种方式
  3. kaldi - Online Audio Server(服务器客户端建立方法-旧版在线解码)
  4. 如何写好技术部门的年度 OKR
  5. Ubuntu 16.04+网易云音乐+Adobe Flash+腾讯QQ
  6. 全网推荐的理财小白必读书目《小狗钱钱》,有那么好吗?
  7. video标签(获取视频时间总长度,视频当前时间,播放暂停方法,视频封面,)
  8. PMOS和NMOS引脚及封装
  9. GetDC 与 释放DC
  10. 工作十二年后,开始学习人生第十四种编程语言