NUC로 시작하는 VMware Tanzu - vSphere with Tanzu로 APP 배포
10376 단어 vmwareNUCkubernetes
APP 배포
곧, Deploy a workload에 따라 APP에 대한 작업을 배우십시오!
포드 조작
우선은, 「pod 작성 & 로그인→pod내에서 조작→pod 삭제」를 해 보고 싶습니다.
발판# ログインは一定時間で有効期限が切れます。必要に応じて、ログインし直しましょう。
$ SC_IP=172.18.0.208
$ NS=tkgs-dev
$ kubectl vsphere login --server=$SC_IP --tanzu-kubernetes-cluster-name tkc-1 --tanzu-kubernetes-cluster-namespace $NAMESPACE --insecure-skip-tls-verify
# busybox podを作成して、pod内のshellにログインするコマンド
$ kubectl run -i --tty busybox --image=busybox --restart=Never -- sh
# (/ # というプロンプトに変わり、ログイン出来たことが確認できる)
/ #
# googleさんに話しかけてみる
/ # ping google.com
PING google.com (172.217.25.206): 56 data bytes
64 bytes from 172.217.25.206: seq=0 ttl=114 time=3.975 ms
^C
# googleさんへの経路を確認
/ # traceroute -n google.com
traceroute to google.com (172.217.161.46), 30 hops max, 46 byte packets
1 192.168.1.1 0.492 ms 0.002 ms 0.001 ms
2 172.18.0.1 1.562 ms 1.005 ms 1.243 ms
3 192.168.5.1 1.863 ms 0.757 ms 0.878 ms
4 * * *
# (以下省略)
# exitすると、プロンプトが戻ってきてPodが「完了」状態となる。
/ # exit
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
busybox 0/1 Completed 0 62s
# Podの削除
$ kubectl delete pod busybox
pod "busybox" deleted
$ kubectl get pods
No resources found in default namespace.
Persistent Volume 만들기
다음 시나리오입니다. vSphere with Tanzu에서는 Storage Class를 이용한 Persistent Volume(K8s상의 영구 디스크)의 이용이 특징 중 하나이므로 시도해보고 싶습니다.
발판# デモファイルのダウンロード
$ wget https://raw.githubusercontent.com/vsphere-tmm/vsphere-with-tanzu-quick-start/master/manifests/pvc.yaml
# PVC(永続ディスクの要求)マニフェスト。3GiのサイズでRWOのディスクを要求する内容。
$ cat pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: vsphere-with-tanzu-pv
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 3Gi
# TKCデプロイ時に指定したDefault StorageClassの情報。
$ kubectl get storageclass
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
k8s-dev-storage-policy (default) csi.vsphere.vmware.com Delete Immediate true 13h
# 現時点では、PVやPVCが存在しないことを確認
$ kubectl get pv,pvc
No resources found in default namespace.
# 先ほどのPVCマニフェストを適用
$ kubectl apply -f pvc.yaml
persistentvolumeclaim/vsphere-with-tanzu-pv created
# しばらく待ち、PVCによってPVが作成されたことを確認。
# また、StorageClassに、k8s-dev-storage-policy が用いられていることも確認できる。
$ kubectl get pv,pvc
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
persistentvolume/pvc-ef525f2a-75b1-49b6-9d8e-d95edf6e5b10 3Gi RWO Delete Bound default/vsphere-with-tanzu-pv k8s-dev-storage-policy 32s
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
persistentvolumeclaim/vsphere-with-tanzu-pv Bound pvc-ef525f2a-75b1-49b6-9d8e-d95edf6e5b10 3Gi RWO k8s-dev-storage-policy 53s
이제 vCenter를 살펴보겠습니다. 요청한 PVC는 "tkgs-dev"네임 스페이스의 "저장소"탭에서 "퍼시스턴트 볼륨 요청"으로 확인할 수 있습니다.
PVC 이름을 클릭하면 vSphere 클러스터의 클라우드 네이티브 스토리지의 컨테이너 볼륨 항목으로 전환하여 PV 정보를 확인할 수 있습니다.
vCenter에서 K8s 리소스 정보를 볼 수 있는 것은 vSphere with Tanzu의 한 가지 장점입니다.
PV로 포드 배포
그런 다음 방금 만든 "vsphere-with-tanzu-pv"를 사용하는 Pod를 배포합니다.
발판# サンプルPodのダウンロード
$ wget https://raw.githubusercontent.com/vsphere-tmm/vsphere-with-tanzu-quick-start/master/manifests/pod.yaml
# Pod内容の確認。先ほどの「vsphere-with-tanzu-pv」というPVCをボリュームとして定義し、「/usr/share/nginx/html」にマウントしていることが分かる。
$ cat pod.yaml
# 現在のPodの確認。default namespaceにはなにもない。
$ kubectl get pod
No resources found in default namespace.
# Podのデプロイ。Podリソースが追加されたことが確認できる。
$ kubectl apply -f pod.yaml
pod/vsphere-with-tanzu-pod created
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
vsphere-with-tanzu-pod 1/1 Running 0 4m12s
바로, 이 Pod에 브라우저로부터 액세스 해 봅시다.
여기에서 하나 포인트로서 현재 발판을 경유하여 K8s에 액세스하기 위해 K8s에서 발판으로 포트 포워드하고, 더 발판에 대해서도 SSH 포트 포워드 해 주면 K8s 리소스를 로컬 PC에서 표시 가능 됩니다. 이런 이미지.
로컬 PC <-- (8080 포트로 전송) - 발판 <-- (8080 포트로 변환하여 전송) - Port 80이있는 Pod
이를 다단 포트 포워드라고합니다. 비교적 발판이 있는 환경에서는, Pod가 가지는 관리 화면에의 액세스에 이 기술을 다용하기 때문에, 기억해 두면 좋을 것입니다.
로컬 PC# 踏み台の8080portは、localhostの8080portに転送しつつ、sshログイン
% ssh [email protected] -L 8080:localhost:8080
# (出力メッセージは省略)
# ここから踏み台環境での操作。指定のPodの port 80 を、接続元の 8080 port に転送するコマンド
$ kubectl port-forward vsphere-with-tanzu-pod 8080:80
Forwarding from 127.0.0.1:8080 -> 80
이 방법으로 액세스할 수 있습니다. 그러나 콘텐츠가 없으므로 다음 화면이 표시됩니다.
포드에 들어가서 PV에 콘텐츠를 설치해 봅시다.
발판# Podの中に入るコマンド
$ kubectl exec -it vsphere-with-tanzu-pod -- bash
# Pod内の操作。PVが設置してある /usr/share/nginx/html に、コンテンツの設置
$ cd /usr/share/nginx/html
$ curl https://raw.githubusercontent.com/vsphere-tmm/vsphere-with-tanzu-quick-start/master/site/index.html -o index.html
$ exit
다시 다단 포트 포워드 해, 브라우저에 액세스하면・・・, 이번은 표시할 수 있었습니다!
LoadBalancer 사용
매번 다단 포트 포워드하는 것은 번거롭지요? HAProxy를 사용하여 K8s 컨테이너 네트워크 외부에서 액세스할 수 있습니다.
발판# まずはサンプルコンテンツのダウンロード
$ wget https://raw.githubusercontent.com/vsphere-tmm/vsphere-with-tanzu-quick-start/master/manifests/svc.yaml
# Serviceリソースは、podを公開するためのリソース。Type: LoadBalancerによって、外部LBを利用する。
$ cat svc.yaml
# kubernetesとsupervisorの2つのサービスは、TKC作成時に最初から作成されています。
$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 18h
supervisor ClusterIP None <none> 6443/TCP 18h
# Serviceリソースのデプロイ。「nginx-service」が追加されているのが分かる。
$ kubectl apply -f svc.yaml
service/nginx-service created
$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 18h
nginx-service LoadBalancer 10.109.180.30 172.18.0.211 80:30861/TCP 5s
supervisor ClusterIP None <none> 6443/TCP 18h
위의 "EXTERNAL-IP"로 할당된 "172.18.0.211"에 액세스해 봅시다.
할 수 있어요! 실은 이것, 상당히 굉장한 일입니다.
일반적인 K8s 환경의 경우 HAProxy를 이 K8s 환경에서 사용할 수 있도록 매뉴얼을 도입해야 하지만 Supervisor Cluster는 TKC에 로드 밸런서가 자동으로 할당되어 있음을 알 수 있습니다.
vSphere with Tanzu의 이야기는 이상입니다!
내일부터는 조금 다른 이야기를 해 나가고 싶습니다.
Reference
이 문제에 관하여(NUC로 시작하는 VMware Tanzu - vSphere with Tanzu로 APP 배포), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/hirosat/items/75ec6b5f24fb04cb49f9
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
# ログインは一定時間で有効期限が切れます。必要に応じて、ログインし直しましょう。
$ SC_IP=172.18.0.208
$ NS=tkgs-dev
$ kubectl vsphere login --server=$SC_IP --tanzu-kubernetes-cluster-name tkc-1 --tanzu-kubernetes-cluster-namespace $NAMESPACE --insecure-skip-tls-verify
# busybox podを作成して、pod内のshellにログインするコマンド
$ kubectl run -i --tty busybox --image=busybox --restart=Never -- sh
# (/ # というプロンプトに変わり、ログイン出来たことが確認できる)
/ #
# googleさんに話しかけてみる
/ # ping google.com
PING google.com (172.217.25.206): 56 data bytes
64 bytes from 172.217.25.206: seq=0 ttl=114 time=3.975 ms
^C
# googleさんへの経路を確認
/ # traceroute -n google.com
traceroute to google.com (172.217.161.46), 30 hops max, 46 byte packets
1 192.168.1.1 0.492 ms 0.002 ms 0.001 ms
2 172.18.0.1 1.562 ms 1.005 ms 1.243 ms
3 192.168.5.1 1.863 ms 0.757 ms 0.878 ms
4 * * *
# (以下省略)
# exitすると、プロンプトが戻ってきてPodが「完了」状態となる。
/ # exit
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
busybox 0/1 Completed 0 62s
# Podの削除
$ kubectl delete pod busybox
pod "busybox" deleted
$ kubectl get pods
No resources found in default namespace.
# デモファイルのダウンロード
$ wget https://raw.githubusercontent.com/vsphere-tmm/vsphere-with-tanzu-quick-start/master/manifests/pvc.yaml
# PVC(永続ディスクの要求)マニフェスト。3GiのサイズでRWOのディスクを要求する内容。
$ cat pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: vsphere-with-tanzu-pv
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 3Gi
# TKCデプロイ時に指定したDefault StorageClassの情報。
$ kubectl get storageclass
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
k8s-dev-storage-policy (default) csi.vsphere.vmware.com Delete Immediate true 13h
# 現時点では、PVやPVCが存在しないことを確認
$ kubectl get pv,pvc
No resources found in default namespace.
# 先ほどのPVCマニフェストを適用
$ kubectl apply -f pvc.yaml
persistentvolumeclaim/vsphere-with-tanzu-pv created
# しばらく待ち、PVCによってPVが作成されたことを確認。
# また、StorageClassに、k8s-dev-storage-policy が用いられていることも確認できる。
$ kubectl get pv,pvc
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
persistentvolume/pvc-ef525f2a-75b1-49b6-9d8e-d95edf6e5b10 3Gi RWO Delete Bound default/vsphere-with-tanzu-pv k8s-dev-storage-policy 32s
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
persistentvolumeclaim/vsphere-with-tanzu-pv Bound pvc-ef525f2a-75b1-49b6-9d8e-d95edf6e5b10 3Gi RWO k8s-dev-storage-policy 53s
# サンプルPodのダウンロード
$ wget https://raw.githubusercontent.com/vsphere-tmm/vsphere-with-tanzu-quick-start/master/manifests/pod.yaml
# Pod内容の確認。先ほどの「vsphere-with-tanzu-pv」というPVCをボリュームとして定義し、「/usr/share/nginx/html」にマウントしていることが分かる。
$ cat pod.yaml
# 現在のPodの確認。default namespaceにはなにもない。
$ kubectl get pod
No resources found in default namespace.
# Podのデプロイ。Podリソースが追加されたことが確認できる。
$ kubectl apply -f pod.yaml
pod/vsphere-with-tanzu-pod created
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
vsphere-with-tanzu-pod 1/1 Running 0 4m12s
# 踏み台の8080portは、localhostの8080portに転送しつつ、sshログイン
% ssh [email protected] -L 8080:localhost:8080
# (出力メッセージは省略)
# ここから踏み台環境での操作。指定のPodの port 80 を、接続元の 8080 port に転送するコマンド
$ kubectl port-forward vsphere-with-tanzu-pod 8080:80
Forwarding from 127.0.0.1:8080 -> 80
# Podの中に入るコマンド
$ kubectl exec -it vsphere-with-tanzu-pod -- bash
# Pod内の操作。PVが設置してある /usr/share/nginx/html に、コンテンツの設置
$ cd /usr/share/nginx/html
$ curl https://raw.githubusercontent.com/vsphere-tmm/vsphere-with-tanzu-quick-start/master/site/index.html -o index.html
$ exit
# まずはサンプルコンテンツのダウンロード
$ wget https://raw.githubusercontent.com/vsphere-tmm/vsphere-with-tanzu-quick-start/master/manifests/svc.yaml
# Serviceリソースは、podを公開するためのリソース。Type: LoadBalancerによって、外部LBを利用する。
$ cat svc.yaml
# kubernetesとsupervisorの2つのサービスは、TKC作成時に最初から作成されています。
$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 18h
supervisor ClusterIP None <none> 6443/TCP 18h
# Serviceリソースのデプロイ。「nginx-service」が追加されているのが分かる。
$ kubectl apply -f svc.yaml
service/nginx-service created
$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 18h
nginx-service LoadBalancer 10.109.180.30 172.18.0.211 80:30861/TCP 5s
supervisor ClusterIP None <none> 6443/TCP 18h
Reference
이 문제에 관하여(NUC로 시작하는 VMware Tanzu - vSphere with Tanzu로 APP 배포), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hirosat/items/75ec6b5f24fb04cb49f9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)