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演算子
上記。