Mục lục
Phần 1: Các bước chuẩn bị
Phần 2: Cấu hình VMware Tanzu
Phần 3: Kết nối và tạo TKG cluster
Tải và cài đặt kubectl và vSphere Plugin
Từ trang Namespace, ở tab Status, phía dưới “Link to CLI Tools”, Click Open
Trên giao diện web, Select Operating System cho client: (Lab: Linux)
Nháy phải Download CLI Plugin và Copy Link Address
SSH vào máy Client CLI
Tải file vSphere-Plugin.zip
Ở Linux có thể sử dụng wget https://”yourclusterVIP”/wcp/plugin/linux-amd64/vsphere-plugin.zip –no-check-certificate
tamtran20@cli-vm:~$ wget https://192.168.22.21/wcp/plugin/linux-amd64/vsphere-plugin.zip --no-check-certificate
--2023-06-01 11:23:22-- https://192.168.22.21/wcp/plugin/linux-amd64/vsphere-plugin.zip
Connecting to 192.168.22.21:443... connected.
WARNING: The certificate of ‘192.168.22.21’ is not trusted.
WARNING: The certificate of ‘192.168.22.21’ doesn't have a known issuer.
HTTP request sent, awaiting response... 200 OK
Length: 40174348 (38M) [text/plain]
Saving to: ‘vsphere-plugin.zip.1’
vsphere-plugin.zip.1 100%[===========================================================================================>] 38.31M 102MB/s in 0.4s
Unzip vsphere-plugin.zip vào working directory
Bạn sẽ thấy 2 file thực thi: kubectl and vsphere-kubectl
tamtran20@cli-vm:~$ unzip vsphere-plugin.zip
Archive: vsphere-plugin.zip
inflating: bin/kubectl-vsphere
inflating: bin/kubectl
ubuntu@cli-vm:~$
Cập nhật system path để trỏ về những file binaries này. Trong Linux cách đơn giải nhất là copy chúng vào /usr/local/bin
Bây giờ thì bạn đã chuẩn bị xong cho việc kết nối vào Supervisor cluster
Login và tạo TKG Cluster
Users phải được xác thực bằng thông tin user login vào Supervisor cluster.
Từ CLI:
Nhập kubectl vsphere login –server “Supervisor Cluster VIP” -u “user you added to namespace hoặc VC Admin user” –insecure-skip-tls-verify
tamtran20@cli-vm:~$ kubectl vsphere login --server 192.168.22.21 -u administrator@vsphere.local --insecure-skip-tls-verify
Logged in successfully.
You have access to the following contexts:
192.168.22.21
tkg
If the context you wish to use is not in this list, you may need to try
logging in again later, or contact your cluster administrator.
To change context, use `kubectl config use-context <workload name>`
Bạn sẽ thấy Namespace tkg đã được tạo lúc trước.
Bây giờ bạn phải set context để trỏ về namespace đó
Nhập kubectl config use-context “Your Namespace”
tamtran20@cli-vm:~$ kubectl config use-context tkg
Switched to context "tkg".
ubuntu@cli-vm:~$
Tạo TKG cluster đơn giản chỉ là summit file specification trong đó sẽ định nghĩa cluster. Đây là một file mẫu.
apiVersion: run.tanzu.vmware.com/v1alpha2
kind: TanzuKubernetesCluster
metadata:
name: tkgs-cluster
namespace: tkg
spec:
topology:
controlPlane:
replicas: 1
vmClass: best-effort-small
storageClass: vsan-default-storage-policy
tkr: reference: name: v1.21.2---vmware.1-tkg.1.ee25d55 nodePools: - name: tkg-cluster-nodeool-1 replicas: 2 vmClass: best-effort-medium storageClass: k8s-policy tkr: reference: name: v1.21.2---vmware.1-tkg.1.ee25d55 settings: network: pods: cidrBlocks: - 100.96.0.0/11 services: cidrBlocks: - 100.64.0.0/13
Bạn cần kiểm tra một số yêu cầu trước khi sumit specification.
Kiểm tra vmClass được gán vào Namespace
Dùng lệnh kubectl get vmclassbinding
ubuntu@cli-vm:~$ kubectl get vmclassbinding
NAME VIRTUALMACHINECLASS AGE
best-effort-2xlarge best-effort-2xlarge 2m4s
best-effort-4xlarge best-effort-4xlarge 2m4s
best-effort-8xlarge best-effort-8xlarge 2m4s
best-effort-large best-effort-large 2m4s
best-effort-medium best-effort-medium 103s
best-effort-small best-effort-small 119s
best-effort-xlarge best-effort-xlarge 103s
best-effort-xsmall best-effort-xsmall 2m2s
guaranteed-2xlarge guaranteed-2xlarge 119s
guaranteed-4xlarge guaranteed-4xlarge 119s
ubuntu@cli-vm:~$
Kiểm tra storage class, nó sẽ là Storage Policy được gán vào Namespace lúc trước.
Dùng lệnh kubectl describe namespace “Your Namespace Name” |grep storageclass
tamtran20@cli-vm:~$ kubectl describe namespace tkg |grep storageclass
vsan-default-storage-policy.storageclass.storage.k8s.io/requests.storage 0 9223372036854775807
Kiểm tra image version có hiện hữu hay không. Trong spec, image version là v1.21.2—vmware.1-tkg.1.ee25d55
Dùng lệnh kubectl get tkr
ubuntu@cli-vm:~$ kubectl get tkr |grep v1.21.2
v1.21.2---vmware.1-tkg.1.ee25d55 1.21.2+vmware.1-tkg.1.ee25d55 True True 4d13h
ubuntu@cli-vm:~$
Bây giờ bạn có thể tạo cluster bằng cách đơn giản là apply specification file
Dùng lệnh kubectl apply -f “filename.yaml”
tamtran20@cli-vm:~$ kubectl apply -f demo-applications/tkgs-cluster.yaml
tanzukubernetescluster.run.tanzu.vmware.com/tkgs-cluster created
Kiểm tra quá trình tạo bằng cách describe cluster
Dùng lệnh kubectl describe tkc “cluster name from the spec file”
Nhìn vào hàng Phase ở cuối cùng. “Running” là cluster đã được tạo thành công.
API Endpoints:
Host: 192.168.220.5
Port: 6443
Conditions:
Last Transition Time: 2021-11-01T11:38:30Z
Status: True
Type: Ready
Last Transition Time: 2021-11-01T11:30:35Z
Status: True
Type: AddonsReady
Last Transition Time: 2021-11-01T11:30:37Z
Status: True
Type: ControlPlaneReady
Last Transition Time: 2021-11-01T11:38:30Z
Status: True
Type: NodePoolsReady
Last Transition Time: 2021-11-01T11:38:30Z
Message: 1/1 Control Plane Node(s) healthy. 2/2 Worker Node(s) healthy
Status: True
Type: NodesHealthy
Last Transition Time: 2021-11-01T11:30:07Z
Status: True
Type: ProviderServiceAccountsReady
Last Transition Time: 2021-11-01T11:30:07Z
Status: True
Type: RoleBindingSynced
Last Transition Time: 2021-11-01T11:30:43Z
Status: True
Type: ServiceDiscoveryReady
Last Transition Time: 2021-11-01T11:30:40Z
Status: True
Type: StorageClassSynced
Last Transition Time: 2021-11-01T11:30:10Z
Status: True
Type: TanzuKubernetesReleaseCompatible
Last Transition Time: 2021-10-27T21:31:29Z
Reason: NoUpdates
Status: False
Type: UpdatesAvailable
Phase: running
Total Worker Replicas: 2
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal PhaseChanged 6m56s vmware-system-tkg/vmware-system-tkg-controller-manager/tanzukubernetescluster-status-controller cluster changes from creating phase to running phase
Login vào TKG Cluster mới và chọn Context
Khi cluster sẵn sàng, bạn phải login để generate token cần thiết cho việc truy cập.
Dùng lệnh kubectl vsphere login –server “Supervisor Cluster VIP” -u administrator@vsphere.local –tanzu-kubernetes-cluster-name tkgs-cluster –tanzu-kubernetes-cluster-namespace “Namespace Name” –insecure-skip-tls-verify
tamtran20@cli-vm:~$ kubectl vsphere login --server 192.168.22.21 -u administrator@vsphere.local --tanzu-kubernetes-cluster-name tkgs-cluster --tanzu-kubernetes-cluster-namespace tkg --insecure-skip-tls-verify
Logged in successfully.
You have access to the following contexts:
192.168.22.21
tkg
tkgs-cluster
If the context you wish to use is not in this list, you may need to try
logging in again later, or contact your cluster administrator.
To change context, use `kubectl config use-context <workload name>`
Chuyển context thành TKG cluster
Dùng lệnh kubectl config use-context tkgs-cluster
tamtran20@cli-vm:~$ kubectl config use-context tkgs-cluster
Switched to context "tkgs-cluster".
Kiểm tra lại thử bạn đã trỏ TKG Cluster chưa.
tamtran20@cli-vm:~$
kubectl config get-contexts tamtran20@cli-vm:~$
kubectl config current-context
Dùng lệnh kubectl get pods -A bạn sẽ thấy system pods của TKG cluster.
Antrea overlay networking pods chỉ được có ở TKG cluster, không có Supervisor.
tamtran20@cli-vm:~$ kubectl get pods -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system antrea-agent-jcr4n 2/2 Running 0 12m
kube-system antrea-agent-npjbv 2/2 Running 0 12m
kube-system antrea-agent-zsmh8 2/2 Running 0 18m
kube-system antrea-controller-54d7f86756-lr298 1/1 Running 0 18m
kube-system antrea-resource-init-684f959cb8-ts5qc 1/1 Running 0 18m
kube-system coredns-7f5b944f6b-kt7nk 1/1 Running 0 19m
kube-system coredns-7f5b944f6b-z8nxn 1/1 Running 0 16m
kube-system docker-registry-tkgs-cluster-control-plane-n746c 1/1 Running 0 19m
kube-system docker-registry-tkgs-cluster-tkg-cluster-nodeool-1-q7q7f-564856f6d8-b49bl 1/1 Running 0 12m
kube-system docker-registry-tkgs-cluster-tkg-cluster-nodeool-1-q7q7f-564856f6d8-t9xlz 1/1 Running 0 12m
kube-system etcd-tkgs-cluster-control-plane-n746c 1/1 Running 0 19m
kube-system kube-apiserver-tkgs-cluster-control-plane-n746c 1/1 Running 0 19m
kube-system kube-controller-manager-tkgs-cluster-control-plane-n746c 1/1 Running 0 19m
kube-system kube-proxy-cs69m 1/1 Running 0 12m
kube-system kube-proxy-fz6kx 1/1 Running 0 12m
kube-system kube-proxy-phznh 1/1 Running 0 19m
kube-system kube-scheduler-tkgs-cluster-control-plane-n746c 1/1 Running 0 19m
kube-system metrics-server-5bc9f76d99-8s9dq 1/1 Running 0 18m
vmware-system-auth guest-cluster-auth-svc-84246 1/1 Running 0 16m
vmware-system-cloud-provider guest-cluster-cloud-provider-c84648fbd-lzsvj 1/1 Running 0 19m
vmware-system-csi vsphere-csi-controller-549f4bf678-n4wfl 6/6 Running 0 19m
vmware-system-csi vsphere-csi-node-kd5v8 3/3 Running 0 19m
vmware-system-csi vsphere-csi-node-twzhj 3/3 Running 0 12m
vmware-system-csi vsphere-csi-node-vrv2w 3/3 Running 0 12m
Dùng lệnh kubectl get nodess -A bạn sẽ thấy nodes của TKG cluster.
tamtran20@cli-vm:~$ kubectl get nodes -A
NAME STATUS ROLES AGE VERSION
tkgs-cluster-mgrlb-rspxk Ready control-plane,master 26m v1.21.2+vmware.1
tkgs-cluster-tkg-cluster-nodeool-1-lgjcl-7fc56456cd-5w2g5 Ready <none> 24m v1.21.2+vmware.1
tkgs-cluster-tkg-cluster-nodeool-1-lgjcl-7fc56456cd-668qv Ready <none> 24m v1.21.2+vmware.1
Đến thời điểm hiện tại, TKG cluster đã sẵn sàn cho developers để triển khai ứng dụng.
Cheatsheet các câu lệnh để làm việc với kubectl https://kubernetes.io/docs/reference/kubectl/cheatsheet/