AviとKubernetesの統合

aviはネイティブK8Sと統合して、PODネットワークの機能置換を完了し、外部サービスを提供します。
この記事では、インストールプロセスを記録します。

環境コンポーネント:

名前 バージョン 備考
vCenter 7.0u1
AVIコントローラー 20.1.3
どうやって 1.3.1
Kubernestesノード 1.20.2

ここに画像の説明を挿入

トポロジー図とIPアドレス計画

ここに画像の説明を挿入
AVIコントローラ、SE、VC、およびノー​​ドをネットワークセグメントに配置するだけです。

名前 IPアドレス 備考
vCenter 10.105.130.18/26
AVIコントローラー 10.105.130.55/26
K8Sノード 10.105.130.30-32 / 26
AVI SE 10.105.130.41-50 / 26

実験手順

1.通常はVMwarevCenterを介してAviコントローラーをデプロイします2.SEを
構成して正常に動作できるようにAviコントローラーを介してクラウド関連の構成を完了します
3.Helmを介してリポジトリを追加し(またはオフラインでリポジトリを取得し)、helminstallを使用してパラメーターを設定してインストールしますAKO(またはオフラインリポジトリのvalues.yamlを変更してインストールします)
4。AKOがk8sクラスターに正しくデプロイされます5.AKOがAviController 6
との接続を自動的に確立します
。アプリケーションのデプロイとサービスの作成を開始できます!

通常はVMwarevCenterを介してAviControllerを導入します

コンテンツリファレンスのこの部分:AVI vCenterCloud構成

Aviコントローラーがクラウド関連の構成を完了


•仮想マシンリソースのvCenterova展開を介してインポートし、ウィザード、IPアドレス、およびその他の構成を完了します
。•ブラウザーインターフェイス、パスワード、ドメイン名、NTP構成などを介してAviランディングを初期化します。

IPAMは、10.105.130.0 / 26セグメントを含め、Seが使用できるアドレスセグメントを描く必要があります。
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
内部DNSサービスは、前の実験に従います。

Helmを介してリポジトリを追加し、AKOをインストールします

ヘルムインストール、最新の
公式インストールドキュメントv3.5
がここで使用されます:

From Apt (Debian/Ubuntu)
Members of the Helm community have contributed a Helm package for Apt. This package is generally up to date.

curl https://baltocdn.com/helm/signing.asc | sudo apt-key add -
sudo apt-get install apt-transport-https --yes
echo "deb https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list
sudo apt-get update
sudo apt-get install helm

完了後、/ usr / sbin / helmにインストールされ
、デフォルトの場所に移動されたことがわかりました:mv / usr / sbin / helm / usr / local / bin / helm

helm repo add ako https://avinetworks.github.io/avi-helm-charts/charts/stable/ako/
root@ubuntu-master:~# helm search repo
NAME                    CHART VERSION   APP VERSION     DESCRIPTION                             
ako/ako                 1.3.1           1.3.1           A helm chart for Avi Kubernetes Operator
ako/ako-operator        1.3.1           1.3.1           A Helm chart for Kubernetes AKO Operator

AKOをインストールするときは、パラメーターに注意してください。
ここに画像の説明を挿入
最初に必要なパラメーターを使用します。

helm install ako ako/ako --version 1.3.1 \
--set ControllerSettings.controllerHost=10.105.130.55 --set avicredentials.username=admin \
--set avicredentials.password=VMware1! --set ControllerSettings.controllerVersion="20.1.3" \
--set AKOSettings.clusterName=ako-cluster-001 --set NetworkSettings.subnetIP=10.105.130.0 \
--set NetworkSettings.subnetPrefix=26 --set NetworkSettings.networkName=DPortGroup-MGMT-01a \
--set AKOSettings.cniPlugin=calico --set AKOSettings.disableStaticRouteSync=false \
--set L7Settings.shardVSSize=SMALL --namespace=avi-system

エラーが見つかりました:

root@ubuntu-master:~# kubectl logs -f ako-0 -n avi-system 
2021-01-20T03:12:07.028Z        INFO    api/api.go:52   Setting route for GET /api/status
2021-01-20T03:12:07.028Z        INFO    ako-main/main.go:61     AKO is running with version: v1.3.1
2021-01-20T03:12:07.028Z        INFO    api/api.go:110  Starting API server at :8080
2021-01-20T03:12:07.028Z        INFO    ako-main/main.go:67     We are running inside kubernetes cluster. Won't use kubeconfig files.
2021-01-20T03:12:07.126Z        INFO    utils/ingress.go:39     networking.k8s.io/v1/IngressClass enabled on cluster
2021-01-20T03:12:07.126Z        INFO    utils/utils.go:166      Initializing configmap informer in avi-system
2021-01-20T03:12:07.683Z        INFO    cache/avi_ctrl_clients.go:72    Setting the client version to 20.1.3
2021-01-20T03:12:07.683Z        INFO    cache/avi_ctrl_clients.go:72    Setting the client version to 20.1.3
2021-01-20T03:12:07.902Z        INFO    cache/controller_obj_cache.go:2641      Setting cloud vType: CLOUD_NONE
2021-01-20T03:12:07.902Z        ERROR   cache/controller_obj_cache.go:2646      Cloud does not have a ipam_provider_ref configured
2021-01-20T03:12:07.902Z        INFO    lib/lib.go:70   Setting AKOUser: ako-ako-cluster-001 for Avi Objects
2021-01-20T03:12:07.911Z        WARN    cache/controller_obj_cache.go:2474      Invalid input detected, AKO will be rebooted to retry
2021-01-20T03:12:07.911Z        INFO    api/api.go:68   Shutting down the API server
2021-01-20T03:12:07.911Z        INFO    api/api.go:113  API server shutdown: http: Server closed
2021-01-20T03:12:08.411Z        WARN    cache/controller_obj_cache.go:2477      Invalid input detected, sync will be disabled.
2021-01-20T03:12:08.411Z        ERROR   ako-main/main.go:134    Handleconfigmap error during reboot, shutting down AKO

2021-01-20T03:12:07.902Zエラーcache / controller_obj_cache.go:2646クラウドにはipam_provider_ref構成
がありませんが、IPAMはAVIコントローラー上に構築されています。ここに見つからないと言われていますか?
ログを注意深く参照して、次のことを確認してください
。2021-01-20T03:12:07.902Z INFO cache / controller_obj_cache.go:2641クラウドの設定vType:CLOUD_NONE
設定でクラウドは次の
とおりです。

helm install ako ako/ako --version 1.3.1 \
--set ControllerSettings.controllerHost=10.105.130.55 --set avicredentials.username=admin \
--set avicredentials.password=VMware1! --set ControllerSettings.controllerVersion="20.1.3" \
--set AKOSettings.clusterName=ako-cluster-001 --set NetworkSettings.subnetIP=10.105.130.0 \
--set NetworkSettings.subnetPrefix=26 --set NetworkSettings.networkName=DPortGroup-MGMT-01a \
 *--set ControllerSettings.cloudName=avi-vcsa-01a \* 
--set AKOSettings.cniPlugin=calico --set AKOSettings.disableStaticRouteSync=false \
--set L7Settings.shardVSSize=SMALL --namespace=avi-system

実行後の成功:

root@ubuntu-master:~# helm delete ako  -n avi-system
release "ako" uninstalled
root@ubuntu-master:~# helm install ako ako/ako --version 1.3.1 \
> --set ControllerSettings.controllerHost=10.105.130.55 --set avicredentials.username=admin \
> --set avicredentials.password=VMware1! --set ControllerSettings.controllerVersion="20.1.3" \
> --set AKOSettings.clusterName=ako-cluster-001 --set NetworkSettings.subnetIP=10.105.130.0 \
> --set NetworkSettings.subnetPrefix=26 --set NetworkSettings.networkName=DPortGroup-MGMT-01a \
> --set ControllerSettings.cloudName=avi-vcsa-01a \
> --set AKOSettings.cniPlugin=calico --set AKOSettings.disableStaticRouteSync=false \
> --set L7Settings.shardVSSize=SMALL --namespace=avi-system
NAME: ako
LAST DEPLOYED: Wed Jan 20 11:29:56 2021
NAMESPACE: avi-system
STATUS: deployed
REVISION: 1
root@ubuntu-master:~# kubectl logs -f ako-0 -n avi-system  
Error from server (NotFound): pods "ako-0" not found
root@ubuntu-master:~# kubectl get po -n avi-system 
NAME    READY   STATUS    RESTARTS   AGE
ako-0   1/1     Running   0          13s
root@ubuntu-master:~# kubectl logs -f ako-0 -n avi-system 
2021-01-20T03:30:22.401Z        INFO    api/api.go:52   Setting route for GET /api/status
2021-01-20T03:30:22.401Z        INFO    ako-main/main.go:61     AKO is running with version: v1.3.1
2021-01-20T03:30:22.401Z        INFO    ako-main/main.go:67     We are running inside kubernetes cluster. Won't use kubeconfig files.
2021-01-20T03:30:22.402Z        INFO    api/api.go:110  Starting API server at :8080
2021-01-20T03:30:22.461Z        INFO    utils/ingress.go:39     networking.k8s.io/v1/IngressClass enabled on cluster
2021-01-20T03:30:22.461Z        INFO    utils/utils.go:166      Initializing configmap informer in avi-system
2021-01-20T03:30:22.963Z        INFO    cache/avi_ctrl_clients.go:72    Setting the client version to 20.1.3
2021-01-20T03:30:22.963Z        INFO    cache/avi_ctrl_clients.go:72    Setting the client version to 20.1.3
2021-01-20T03:30:23.099Z        INFO    cache/controller_obj_cache.go:2641      Setting cloud vType: CLOUD_VCENTER
2021-01-20T03:30:23.099Z        INFO    lib/lib.go:70   Setting AKOUser: ako-ako-cluster-001 for Avi Objects
......

展開状況を確認します。

root@ubuntu-master:~#  helm list -n avi-system
NAME    NAMESPACE       REVISION        UPDATED                                 STATUS          CHART           APP VERSION
ako     avi-system      1               2021-01-20 11:29:56.831070472 +0800 CST deployed        ako-1.3.1       1.3.1      
root@ubuntu-master:~# kubectl get po -n avi-system -owide
NAME    READY   STATUS    RESTARTS   AGE   IP              NODE              NOMINATED NODE   READINESS GATES
ako-0   1/1     Running   0          26h   172.38.11.198   ubuntu-worker01   <none>           <none>

検証

簡単なアプリケーションを作成してみてください。

apiVersion: v1
kind: Service
metadata:
  name: hello-kubernetes
spec:
  type: LoadBalancer
  ports:
  - port: 80
    targetPort: 8080
  selector:
    app: hello-kubernetes
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: hello-kubernetes
spec:
  replicas: 3
  selector:
    matchLabels:
      app: hello-kubernetes
  template:
    metadata:
      labels:
        app: hello-kubernetes
    spec:
      containers:
      - name: hello-kubernetes
        image: paulbouwer/hello-kubernetes:1.5
        ports:
        - containerPort: 8080
        env:
        - name: MESSAGE
          value: I just deployed Web Service via AVI for pod Cluster!!

実行後、以下を表示できます。

root@ubuntu-master:~# kubectl  apply -f hello-depolyment.yaml 
service/hello-kubernetes created
deployment.apps/hello-kubernetes created
root@ubuntu-master:~# kubectl  get svc
NAME               TYPE           CLUSTER-IP       EXTERNAL-IP     PORT(S)        AGE
hello-kubernetes   LoadBalancer   10.100.200.216   10.105.130.43   80:32243/TCP   5s
kubernetes         ClusterIP      10.96.0.1        <none>          443/TCP        38h

このサービスの外部アドレスは10.105.130.43で、ブラウザで確認できます。
ここに画像の説明を挿入
ここに画像の説明を挿入

AVIコントロールパネルで:ブラウザの確認を通じて
ここに画像の説明を挿入
ここに画像の説明を挿入
helloサービスのDNSアドレスを表示できます:hello-kubernetes.default.avi.vmlab.local

ここに画像の説明を挿入
ここに画像の説明を挿入
コマンドを使用してhello-deploymentのポッドの数を変更します

root@ubuntu-master:~# kubectl scale deployment --replicas=6 hello-kubernetes 
deployment.apps/hello-kubernetes scaled
root@ubuntu-master:~# kubectl get po -owide
NAME                               READY   STATUS    RESTARTS   AGE   IP               NODE              NOMINATED NODE   READINESS GATES
hello-kubernetes-8f5997554-5bgxh   1/1     Running   0          27m   172.38.11.210    ubuntu-worker01   <none>           <none>
hello-kubernetes-8f5997554-5tzh5   1/1     Running   0          27m   172.38.184.206   ubuntu-worker02   <none>           <none>
hello-kubernetes-8f5997554-96hzx   1/1     Running   0          27m   172.38.184.205   ubuntu-worker02   <none>           <none>
hello-kubernetes-8f5997554-d8442   1/1     Running   0          9s    172.38.11.211    ubuntu-worker01   <none>           <none>
hello-kubernetes-8f5997554-h76hr   1/1     Running   0          9s    172.38.11.212    ubuntu-worker01   <none>           <none>
hello-kubernetes-8f5997554-tnwr6   1/1     Running   0          9s    172.38.184.207   ubuntu-worker02   <none>           <none>

AVI制御インターフェースを再度確認してください
ここに画像の説明を挿入
。AVIは自動的にLB負荷を拡張します。

helloサービスをもう一度減らします。

root@ubuntu-master:~# kubectl scale deployment --replicas=4 hello-kubernetes 
deployment.apps/hello-kubernetes scaled
root@ubuntu-master:~# kubectl get po -owide
NAME                               READY   STATUS        RESTARTS   AGE    IP               NODE              NOMINATED NODE   READINESS GATES
hello-kubernetes-8f5997554-5bgxh   1/1     Running       0          32m    172.38.11.210    ubuntu-worker01   <none>           <none>
hello-kubernetes-8f5997554-5tzh5   1/1     Running       0          32m    172.38.184.206   ubuntu-worker02   <none>           <none>
hello-kubernetes-8f5997554-96hzx   1/1     Running       0          32m    172.38.184.205   ubuntu-worker02   <none>           <none>
hello-kubernetes-8f5997554-d8442   0/1     Terminating   0          5m8s   172.38.11.211    ubuntu-worker01   <none>           <none>
hello-kubernetes-8f5997554-h76hr   1/1     Running       0          5m8s   172.38.11.212    ubuntu-worker01   <none>           <none>
hello-kubernetes-8f5997554-tnwr6   0/1     Terminating   0          5m8s   <none>           ubuntu-worker02   <none>           <none>

ここに画像の説明を挿入

結論:AVIとK8Sの統合が利用可能であり、自動Ingress LB、yaml、または単純なコマンドモードを実現でき、自動拡張と縮小をサポートします。

この記事では、AVI / AKOとKubernetesの単純な統合を選択します。その他のメソッドとリファレンスは次のとおりです。avi
-helm-
chartsAviKubernetes演算子

上記。

おすすめ

転載: blog.csdn.net/weixin_43394724/article/details/112862941