Tanzu学习系列之TKGm 1.4 for vSphere 组件集成(二)

news/2025/2/7 6:55:45/

e9be5e55a9480342796497a482b25efb.png

    开局一张图,谷歌大神Kelsey Hightower说:一个好汉三个帮!Kubernetss是一个好平台,完善需要周边工具链来帮忙。TKG通过Tanzu Packages集成发布经过验证的组件工具,实现TKG平台生产就绪!

   文接上篇,上篇文章《Tanzu学习系列之TKGm 1.4 for vSphere 组件集成(一)》(以下简称《组件集成(一》)。通过安装配置Tanzu Packages 管理中的User-Managed Packages清单cert-manager、contour、external-dns、prometheus、grafana组件实现Kubernetss证书管理,Ingress 控制器南北向七层流量,DNS自动化更新,TKG系统监控等。

04351e202eb7324c092148c321dd8d99.png

    在生产环境中,日志对于排查问题至关重要,我们需要有一个日志管理系统,如EFK就是目前最受欢迎的日志管理系统。

    本篇主要完成TKG日志平台组件的安装配置。

    开始之前说一下Cavel的一个小工具的基础用法,《组件集成(一)》中介绍了Tanzu package 和Carvel工具集:ytt,kapp,kbld,imgpkg,kapp-controller,vendir,本篇简单介绍一下imgpkg

   imgpkg:通过 镜像仓库来打包和迁移应用程序的容器镜像及其配置文件

79acf38266f7cff8b705d1521d595da2.png

 imgpkg可以用来获取Tanzu User-Managed Packages包默认配置的模板

image_url=$(kubectl -n tanzu-package-repo-global get packages fluent-bit.tanzu.vmware.com.1.7.5+vmware.1-tkg.1 -o jsonpath='{.spec.template.spec.fetch[0].imgpkgBundle.image}')imgpkg pull -b $image_url -o /tmp/fluent-bit
Pulling bundle 'projects.registry.vmware.com/tkg/packages/standard/fluent-bit@sha256:c83d038c57f244aae2819dd77dc5184bb3e1ec96524d3f6a09fe8a244b7bc9e4'Extracting layer 'sha256:48456e4452a35786ed148a3f1a9ede1427f8fccb0079a0eb0904820211b6cebd' (1/1)Locating image lock file images...
One or more images not found in bundle repo; skipping lock file update[workload02-admin@workload02|default] [root@bootstrap config]# pwd
/tmp/fluent-bit/config
[workload02-admin@workload02|default] [root@bootstrap config]# ls
fluent-bit.yaml  values.yaml  _ytt_lib
  • 测试内容:

16712133f1fe93f372dd011850896fac.png

  • 测试拓扑:

备注:为了测试方便,便于理解,管理网、业务网、节点网络都使用同一个网络mgmt (生产部署需要分开);新部署了一个VMware vRealize Log Insight日志平台。

64e4d22041f0b6fbd501670c208c6060.png

1. 安装配置EFK

    EFK是 Elasticsearch,Fluentbit,Kibana的缩写,是k8s集群常用的日志解决方案,EFK不是一个软件,而是一套解决方案,开源软件之间的互相配合使用,高效的满足了很多场合的应用,是目前主流的一种日志系统。EFK是三个开源软件的缩写,分别表示:Elasticsearch , Fluentbit, Kibana , 其中ELasticsearch负责日志保存和搜索,Fluentbit负责收集日志。

a51c681404d919df9ef44480f8a2841b.png

如果是正式生产系统,建议增加kafka做日志缓存和Logstash做日志过滤、格式化,参考部署模式如下

6877fcd4ac6e2d59126b163241407d0f.png

备注:当前Tanzu User-Managed Packages,只包含Fluentbit;Elasticsearch和Kibana安装配置模式详细可以参考官方文档。

1.helm 方式安装Elasticsearch,通过修改value.yaml配置文件可以调整pod副本数量,存储容量、暴露端口等

[workload02-admin@workload02|default] [root@bootstrap elasticsearch]# kubectl create ns efk
namespace/efk created
[workload02-admin@workload02|default] [root@bootstrap elasticsearch]# k get ns
NAME                        STATUS   AGE
avi-system                  Active   3h50m
default                     Active   3h55m
efk                         Active   4s
kube-node-lease             Active   3h55m
kube-public                 Active   3h55m
kube-system                 Active   3h55m
tanzu-package-repo-global   Active   3h54m
tkg-system                  Active   3h55m
tkg-system-public           Active   3h55m
[workload02-admin@workload02|default] [root@bootstrap efk]#  helm install elasticsearch --namespace efk ./elasticsearch
W1216 20:04:03.901964 1071106 warnings.go:70] policy/v1beta1 PodDisruptionBudget is deprecated in v1.21+, unavailable in v1.25+; use policy/v1 PodDisruptionBudget
W1216 20:04:03.990282 1071106 warnings.go:70] policy/v1beta1 PodDisruptionBudget is deprecated in v1.21+, unavailable in v1.25+; use policy/v1 PodDisruptionBudget
NAME: elasticsearch
LAST DEPLOYED: Thu Dec 16 20:04:03 2021
NAMESPACE: efk
STATUS: deployed
REVISION: 1
NOTES:
1. Watch all cluster members come up.$ kubectl get pods --namespace=efk -l app=elasticsearch-master -w
2. Test cluster health using Helm test.$ helm test elasticsearch

2.查看Elasticsearch pod运行状态

[workload02-admin@workload02|default] [root@bootstrap efk]#  kubectl get pods,svc --namespace=efk
NAME                         READY   STATUS    RESTARTS   AGE
pod/elasticsearch-master-0   1/1     Running   0          87sNAME                                    TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)             AGE
service/elasticsearch-master            ClusterIP   100.64.238.64   <none>        9200/TCP,9300/TCP   88s
service/elasticsearch-master-headless   ClusterIP   None            <none>        9200/TCP,9300/TCP   88s

3.helm方式安装Kibana,通过修改value.yaml配置文件对接(同一个集群,可以采用服务名字方式对接)

[workload02-admin@workload02|default] [root@bootstrap efk]#  helm install kibana --namespace efk ./kibana
NAME: kibana
LAST DEPLOYED: Thu Dec 16 20:11:55 2021
NAMESPACE: efk
STATUS: deployed
REVISION: 1
TEST SUITE: None

4.确定pod和服务运行正常采用LoadBalancer 暴露服务(本次测试采用)也可采用ingress方式暴露

访问IP http://192.168.110.56:5601 

[workload02-admin@workload02|efk] [root@bootstrap kibana]# k get pod,svc -n efk
NAME                                 READY   STATUS    RESTARTS   AGE
pod/elasticsearch-master-0           1/1     Running   0          3m12s
pod/kibana-kibana-5d9d6b5bd4-hbh9t   1/1     Running   0          24mNAME                                    TYPE           CLUSTER-IP      EXTERNAL-IP      PORT(S)             AGE
service/elasticsearch-master            ClusterIP      100.67.50.87    <none>           9200/TCP,9300/TCP   3m12s
service/elasticsearch-master-headless   ClusterIP      None            <none>           9200/TCP,9300/TCP   3m13s
service/kibana-kibana                   LoadBalancer   100.66.40.219   192.168.110.56   5601:30760/TCP      24m

 5.查看User-Managed Packages中Fluentbit版本信息

[workload02-admin@workload02|default] [root@bootstrap ~]# tanzu package  available list fluent-bit.tanzu.vmware.com
\ Retrieving package versions for fluent-bit.tanzu.vmware.com...NAME                         VERSION               RELEASED-ATfluent-bit.tanzu.vmware.com  1.7.5+vmware.1-tkg.1  2021-05-13T18:00:00Z

6.使用imgpkg的工具导出value.yaml 配置文件

image_url=$(kubectl -n tanzu-package-repo-global get packages fluent-bit.tanzu.vmware.com.1.7.5+vmware.1-tkg.1 -o jsonpath='{.spec.template.spec.fetch[0].imgpkgBundle.image}')
imgpkg pull -b $image_url -o /tmp/fluent-bit
Pulling bundle 'projects.registry.vmware.com/tkg/packages/standard/fluent-bit@sha256:c83d038c57f244aae2819dd77dc5184bb3e1ec96524d3f6a09fe8a244b7bc9e4'Extracting layer 'sha256:48456e4452a35786ed148a3f1a9ede1427f8fccb0079a0eb0904820211b6cebd' (1/1)Locating image lock file images...
One or more images not found in bundle repo; skipping lock file updateSucceeded
cp /tmp/fluent-bit/config/values.yaml ./fluent-bit-data-values.yaml

7.修改value.yaml ,进行日志转发到ES设置(Cluster地址100.67.50.87,端口9200)注意删除最上面两行 '#@'开头的,否则会报错

fluent_bit:config:#! https://docs.fluentbit.io/manual/administration/configuring-fluent-bit/variablesservice: |[Service]Flush         5  Log_Level     infoDaemon        offParsers_File  parsers.confHTTP_Server   OnHTTP_Listen   0.0.0.0HTTP_Port     2020outputs: |[OUTPUT]Name              esMatch             *Host              100.67.50.87 Port              9200

8.安装fluent-bit,并确定pod正常运行

[workload02-admin@workload02|efk] [root@bootstrap ~]# tanzu package install fluent-bit --package-name fluent-bit.tanzu.vmware.com --version 1.7.5+vmware.1-tkg.1 --values-file fluent-bit-data-values.yaml --namespace efk
- Installing package 'fluent-bit.tanzu.vmware.com'
| Getting namespace 'efk'
| Getting package metadata for 'fluent-bit.tanzu.vmware.com'
| Creating service account 'fluent-bit-efk-sa'
| Creating cluster admin role 'fluent-bit-efk-cluster-role'
| Creating cluster role binding 'fluent-bit-efk-cluster-rolebinding'
| Creating secret 'fluent-bit-efk-values'
- Creating package resource
/ Package install status: ReconcilingPlease consider using 'tanzu package installed update' to update the installed package with correct settings[workload02-admin@workload02|efk] [root@bootstrap ~]# k get pod,svc -n tanzu-system-logging
NAME                   READY   STATUS    RESTARTS   AGE
pod/fluent-bit-f6md2   1/1     Running   0          4m14s
pod/fluent-bit-g4rck   1/1     Running   0          4m14s
pod/fluent-bit-htfqt   1/1     Running   0          4m14s
pod/fluent-bit-vzgz4   1/1     Running   0          4m14s

备注:如果后续修改参数参考以下更新参数方法

[workload02-admin@workload02|efk] [root@bootstrap ~]# tanzu package installed update fluent-bit --package-name fluent-bit.tanzu.vmware.com --version 1.7.5+vmware.1-tkg.1 --values-file fluent-bit-data-values.yaml
| Updating package 'fluent-bit'
- Getting package install for 'fluent-bit'
| Updating secret 'fluent-bit-default-values'
| Updating package install for 'fluent-bit'Updated package install 'fluent-bit' in namespace 'default'

9.使用第4 步骤服务暴露IP,登陆查看

1c1887d822e1fc8cbde1f95a257fd484.png

10.创建简单Index pattern

3394f9be882c27d2c3f0920525ca2ca7.png

48bf0cd935b6e282e47db5dcd6a7d7f8.png

11.查看转发到ELasticsearch日志

7b0a729106dd0229e6fb1ab5cc0bbef1.png

2. 配置日志转发到vRealize Log Insight

   对于Tanzu TKG解决方案,包含底层采用的vSphere虚拟化,存储(可以使用VSAN),网络(可以使用NSX),负载均衡和服务发布采用的AVI,以及应用其他组件,而且原有生产环境可能大量存在物理、虚拟和云环境扩展基础架构和应用部署,日志对于排查问题至关重要,统一的日志解决方案很有必要。

    VMware vRealize Log Insight 就是这样一个解决方案,vRealize Log lnsight提供高度可扩展的异构日志管理功能,具备直观且切实可行的仪表盘、完善的分析功能和广泛的第三方可延展性,内置的软硬件支持列表,提供开箱即用的日志分析能力可以提供深入的运维洞察信息并 加快故障排除速度。

c5a45c6fb1a103bbf33d883c73b91674.png

TKG  可以采用部署VMware Fluentd vRealize Log Insight插件(支持多种发行版K8s)方式与vRealize Log Insight进行对接。

7b190ac2d966cca764b45fb9a6a4847d.png

1.登陆到vRealize Log Insight ,日志源容器菜单下,查看VMware Fluentd vRealize Log Insight插件部署步骤

c3a464fdcc1578d989b5034f8dae08c4.png

2.按照部署步骤进行部署VMware Fluentd vRealize Log Insight,查看部署后的pod状态

[workload02-admin@workload02|efk] [root@bootstrap kibana]# k get pod -n kube-system|grep log-collector
log-collector-62j2m                                      1/1     Running   0          167m
log-collector-cbrt9                                      1/1     Running   0          167m
log-collector-htzhk                                      1/1     Running   0          167m

3.登陆vRealize Log Insight 交互式分析,可以查看日志转发到vRealize Log Insight。

70ac9ca5801f06676d9d387c52767a35.png

4.通过原生的日志包,可以对接vsphere VC,和AVI 负载均衡器,对整个基础架构做全面的日志搜集

adbea50de32c781f757aa592f8176b65.png

5.内容包商城,可以支持多种设备、主机、OS、中间件等日志采集器支持

94b8eca027ebb8a495078af5d4e0d74b.png

  结束本篇之前,给大家介绍一个小工具彩蛋:Octant

404b9a4f437d488ae678163ff0061a32.png

    Octant是VMWare 开源的一款 Kubernetes Dashboard 的可视化工具,这是一款帮助开发人员了解应用程序在 Kubernetes 集群中如何运行的工具。它通过可视化的方式,呈现 Kubernetes 对象的依赖关系,可将本地端口请求转发到正在运行的 pod,查看 pod 日志,浏览不同的集群。此外,用户还可以通过安装或编写插件来扩展 Octant 的功能。可以作为 kubectl 的一个可视化补充。与Kubernetes自带的Dashboard相比,最大的亮点是可以自己编写插件来扩展 Octant 功能,给 Octant 提供了更多的可能。

github地址

https://github.com/vmware-tanzu/octant

   Octant 最大的亮点和想象空间就是插件功能,下面测试下针对CNI antrea的plugin功能。

    Octant 有多种部署方式,参考官方链接。本次测试采用的是直接部署在Kubernetes内部。

1.创建octant 使用的secret文件,文件记录admin kubeconfig信息

[workload02-admin@workload02|default] [root@bootstrap ~]# tanzu cluster kubeconfig get  workload02 --admin --export-file workload02admin
Credentials of cluster 'workload02' have been saved
You can now access the cluster by running 'kubectl config use-context workload02-admin@workload02' under path 'workload02admin'[workload02-admin@workload02|default] [root@bootstrap ~]# kubectl create secret generic octant-kubeconfig --from-file=admin.conf=workload02admin -n kube-system
secret/octant-kubeconfig created

2. 直接应用yaml文件进行安装,注意修改service type 默认的NodePort模式为LoadBalancer ,部署完成查看服务暴露IP为http://192.168.110.47

yaml文件地址

https://github.com/antrea-io/antrea/blob/main/build/yamls/antrea-octant.yml

注意TKGm 1.4 当前支持的antrea 是v0.13.0,修改antrea-octant.yml镜像地址为

projects.registry.vmware.com/antrea/octant-antrea-ubuntu:v0.13.0

[workload02-admin@workload02|default] [root@bootstrap ~]# kubectl apply -f octant.yaml
service/antrea-octant created
deployment.apps/antrea-octant created
[workload02-admin@workload02|default] [root@bootstrap ~]# k get pod,svc -n kube-system |grep antrea-octant
pod/antrea-octant-77df764cb7-r7phc                           1/1     Running   0          3m46s
service/antrea-octant              LoadBalancer   100.67.203.232   192.168.110.46   80:31467/TCP             3m47

3.登陆http://192.168.110.46,设置成暗夜模式,可以查看正在运行的 pod,查看 pod 日志,浏览不同的ns等

0224e55eea73ba0ae4eab6af25abb390.png

4. 插件是Octant的一大特色,可以使用antrea 插件,Traceflow 网络流量跟踪

c805fb7fcf8cb17660594c64d9f61b2b.png

未完待续


要想了解云原生、机器学习和区块链等技术原理,请立即长按以下二维码,关注本公众号亨利笔记 ( henglibiji ),以免错过更新。

1a1b57238d76a28c09b18059742be7af.png


http://www.ppmy.cn/news/233686.html

相关文章

3.知识图谱业务落地技术推荐之国内知识图谱平台汇总(竞品)[阿里、腾讯、华为等】

知识图谱专栏简介:数据增强,智能标注,文本信息抽取(实体关系事件抽取)、知识融合算法方案、知识推理、模型优化、模型压缩技术等

GATK

GATK使用简介 Part1/2 GATK(全称The Genome Analysis Toolkit)是Broad Institute开发的用于二代重测序数据分析的一款软件&#xff0c;里面包含了很多有用的工具。 网址&#xff1a;http://www.broadinstitute.org/gsa/wiki/index.php/Home_Page 前段时间刚发布了2.x版本的&…

时序知识图谱推理:Know-Evolve: Deep Temporal Reasoning for Dynamic Knowledge Graphs

0摘要&#xff1a; 带有时间戳的大规模事件数据的可用性催生了边带有时间的动态知识图谱。在动态的知识图谱中&#xff0c;并没有被很好的理解。基于此&#xff0c;本文提出Know-Evolve&#xff0c;这是一种新颖的深度进化知识网络&#xff0c;可以学习时序的非线性进化的实体…

GTK+简介

GTK( GIMP Toolkit ) 是一套在 GIMP 的基础上发展而来的高级的、可伸缩的现代化、跨平台图形工具包&#xff0c;提供一整套完备的图形构件&#xff0c;适用于大大小小各种软件工程项目&#xff0c;不论是小到只需要一个窗口&#xff0c;还是复杂得如桌面环境。简单来说&#xf…

Tanzu 学习系列之 TKGm 1.4 for vSphere 组件集成(1)

开局一张图&#xff01;文接上篇&#xff0c;上一篇文章只是完成了管理集群和工作集群的初始化创建。 TKG 作为企业发行版&#xff0c;除了VMware发行的 Kubernetes&#xff0c;同时也集成了CNCF生态的日志、监控、Ingress等重要VMware发行版本开源组件。这些组件帮助TKG实现初…

Tanzu系列:第8部分 - 创建tkg集群

1、介绍 ①主管集群&#xff08;SupervisorControlPlane&#xff09; 这是一个特殊的 Kubernetes 集群&#xff0c;它使用 ESXi 而不是 Linux 作为其工作节点。 这是通过将 Kubernetes 工作负载 Spherelets 直接集成到 ESXi 管理程序中来实现的。该集群使用 vSphere Pod 服务…

tg

MVC Page:338 响应式web Page:200 http://blog.csdn.net/sven_xu/article/details/46324057 angularjs sql 存储过程&#xff08;1&#xff09;、 函数&#xff08;1&#xff09;、事物与锁&#xff08;1&#xff09;、 游标&#xff08;1&#xff09;、触发器&…

KGAT: Knowledge Graph Attention Network forRecommendation

理解GAT GAT 采用了 Attention 机制&#xff0c;可以为不同节点分配不同权重 假设 Graph 包含 N 个节点&#xff0c;每个节点的特征向量为 hi&#xff0c;维度是 F&#xff0c;如下所示 对节点特征向量 h 进行线性变换&#xff0c;可以得到新的特征向量 hi&#xff0c;维度是…