목차

소개

배경 정보

솔루션 개요

사전 요구 사항

요구 사항

사용되는 구성 요소

가정

구성

1단계. 정책 구성

2단계. 프로필 구성

다음을 확인합니다.

Kubernetes 클러스터에 연결

CLI로 확인

문제 해결

관련 정보

소개

이 문서에서는 Cisco Intersight™ IKS(Kubernetes Service)를 사용하여 Cisco Intersight(SaaS)에서 프로덕션 등급 Kubernetes 클러스터를 프로비저닝하기 위한 컨피그레이션에 대해 설명합니다.

배경 정보

Kubernetes는 최근 컨테이너화된 솔루션으로 애플리케이션 현대화에 더 많은 투자를 하려는 조직이 늘어남에 따라 사실상 컨테이너 관리 툴이 되었습니다. 개발 팀은 Kubernetes를 통해 컨테이너화된 애플리케이션을 쉽게 구축, 관리 및 확장할 수 있으므로, 지속적인 전달 파이프라인에 더 쉽게 혁신을 이용할 수 있습니다.

그러나 Kubernetes는 설치 및 구성에 시간과 기술 전문 지식이 필요하기 때문에 운영상의 문제가 수반됩니다.

Kubernetes와 필요한 다양한 소프트웨어 구성 요소 설치, 클러스터 생성, 스토리지 구성, 네트워킹 및 보안, 운영(예: 중요 보안 버그 업그레이드, 업데이트 및 패치)을 위해서는 지속적인 인적 자본 투자가 필요합니다.

어디서나 일관성 있는 프로덕션 등급의 Kubernetes를 관리하기 위한 턴키 방식의 SaaS 솔루션인 IKS를 입력합니다. IKS의 기능에 대한 자세한 내용은 여기에서 이 링크를 확인하십시오.

솔루션 개요

이 문서에서는 VMware ESXi 및 vCenter를 실행하는 온프레미스 인프라와 원활하게 통합되는 IKS의 기능을 소개하고자 합니다.

클릭 몇 번으로 VMware 인프라에 프로덕션 등급의 Kubernetes 클러스터를 구축할 수 있습니다.

그러나 이를 위해서는 온프레미스 vCenter를 Intersight와 통합해야 합니다. Intersight는 '목표 청구'로 알려져 있습니다. 여기서 vCenter가 목표입니다.

Cisco Intersight에 엔드포인트 대상을 추가하는 데 도움이 되는 Cisco Intersight Assist Virtual Appliance가 필요합니다. Cisco 공식 웹 사이트에 있는 부트스트랩 OVA를 사용하여 Intersight Assist를 설치할 수 있습니다.

이 문서의 범위를 제한하기 위해 Cisco Intersight Assist Virtual Appliance 설치에 중점을 두지 않습니다. 하지만 여기서는 이 프로세스를

사전 요구 사항

요구 사항

다음 주제에 대한 지식을 보유하고 있으면 유용합니다.

- Intersight 계정: 유효한 Cisco ID와 Intersight 어카운트가 필요합니다.

Cisco 웹 사이트에 Cisco ID가 없는 경우 생성할 수 있습니다. 그런 다음 Intersight에서 Create an Account(어카운트 생성) 링크를 클릭합니다.

- Cisco Intersight Assist: Cisco Intersight Assist를 사용하면 vCenter/ESXi를 엔드포인트 대상으로 Cisco Intersight에 추가할 수 있습니다.

- 연결: 환경에서 HTTP/S 프록시를 지원하는 경우 이를 사용하여 Cisco Intersight Assist Appliance를 인터넷에 연결할 수 있습니다. 또는 URL을 상호 보려면 포트를 열어야 합니다. 이 링크에서 자세한 네트워크 연결 요구 사항을 확인하십시오.

- vCenter 자격 증명으로 Intersight에서 클레임합니다.

사용되는 구성 요소

이 문서는 특정 소프트웨어 및 하드웨어 버전으로 한정되지 않습니다.

가정

Cisco Intersight Appliance는 이 문서의 범위를 벗어납니다.

이미 작동 중인 Intersight 어카운트가 있으며, 이에 대한 온프레미스 vCenter/Esxi를 성공적으로 클레임했다고 가정합니다.

이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 이해해야 합니다.

구성

1단계. 정책 구성

정책을 사용하면 구성을 재사용 가능한 템플릿으로 추상화할 때 관리가 간소화됩니다.

구성해야 하는 정책 중 일부는 아래에 나열되어 있습니다. 이러한 모든 정책은 Intersight의 Configure(구성) >> Policies & Configure(정책 및 구성) >> Pools(풀) 섹션에서 생성됩니다.

아래 표시된 각 스크린샷 위에 정책 경로가 표시됩니다.

이 IP 풀은 ESXi 호스트에서 실행될 때 제어 및 작업자 노드 가상 머신의 IP 주소에 사용됩니다.

여기에서 Kubernetes 클러스터 내의 내부 네트워킹을 위한 Pod and Services Network CIDR을 정의합니다.

서비스 및 네트워크 CIDR

이 정책은 NTP 및 DNS 컨피그레이션을 정의합니다.

NTP 및 DNS 컨피그레이션

이 정책을 사용하면 docker 컨테이너 런타임의 프록시 컨피그레이션을 정의할 수 있습니다.

Docker용 프록시 구성

이 정책에서는 마스터 및 작업자 노드로 구축된 가상 머신에 필요한 컨피그레이션을 정의합니다.

사용된 VM 컨피그레이션

2단계. 프로필 구성

위의 정책을 생성한 후에는 이를 프로파일로 바인딩하여 구축할 수 있습니다.

정책 및 프로필을 사용하여 컨피그레이션을 구축하면 컨피그레이션 레이어가 추상화되어 신속하게 반복적으로 구축할 수 있습니다.

이 프로필을 복사하여 몇 분 이내에 기본 정책에 대한 수정 사항이 거의 없는 새 프로필을 하나 이상의 Kubernetes 클러스터에 수동 프로세스에 필요한 시간 내에 만들 수 있습니다.

Name(이름)에 GiVe를 입력하고 Tags(태그)를 설정합니다.

이름 및 태그가 있는 프로필 구성

풀, 노드 OS, 네트워크 CIDR 정책을 설정합니다. 또한 사용자 ID 및 SSH 키(공용)를 구성해야 합니다.

해당 개인 키를 사용하여 Master & Worker 노드에 ssh를 입력합니다.

할당된 정책이 있는 프로필 구성

컨트롤 플레인을 구성합니다. 제어 평면에 필요한 마스터 노드의 수를 정의할 수 있습니다.

마스터 노드 구성

작업자 노드를 구성합니다. 애플리케이션 요구 사항에 따라 작업자 노드를 확장하거나 축소할 수 있습니다.

작업자 노드 구성

추가 기능을 구성합니다. 지금부터 Kubernetes Dashboard 및 Graffana를 Prometeus 모니터링으로 자동으로 구축할 수 있습니다.

나중에 IKS를 사용하여 자동으로 구축할 수 있는 추가 기능을 추가할 수 있습니다.

추가 기능 추가(있는 경우)

Summary(요약)를 선택하고 Deploy(구축)를 클릭합니다.

프로필 생성 요약 화면

다음을 확인합니다.

이 섹션을 사용하여 컨피그레이션이 제대로 작동하는지 확인합니다.

오른쪽 상단에서 구축의 진행 상황을 추적할 수 있습니다.

IKS GUI를 사용하여 확인

구축이 진행되면서 Kubernetes Master 및 Worker Node가 vCenter에서 시작되는 것을 볼 수 있습니다.

vCenter에서 IKS 클러스터 출시

구축에 대한 자세한 단계를 확인해야 하는 경우 실행을 더 자세히 살펴볼 수 있습니다.

프로필 생성 실행

Kubernetes 클러스터에 연결

다음과 같은 방법으로 Kubernetes 클러스터에 연결할 수 있습니다.

Operate(운영) > Kubernetes(KubeConfig) > Select the options on the far right(맨 오른쪽에 있는 옵션 선택)에서 다운로드할 수 있는 KubeConfig 파일을 사용합니다.

이 클러스터에 액세스하려는 Management 워크스테이션에 KubeCtl이 설치되어 있어야 합니다.

IKS에서 KubeConfig 파일 다운로드

구축 시 구성된 자격 증명 및 개인 키를 사용하여 Putty와 같은 SSH 애플리케이션을 사용하여 마스터 노드에 직접 SSH를 설정할 수도 있습니다

'Kubernetes Dashboard'를 추가 기능으로 구축하는 경우 GUI를 사용하여 애플리케이션을 직접 구축할 수도 있습니다.

자세한 내용을 확인하려면 여기에서 'Access Kubernetes Clusters' 섹션을 확인하십시오.

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 테넌트 클러스터에 기본적으로 설치된 필수(코어) 추가 기능을 관리하는 필수* 포드의 상태를 확인합니다.

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