简介
本文档介绍使用Cisco Intersight™ Kubernetes服务(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虚拟设备,该设备有助于将终端目标添加到Cisco Intersight。您可以使用思科官方网站上提供的引导程序OVA安装Intersight Assist。
为限制本文档的范围,我们不重点介绍Cisco Intersight Assist虚拟设备安装。但是,你可以看看这个过程
先决条件
要求
Cisco 建议您了解以下主题:
- Intersight帐户:您需要有效的思科ID和Intersight帐户。
如果您没有思科ID,可以在思科网站上创建思科ID。然后,单击Intersight上的创建帐户链接。
- Cisco Intersight Assist:Cisco Intersight Assist可帮助您将vCenter/ESXi作为终端目标添加到Cisco Intersight。
- 连接性:如果您的环境支持HTTP/S代理,您可以使用该代理将Cisco Intersight Assist设备连接到互联网。或者,您必须打开端口以访问URL。请检查此链接以了解详细的网络连接要求:
- vCenter凭证,用于在Intersight上申请。
使用的组件
本文档不限于特定的软件和硬件版本。
假设
由于部署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集群。
GIve在名称中并设置标记。
带名称和标记的配置文件配置
设置池、节点OS、网络CIDR策略。您还需要配置用户ID和SSH密钥(公共)。
其相应的私钥将用于ssh到主节点和工作节点。
已分配策略的配置文件配置
配置控制平面:您可以定义控制平面上需要多少个主节点。
主节点配置
配置工作节点:根据应用要求,您可以纵向或纵向扩展工作节点。
工作节点配置
配置加载项。到目前为止,您可以自动部署Kubernetes Dashboard和Graffana,并进行Prometheus监控。
将来,您可以添加更多可使用IKS自动部署的插件。
添加插件(如果有)
选中Summary,然后单击Deploy。
配置文件创建摘要屏幕
验证
使用本部分可确认配置能否正常运行。
在右上角,您可以跟踪部署进度。
使用IKS GUI验证
随着部署的推进,您可以看到vCenter上的Kubernetes主节点和工作节点。
vCenter中即将出现IKS群集
如果您需要查看部署的详细步骤,可以进一步深入执行。
配置文件创建执行
连接到Kubernetes集群
您可以通过以下方式连接到Kubernetes集群:
使用KubeConfig文件,您可以从Operate > Kubernetes > Select 最右边的选项下载该文件。
您需要在管理工作站上安装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租户群集上默认安装的基本(核心)插件的基本* 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
相关信息