Aug 19, 2019
Jan 1, 1970
N/A Views
MD
warning
この記事は2年以上前に更新されたものです。情報が古くなっている可能性があります。

kubectlコマンドを使って、まずはアプリケーションをデプロイしてみます。
新出用語は無視して下さい。

以下の実行結果例はPKS 1.5.0-build.30 on vSphere (without NSX-T)の場合です。

PKSを使用している場合は、次のコマンドで~/.kube/configをアップデートしてください。

pks get-credentials <cluster_name> --sso-auto

または

pks get-kubeconfig -a <PKS API> <cluster_name> -k --sso-auto

次のバージョンで動作確認しています。

$ kubectl version
Client Version: version.Info{Major:"1", Minor:"14", GitVersion:"v1.14.0", GitCommit:"641856db18352033a0d96dbc99153fa3b27298e5", GitTreeState:"clean", BuildDate:"2019-03-26T00:05:06Z", GoVersion:"go1.12.1", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"14", GitVersion:"v1.14.5", GitCommit:"0e9fcb426b100a2aea5ed5c25b3d8cfbb01a8acf", GitTreeState:"clean", BuildDate:"2019-08-05T09:13:08Z", GoVersion:"go1.12.5", Compiler:"gc", Platform:"linux/amd64"}

目次

Kubernetesクラスタの確認

まずは利用しているKubernetesの環境を確認します。

kubectl cluster-infoでクラスタ情報を表示します。

kubectl cluster-info

出力結果(PKS)

$ kubectl cluster-info
Kubernetes master is running at https://maki.k8s.pivotal.bosh.tokyo:8443
CoreDNS is running at https://maki.k8s.pivotal.bosh.tokyo:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

kubectl get nodeでWorkerノード情報の表示します。-o wideをつけると詳細表示になります。

kubectl get node -o wide

出力結果(PKS)

NAME                                   STATUS   ROLES    AGE   VERSION   INTERNAL-IP    EXTERNAL-IP    OS-IMAGE             KERNEL-VERSION      CONTAINER-RUNTIME
10b533d1-075d-4ecc-83c7-0e4eba4da357   Ready    <none>   40h   v1.14.5   192.168.3.16   192.168.3.16   Ubuntu 16.04.6 LTS   4.15.0-55-generic   docker://18.9.8
82cc53c4-e825-4f82-af32-572321c0bf2f   Ready    <none>   40h   v1.14.5   192.168.3.15   192.168.3.15   Ubuntu 16.04.6 LTS   4.15.0-55-generic   docker://18.9.8
fa01f449-8004-43a2-957d-c8edc11de11b   Ready    <none>   40h   v1.14.5   192.168.3.14   192.168.3.14   Ubuntu 16.04.6 LTS   4.15.0-55-generic   docker://18.9.8

kubectl config current-contextで現在のコンテキストの表示します。

kubectl config current-context

出力結果(PKS)

<cluster_name>

kubectl get all --all-namespacesで全名前空間のリソースを表示します。

kubectl get all --all-namespaces

出力結果(PKS)

NAMESPACE     NAME                                                                READY   STATUS      RESTARTS   AGE
kube-system   pod/coredns-95489c5c9-2frwc                                         1/1     Running     0          41h
kube-system   pod/coredns-95489c5c9-5tr8w                                         1/1     Running     0          41h
kube-system   pod/coredns-95489c5c9-7p5jn                                         1/1     Running     0          41h
kube-system   pod/kubernetes-dashboard-558689fc66-rp4t8                           1/1     Running     0          41h
kube-system   pod/metrics-server-867b8fdb7d-tjhk7                                 1/1     Running     0          41h
pks-system    pod/cert-generator-dea87263fc8e6d3a2a122f5f5e31b36afbeef369-grb4f   0/1     Completed   0          41h
pks-system    pod/event-controller-646d78b9b8-dmggx                               2/2     Running     0          41h
pks-system    pod/fluent-bit-d9nlx                                                2/2     Running     0          41h
pks-system    pod/fluent-bit-pqm87                                                2/2     Running     0          41h
pks-system    pod/fluent-bit-qxcgs                                                2/2     Running     0          41h
pks-system    pod/metric-controller-c998cb5bf-cmmqh                               1/1     Running     0          41h
pks-system    pod/observability-manager-64f749cd4c-5fv9l                          1/1     Running     0          41h
pks-system    pod/sink-controller-6774fd95f7-fppd4                                1/1     Running     0          41h
pks-system    pod/telegraf-4n7qz                                                  1/1     Running     0          41h
pks-system    pod/telegraf-b84hc                                                  1/1     Running     0          41h
pks-system    pod/telegraf-fpmdq                                                  1/1     Running     0          41h
pks-system    pod/telemetry-agent-858446f4ff-6727s                                2/2     Running     0          40h
pks-system    pod/validator-6b677f49d4-tjs72                                      1/1     Running     0          41h
pks-system    pod/vrops-cadvisor-5r77l                                            1/1     Running     0          41h
pks-system    pod/vrops-cadvisor-99qrp                                            1/1     Running     0          41h
pks-system    pod/vrops-cadvisor-9bk6g                                            1/1     Running     0          41h

NAMESPACE     NAME                           TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)         AGE
default       service/kubernetes             ClusterIP   10.100.200.1     <none>        443/TCP         41h
kube-system   service/kube-dns               ClusterIP   10.100.200.2     <none>        53/UDP,53/TCP   41h
kube-system   service/kubernetes-dashboard   NodePort    10.100.200.177   <none>        443:30709/TCP   41h
kube-system   service/metrics-server         ClusterIP   10.100.200.207   <none>        443/TCP         41h
pks-system    service/fluent-bit             ClusterIP   10.100.200.219   <none>        24224/TCP       41h
pks-system    service/validator              ClusterIP   10.100.200.187   <none>        443/TCP         41h

NAMESPACE    NAME                            DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
pks-system   daemonset.apps/fluent-bit       3         3         3       3            3           <none>          41h
pks-system   daemonset.apps/telegraf         3         3         3       3            3           <none>          41h
pks-system   daemonset.apps/vrops-cadvisor   3         3         3       3            3           <none>          41h

NAMESPACE     NAME                                    READY   UP-TO-DATE   AVAILABLE   AGE
kube-system   deployment.apps/coredns                 3/3     3            3           41h
kube-system   deployment.apps/kubernetes-dashboard    1/1     1            1           41h
kube-system   deployment.apps/metrics-server          1/1     1            1           41h
pks-system    deployment.apps/event-controller        1/1     1            1           41h
pks-system    deployment.apps/metric-controller       1/1     1            1           41h
pks-system    deployment.apps/observability-manager   1/1     1            1           41h
pks-system    deployment.apps/sink-controller         1/1     1            1           41h
pks-system    deployment.apps/telemetry-agent         1/1     1            1           40h
pks-system    deployment.apps/validator               1/1     1            1           41h

NAMESPACE     NAME                                               DESIRED   CURRENT   READY   AGE
kube-system   replicaset.apps/coredns-95489c5c9                  3         3         3       41h
kube-system   replicaset.apps/kubernetes-dashboard-558689fc66    1         1         1       41h
kube-system   replicaset.apps/metrics-server-867b8fdb7d          1         1         1       41h
pks-system    replicaset.apps/event-controller-646d78b9b8        1         1         1       41h
pks-system    replicaset.apps/metric-controller-c998cb5bf        1         1         1       41h
pks-system    replicaset.apps/observability-manager-64f749cd4c   1         1         1       41h
pks-system    replicaset.apps/sink-controller-6774fd95f7         1         1         1       41h
pks-system    replicaset.apps/telemetry-agent-858446f4ff         1         1         1       40h
pks-system    replicaset.apps/validator-6b677f49d4               1         1         1       41h

NAMESPACE    NAME                                                                COMPLETIONS   DURATION   AGE
pks-system   job.batch/cert-generator-dea87263fc8e6d3a2a122f5f5e31b36afbeef369   1/1           21s        41h

サンプルアプリケーションのデプロイ

サンプルアプリケーションmaking/hello-pksをデプロイします。
kubectl run <デプロイ名> --image=<Dockerイメージ名> --generator=run-pod/v1 --port=<コンテナが公開するポート>

kubectl run hello-pks --image=making/hello-pks:0.0.1 --generator=run-pod/v1 --port=8080

出力結果

pod/hello-pks created

kubectl get allで作成されたリソースを表示します。

kubectl get all

出力結果(PKS)

NAME            READY   STATUS              RESTARTS   AGE
pod/hello-pks   0/1     ContainerCreating   0          10s

NAME                 TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)   AGE
service/kubernetes   ClusterIP   10.100.200.1   <none>        443/TCP   42h

初回はDockerイメージのフェッチが完了していないため、起動まで時間がかかります。pod/hello-pksSTATUSContainerCreatingになっているでしょう。

しばらくして再度kubectl get allを実行するとSTATUSRunningになります。

kubectl get all

出力結果

NAME            READY   STATUS    RESTARTS   AGE
pod/hello-pks   1/1     Running   0          48s

NAME                 TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)   AGE
service/kubernetes   ClusterIP   10.100.200.1   <none>        443/TCP   42h

このアプリケーション(コンテナ)はポート8080で起動します。ポートフォワードの設定を行い、このアプリケーションにlocalhostでアクセスします。
kubectl port-forward <Pod名> <ローカルポート>:<リモートポート>を実行してください。

kubectl port-forward hello-pks 8080:8080

出力結果

Forwarding from 127.0.0.1:8080 -> 8080

http://localhost:8080にアクセスして下さい。

image

次にターミナルからhttp://localhost:8080/actuator/healthにアクセスして下さい。

curl http://localhost:8080/actuator/health

出力結果

{
  "status" : "UP"
}

Kubenetes Dashboardへのアクセス

次にDashboardにアクセスします。

環境(Docker for Macなど)によってはDashboardがインストールされていないため、kubectl get deployment -n kube-systemkube-system名前空間のDeployment一覧を確認して下さい。

kubectl get deployment -n kube-system

出力結果(PKS)

NAME                   READY   UP-TO-DATE   AVAILABLE   AGE
coredns                3/3     3            3           42h
kubernetes-dashboard   1/1     1            1           42h
metrics-server         1/1     1            1           42h

kubectl get pod -n kube-systemkube-system名前空間のPod一覧を確認し、kubernetes-dashboardのPodのSTATUSRunningになっていることを確認して下さい。

kubectl get pod -n kube-system

出力結果(PKS)

NAME                                    READY   STATUS    RESTARTS   AGE
coredns-95489c5c9-2frwc                 1/1     Running   0          42h
coredns-95489c5c9-5tr8w                 1/1     Running   0          42h
coredns-95489c5c9-7p5jn                 1/1     Running   0          42h
kubernetes-dashboard-558689fc66-rp4t8   1/1     Running   0          42h
metrics-server-867b8fdb7d-tjhk7         1/1     Running   0          42h

kubectl proxyを実行すると、http://127.0.0.1:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/でDashboardへポートフォワードされます。

ショートカットとしてhttp://bit.ly/k8s-dashboardを利用できます。

kubectl proxy

出力結果

Starting to serve on 127.0.0.1:8001

image

"Token"を選択し、次のコマンドの出力結果を入力してサインインしてください。

kubectl -n kube-system get secrets $(kubectl -n kube-system get serviceaccount clusterrole-aggregation-controller -o jsonpath="{.secrets[0].name}") -o go-template="{{.data.token | base64decode}}"

Dashboardにサインインできたら、左のメニューから"Namespace"を変更し、"Deployments"、"Pods"、"Services"などを選択し、リソースが存在することを確認して下さい。

image

アプリケーションの削除

一旦アプリケーションを削除します。

kubectl delete pod hello-pks

出力結果

pod "hello-pks" deleted
Found a mistake? Update the entry.
Share this article: