简介
本文档介绍使用Cisco Intersight™ Kubernetes Service(IKS)从Cisco Intersight(SaaS)调配生产级Kubernetes群集的配置。
背景信息
最近,Kubernetes已成为一种事实上的集装箱管理工具,因为组织倾向于使用集装箱化解决方案在应用现代化方面投入更多资金。借助Kubernetes,开发团队可以轻松部署、管理和扩展其容器化应用,使持续交付渠道更易于进行创新。
但是,Kubernetes也面临着操作挑战,因为它需要时间和技术专业知识来安装和配置。
安装Kubernetes和所需的不同软件组件、创建集群、配置存储、网络和安全以及操作(例如升级、更新和修补关键安全漏洞)都需要持续大量的人力资本投资。
输入IKS,这是一个统包SaaS解决方案,用于管理任何位置的一致、生产级的Kubernetes。要了解有关IKS功能的更多信息,请点击此处查看此链接。
解决方案概述
对于本文而言,我们的想法是展示IKS与运行VMware ESXi和vCenter的内部基础设施无缝集成的能力。
只需点击几下,即可在VMware基础设施上部署生产级Kubernetes群集。
但是,要做到这一点,您必须将内部部署的vCenter与Intersight(称为“声称目标”)集成,vCenter就是此处的目标。
您需要一个Cisco Intersight Assist Virtual Appliance,帮助向Cisco Intersight添加终端目标。您可以使用思科官方网站上提供的引导程序OVA安装Intersight Assist。
为了限制本文档的范围,我们不着重介绍Cisco Intersight Assist虚拟设备安装。但是,您可以了解一下此过程
先决条件
要求
Cisco 建议您了解以下主题:
- Intersight帐户:您需要有效的思科ID和Intersight帐户。
如果没有Cisco ID,您可以在思科网站上创建一个Cisco ID。然后,点击Intersight上的Create an Account链接。
- Cisco Intersight帮助:Cisco Intersight Assist可帮助您将vCenter/ESXi作为终端目标添加到Cisco Intersight。
- 连接性:如果您的环境支持HTTP/S代理,则可以使用该代理将Cisco Intersight Assist设备连接到互联网。或者,您必须打开端口来访问URL。有关详细的网络连接要求,请检查此链接:
- 在Intersight上声明的vCenter凭证。
使用的组件
本文档不限于特定的软件和硬件版本。
假设
因为部署Cisco Intersight设备不在本文档的讨论范围之内。
我们假设您已经有一个正在运行的Intersight帐户,并且已成功向其申请内部vCenter/Esxi。
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
配置
步骤1.配置策略
策略允许简化管理,因为它们将配置抽象为可重复使用的模板。
下面列出了我们需要配置的一些策略。请注意,所有这些策略将在Intersight上的Configure > Policies & Configure >> Pools部分下创建。
您也可以在每个屏幕截图上方看到策略的路径,如下所示。
在ESXi主机上启动时,此IP池将用于控制节点和工作节点虚拟机上的IP地址。

此处您定义了Pod和服务网络CIDR,用于Kubernetes集群内的内部网络。
服务和网络CIDR
此策略定义您的NTP和DNS配置。
NTP和DNS配置
使用此策略,您可以为docker容器运行时定义代理配置。
Docker的代理配置
在此策略中,您将定义在部署为主节点和辅助节点的虚拟机上所需的配置。
使用的VM配置
步骤2.配置配置文件
创建上述策略后,我们会将其绑定到配置文件,然后即可进行部署。
使用策略和配置文件部署配置可抽象化配置层,以便快速重复部署。
您可以复制此配置文件并创建一个新配置文件,只需在手动过程所需的一小部分时间内,在几分钟内对底层策略进行少量或更多的修改,即可将其复制到一个或多个Kubernetes群集。
在“名称”(Name)和“设置标记”(Set Tags)中定义。
带名称和标记的配置文件配置
设置池、节点操作系统、网络CIDR策略。您还需要配置用户ID和SSH密钥(公共)。
其相应的私钥将用于通过ssh连接到主节点和辅助节点。
已分配策略的配置文件配置
配置控制平面:您可以定义控制平面上需要多少个主节点。
主节点配置
配置Worker节点:根据应用要求,您可以扩展或缩小工作节点。
工作节点配置
配置加载项。现在,您可以通过Prometheus监控自动部署Kubernetes Dashboard和Graffana。
将来,您可以添加更多可使用IKS自动部署的加载项。
添加Add-ON(如果有)
选中Summary,然后单击Deploy。
Profile creation Summary屏幕
验证
使用本部分可确认配置能否正常运行。
在右上角,您可以跟踪部署进度。
使用IKS GUI验证
随着部署的进行,您可以看到您的Kubernetes主节点和工作节点在vCenter上出现。
vCenter中即将推出IKS群集
如果需要查看部署的详细步骤,可以进一步深入了解执行过程。
配置文件创建执行
连接到Kubernetes群集
您可以通过以下方式连接到Kubernetes集群:
使用KubeConfig文件,您可以从操作>Kubernetes >选择最右侧的选项下载。
您需要将KubeCtl安装在要从其中访问此群集的管理工作站上。
从IKS下载KubeConfig文件
您还可以使用SSH应用(如Putty)直接通过SSH连接到主节点,并在部署时配置凭证和私钥
如果将“Kubernetes Dashboard”部署为附加设备,您也可以使用它,直接使用GUI部署应用。
要了解更多详细信息,请查看“访问Kubernetes集群”部分,此处:
使用CLI验证
一旦您能够使用kubeCtl连接到Kubernetes集群,您就可以使用以下命令验证该集群是否安装并运行所有组件。
验证群集中的节点是否处于“就绪”状态。
iksadmin@kubek8scl1-controlpl-b8a50f8235:~$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
kubek8scl1-caaskubew-6ba6bf794e Ready 6d4h v1.19.5
kubek8scl1-caaskubew-caa202993e Ready 6d4h v1.19.5
kubek8scl1-controlpl-b8a50f8235 Ready master 6d4h v1.19.5
验证在群集中安装基本组件时创建的Pod的状态。
iksadmin@kubek8scl1-controlpl-b8a50f8235:~$ kubectl get pod -n iks | grep apply-
apply-ccp-monitor-2b7tx 0/1 Completed 0 6d3h
apply-cloud-provider-qczsj 0/1 Completed 0 6d3h
apply-cni-g7dcc 0/1 Completed 0 6d3h
apply-essential-cert-ca-jwdtk 0/1 Completed 0 6d3h
apply-essential-cert-manager-bg5fj 0/1 Completed 0 6d3h
apply-essential-metallb-nzj7h 0/1 Completed 0 6d3h
apply-essential-nginx-ingress-8qrnq 0/1 Completed 0 6d3h
apply-essential-registry-f5wn6 0/1 Completed 0 6d3h
apply-essential-vsphere-csi-tjfnq 0/1 Completed 0 6d3h
apply-kubernetes-dashboard-rslt4 0/1 Completed 0 6d3h
验证管理本地运行舵机的ccp-helm-operator pod的状态并安装加载项。
iksadmin@kubek8scl1-controlpl-b8a50f8235:~$ kubectl get helmcharts.helm.ccp.----.com -A
NAMESPACE NAME STATUS VERSION INSTALLED VERSION SYNCED
iks ccp-monitor INSTALLED 0.2.61-helm3
iks essential-cert-ca INSTALLED 0.1.1-helm3
iks essential-cert-manager INSTALLED v1.0.2-cisco1-helm3
iks essential-metallb INSTALLED 0.12.0-cisco3-helm3
iks essential-nginx-ingress INSTALLED 2.10.0-cisco2-helm3
iks essential-registry INSTALLED 1.8.3-cisco10-helm3
iks essential-vsphere-csi INSTALLED 1.0.1-helm3
iks kubernetes-dashboard INSTALLED 3.0.2-cisco3-helm3
iks vsphere-cpi INSTALLED 0.1.3-helm3
iksadmin@kubek8scl1-controlpl-b8a50f8235:~$ helm ls -A
WARNING: Kubernetes configuration file is group-readable. This is insecure. Location: /home/iksadmin/.kube/config
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
addon-operator iks 1 2021-11-05 07:45:15.44180913 +0000 UTC deployed ccp-helm-operator-9.1.0-alpha.44.g415a48c4be1.0
ccp-monitor iks 1 2021-11-05 08:23:11.309694887 +0000 UTC deployed ccp-monitor-0.2.61-helm3
essential-cert-ca iks 1 2021-11-05 07:55:04.409542885 +0000 UTC deployed cert-ca-0.1.1-helm3 0.1.0
essential-cert-manager iks 1 2021-11-05 07:54:41.433212634 +0000 UTC deployed cert-manager-v1.0.2-cisco1-helm3 v1.0.2
essential-metallb iks 1 2021-11-05 07:54:48.799226547 +0000 UTC deployed metallb-0.12.0-cisco3-helm3 0.8.1
essential-nginx-ingress iks 1 2021-11-05 07:54:46.762865131 +0000 UTC deployed ingress-nginx-2.10.0-cisco2-helm3 0.33.0
essential-registry iks 1 2021-11-05 07:54:36.734982103 +0000 UTC deployed docker-registry-1.8.3-cisco10-helm3 2.7.1
essential-vsphere-csi kube-system 1 2021-11-05 07:54:58.168305242 +0000 UTC deployed vsphere-csi-1.0.1-helm3 v2.0.0
kubernetes-dashboard iks 1 2021-11-05 07:55:10.197905183 +0000 UTC deployed kubernetes-dashboard-3.0.2-cisco3-helm3 2.1.0
vsphere-cpi kube-system 1 2021-11-05 07:54:38.292088943 +0000 UTC deployed vsphere-cpi-0.1.3-helm3 1.1.0
验证管理每个IKS租户群集上默认安装的基本(核心)附加模块的essential-* pod的状态。
iksadmin@kubek8scl1-controlpl-b8a50f8235:~$ kubectl get pod -n iks | grep ^essential-
essential-cert-manager-6bb7d776d-tpkhj 1/1 Running 0 6d4h
essential-cert-manager-cainjector-549c8f74c-x5sjp 1/1 Running 0 6d4h
essential-cert-manager-webhook-76f596b686-drf79 1/1 Running 0 6d4h
essential-metallb-controller-6557847d57-djs9b 1/1 Running 0 6d4h
essential-metallb-speaker-7t54v 1/1 Running 0 6d4h
essential-metallb-speaker-ggmbn 1/1 Running 0 6d4h
essential-metallb-speaker-mwmfg 1/1 Running 0 6d4h
essential-nginx-ingress-ingress-nginx-controller-k2hsw 1/1 Running 0 6d4h
essential-nginx-ingress-ingress-nginx-controller-kfkm9 1/1 Running 0 6d4h
essential-nginx-ingress-ingress-nginx-defaultbackend-695fbj4mnd 1/1 Running 0 6d4h
essential-registry-docker-registry-75b84457f4-4fmlh 1/1 Running 0 6d4h
验证在IKS命名空间中部署的服务和负载平衡器的状态。
iksadmin@kubek8scl1-controlpl-b8a50f8235:~$ kubectl get svc -n iks
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ccp-monitor-grafana ClusterIP 192.168.23.161 80/TCP 6d3h
ccp-monitor-prometheus-alertmanager ClusterIP 192.168.23.70 80/TCP 6d3h
ccp-monitor-prometheus-kube-state-metrics ClusterIP None 80/TCP 6d3h
ccp-monitor-prometheus-node-exporter ClusterIP None 9100/TCP 6d3h
ccp-monitor-prometheus-pushgateway ClusterIP 192.168.23.130 9091/TCP 6d3h
ccp-monitor-prometheus-server ClusterIP 192.168.23.95 443/TCP 6d3h
essential-cert-manager ClusterIP 192.168.23.178 9402/TCP 6d4h
essential-cert-manager-webhook ClusterIP 192.168.23.121 443/TCP 6d4h
essential-nginx-ingress-ingress-nginx-controller LoadBalancer 192.168.23.26 192.168.10.11 80:31121/TCP,443:31753/TCP 6d4h
essential-nginx-ingress-ingress-nginx-defaultbackend ClusterIP 192.168.23.205 80/TCP 6d4h
essential-registry-docker-registry ClusterIP 192.168.23.12 443/TCP 6d4h
kubernetes-dashboard ClusterIP 192.168.23.203 443/TCP 6d4h
故障排除
本部分提供的信息可用于对配置进行故障排除。
如果特定Pod未启动,您可以使用这些命令深入查找原因。
Syntax : kubectl describe pod -n
Example :
kubectl describe pod vsphere-csi-controller-7d56dc7c8-qgbhw -n kube-system
Name: vsphere-csi-controller-7d56dc7c8-qgbhw
Namespace: kube-system
Priority: 0
Node: kubek8scl1-controlpl-eb44cf1bf3/192.168.58.11
Start Time: Tue, 28 Sep 2021 02:39:41 +0000
Labels: app=vsphere-csi-controller
pod-template-hash=7d56dc7c8
role=vsphere-csi
Annotations:
Status: Running
IP: 192.168.58.11
IPs:
IP: 192.168.58.11
Controlled By: ReplicaSet/vsphere-csi-controller-7d56dc7c8
Containers:
csi-attacher:
Container ID: docker://60002693136d00f3b61237304a1fbc033df92f86dc1352965328fe3c4d264fdb
Image: registry.ci.x----x.com/cpsg_kaas-images/quay.io/k8scsi/csi-attacher:v2.0.0
Image ID: docker-pullable://registry.ci.x------x.com/cpsg_kaas-images/quay.io/k8scsi/csi-attacher@sha256:71e2b9b5b8c52d789ef89ba901c8fba270fa623789a988c77c52ebb0257bf723
Port:
Host Port:
Args:
--v=4
--timeout=300s
--csi-address=$(ADDRESS)
--leader-election
State: Running
Started: Thu, 30 Sep 2021 05:44:11 +0000
Last State: Terminated
Reason: Error
Message: Lost connection to CSI driver, exiting
Exit Code: 255
Started: Thu, 30 Sep 2021 05:38:20 +0000
Finished: Thu, 30 Sep 2021 05:39:06 +0000
Ready: True
Restart Count: 531
X----------------------- Log Text Omitted ---------X----------------------X--------------------X
相关信息