目錄

簡介

背景資訊

解決方案概述

必要條件

需求

採用元件

假設

組態

步驟1.配置策略

步驟2.配置配置檔案

驗證

連線到Kubernetes群集

使用CLI驗證

疑難排解

相關資訊

簡介

本文檔介紹使用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 Virtual Appliance。但是，您可以在這裡瞭解過程

必要條件

需求

思科建議您瞭解以下主題：

- Intersight帳戶：您需要有效的Cisco ID和Intersight帳戶。

如果您沒有Cisco ID，可以在思科網站上建立Cisco ID。然後按一下Intersight上的Create an Account鏈接。

- Cisco Intersight Assist:Cisco Intersight Assist可幫助您將vCenter/ESXi作為終端目標新增到Cisco Intersight。

- 連線：如果您的環境支援HTTP/S代理，則可以使用該代理將Cisco Intersight Assist裝置連線到網際網路。或者，您必須開啟埠來訪問intersight URL。有關詳細的網路連線要求，請檢查此連結:

- 在Intersight上宣告它的vCenter憑據。

採用元件

本文件所述內容不限於特定軟體和硬體版本。

假設

因為部署Cisco Intersight裝置超出了本文檔的範圍。

我們假定您已經擁有一個正在使用的Intersight帳戶，並且已成功向其申請內部vCenter/Esxi。

本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除（預設）的組態來啟動。如果您的網路運作中，請確保您瞭解任何指令可能造成的影響。

組態

步驟1.配置策略

策略允許簡化管理，因為它們可以將配置抽象為可重複使用的模板。

下面列出了需要配置的一些策略。請注意，所有這些策略都將在Intersight上的Configure >> Policies & Configure >> Pools部分下建立。

您還可以在每個螢幕截圖頂部看到策略的路徑，如下所示。

在ESXi主機上啟動時，此IP池將用於控制節點和輔助節點虛擬機器上的IP地址。

在此定義用於Kubernetes集群內部網路的Pod和服務網路CIDR。

服務和網路CIDR

此策略定義您的NTP和DNS配置。

NTP和DNS配置

使用此策略，可以為docker容器運行時定義代理配置。

Docker的代理配置

在此策略中，您將定義作為主節點和輔助節點部署的虛擬機器所需的配置。

使用的虛擬機器配置

步驟2.配置配置檔案

一旦我們建立了上述策略，就可以將它們繫結到可以部署的配置檔案中。

使用策略和配置檔案部署配置將配置層抽象化，以便可以快速重複部署。

您可以複製此配置檔案，並在幾分鐘內對基礎策略進行少量或多次修改後建立一個新的配置檔案，只需手動過程所需的一小部分時間即可將其複製到一個或多個Kubernetes群集中。

在Name中鍵入GIve並設定Tags。

包含名稱和標籤的配置檔案配置

設定池、節點OS、網路CIDR策略。您還需要配置使用者ID和SSH金鑰（公共）。

其相應的私鑰將用於ssh到Master & Worker節點。

已分配策略的配置檔案配置

配置控制平面：可以定義控制平面上需要多少個主節點。

主節點配置

配置Worker節點：根據應用程式要求，您可以擴大或縮小工作節點。

工作節點配置

配置載入項。現在，您可以通過Prometheus監控自動部署、Kubernetes Dashboard和Graffana。

將來，您可以新增更多外掛，以便使用IKS自動部署。

新增附加裝置（如果有）

檢查摘要，然後按一下Deploy。

配置檔案建立摘要螢幕

驗證

使用本節內容，確認您的組態是否正常運作。

在右上角，您可以跟蹤部署的進度。

使用IKS GUI驗證

隨著部署的進行，您可以看到在vCenter上將會顯示您的Kubernetes主節點和輔助節點。

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（核心）載入項的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

相關資訊

- 在此處檢查IKS服務簡介。

- 在此處檢視使用者指南。

- 在此處檢視Intersight Kubernetes服務演示。

- 技術支援與文件 - Cisco Systems