LoginSignup
3
4

More than 5 years have passed since last update.

GKE試行(その5:「gcloudコマンド、kubectlコマンドでの状態確認」

Last updated at Posted at 2018-09-16

お題

前回、GKE上でのアプリ公開まで出来た。
今回は、クラウドコンソールで確認した「クラスタ」や「ノード」、「ポッド」の状態を gcloud コマンドや kubectl コマンドで確認してみる。

環境

前回と同じ。


$ kubectl version
Client Version: version.Info{Major:"1", Minor:"9", GitVersion:"v1.9.7", GitCommit:"dd5e1a2978fd0b97d9b78e1564398aeea7e7fe92", GitTreeState:"clean", BuildDate:"2018-04-19T00:05:56Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"9+", GitVersion:"v1.9.7-gke.6", GitCommit:"9b635efce81582e1da13b35a7aa539c0ccb32987", GitTreeState:"clean", BuildDate:"2018-08-16T21:33:47Z", GoVersion:"go1.9.3b4", Compiler:"gc", Platform:"linux/amd64"}

前提

  • 自前でGCPプロジェクトは契約済み
  • gcloudをローカルで使える状態になっている

実践

クラウドコンソール見るとクラスタの状態、デプロイ、サービスの状態をすぐ確認できる。
けど、せっかくなので gcloud コマンド、kubectlコマンド使っての確認もしてみる。
ポイントは、「クラスタはGKEの概念なので”gcloudコマンド”を使い、ノード、デプロイメント、ポッド、サービスはk8sの概念なので”kubectl”コマンドを使う」こと。

クラスタの一覧


$ gcloud container clusters list
NAME                                   LOCATION           MASTER_VERSION  MASTER_IP      MACHINE_TYPE  NODE_VERSION  NUM_NODES  STATUS
go-webapi-for-gke-study-cluster-1-min  asia-northeast1-a  1.9.7-gke.6     xx.xxx.xx.xxx  f1-micro      1.9.7-gke.6   3          RUNNING

クラスタの詳細


$ gcloud container clusters describe go-webapi-for-gke-study-cluster-1-min
addonsConfig:
  networkPolicyConfig:
    disabled: true
clusterIpv4Cidr: 【IP】
createTime: '2018-09-16T03:19:31+00:00'
currentMasterVersion: 1.9.7-gke.6
currentNodeCount: 3
currentNodeVersion: 1.9.7-gke.6
endpoint: 【エンドポイントIP】
initialClusterVersion: 1.9.7-gke.6
instanceGroupUrls:
- https://www.googleapis.com/compute/v1/projects/【プロジェクトID】/zones/asia-northeast1-a/instanceGroupManagers/gke-go-webapi-for-gke-st-default-pool-3b8ab9c5-grp
labelFingerprint: a9dc16a7
legacyAbac: {}
locations:
- asia-northeast1-a
loggingService: logging.googleapis.com
masterAuth:
  clientCertificate:【省略】
  clientKey:【省略】
  clusterCaCertificate:【省略】
monitoringService: monitoring.googleapis.com
name: go-webapi-for-gke-study-cluster-1-min
network: default
networkConfig:
  network: projects/【プロジェクトID】/global/networks/default
  subnetwork: projects/【プロジェクトID】/regions/asia-northeast1/subnetworks/default
nodeConfig:
  diskSizeGb: 10
  diskType: pd-standard
  imageType: COS
  machineType: f1-micro
  oauthScopes:
  - https://www.googleapis.com/auth/devstorage.read_only
  - https://www.googleapis.com/auth/logging.write
  - https://www.googleapis.com/auth/monitoring
  - https://www.googleapis.com/auth/service.management.readonly
  - https://www.googleapis.com/auth/servicecontrol
  - https://www.googleapis.com/auth/trace.append
  - https://www.googleapis.com/auth/compute
  preemptible: true
  serviceAccount: default
nodeIpv4CidrSize: 24
nodePools:
- config:
    diskSizeGb: 10
    diskType: pd-standard
    imageType: COS
    machineType: f1-micro
    oauthScopes:
    - https://www.googleapis.com/auth/devstorage.read_only
    - https://www.googleapis.com/auth/logging.write
    - https://www.googleapis.com/auth/monitoring
    - https://www.googleapis.com/auth/service.management.readonly
    - https://www.googleapis.com/auth/servicecontrol
    - https://www.googleapis.com/auth/trace.append
    - https://www.googleapis.com/auth/compute
    preemptible: true
    serviceAccount: default
  initialNodeCount: 3
  instanceGroupUrls:
  - https://www.googleapis.com/compute/v1/projects/【プロジェクトID】/zones/asia-northeast1-a/instanceGroupManagers/gke-go-webapi-for-gke-st-default-pool-3b8ab9c5-grp
  management:
    autoRepair: true
  name: default-pool
  selfLink: https://container.googleapis.com/v1/projects/【プロジェクトID】/zones/asia-northeast1-a/clusters/go-webapi-for-gke-study-cluster-1-min/nodePools/default-pool
  status: RUNNING
  version: 1.9.7-gke.6
selfLink: https://container.googleapis.com/v1/projects/【プロジェクトID】/zones/asia-northeast1-a/clusters/go-webapi-for-gke-study-cluster-1-min
servicesIpv4Cidr: 10.55.240.0/20
status: RUNNING
subnetwork: default
zone: asia-northeast1-a

ノードの一覧


$ kubectl get nodes
NAME                                                  STATUS    ROLES     AGE       VERSION
gke-go-webapi-for-gke-st-default-pool-3b8ab9c5-062c   Ready     <none>   17h       v1.9.7-gke.6
gke-go-webapi-for-gke-st-default-pool-3b8ab9c5-3wzx   Ready     <none>   16h       v1.9.7-gke.6
gke-go-webapi-for-gke-st-default-pool-3b8ab9c5-7tpj   Ready     <none>   17h       v1.9.7-gke.6

ノードの詳細


$ kubectl describe node gke-go-webapi-for-gke-st-default-pool-3b8ab9c5-062c
Name:               gke-go-webapi-for-gke-st-default-pool-3b8ab9c5-062c
Roles:              <none>
Labels:             beta.kubernetes.io/arch=amd64
                    beta.kubernetes.io/fluentd-ds-ready=true
                    beta.kubernetes.io/instance-type=f1-micro
                    beta.kubernetes.io/os=linux
                    cloud.google.com/gke-nodepool=default-pool
                    cloud.google.com/gke-preemptible=true
                    failure-domain.beta.kubernetes.io/region=asia-northeast1
                    failure-domain.beta.kubernetes.io/zone=asia-northeast1-a
                    kubernetes.io/hostname=gke-go-webapi-for-gke-st-default-pool-3b8ab9c5-062c
Annotations:        node.alpha.kubernetes.io/ttl=0
                    volumes.kubernetes.io/controller-managed-attach-detach=true
Taints:             <none>
CreationTimestamp:  Sun, 16 Sep 2018 12:21:13 +0900
Conditions:
  Type                 Status  LastHeartbeatTime                 LastTransitionTime                Reason                       Message
  ----                 ------  -----------------                 ------------------                ------                       -------
  KernelDeadlock       False   Mon, 17 Sep 2018 05:24:48 +0900   Sun, 16 Sep 2018 12:20:23 +0900   KernelHasNoDeadlock          kernel has no deadlock
  NetworkUnavailable   False   Sun, 16 Sep 2018 12:21:24 +0900   Sun, 16 Sep 2018 12:21:24 +0900   RouteCreated                 RouteController created a route
  OutOfDisk            False   Mon, 17 Sep 2018 05:24:46 +0900   Sun, 16 Sep 2018 12:21:13 +0900   KubeletHasSufficientDisk     kubelet has sufficient disk space available
  MemoryPressure       False   Mon, 17 Sep 2018 05:24:46 +0900   Sun, 16 Sep 2018 12:21:13 +0900   KubeletHasSufficientMemory   kubelet has sufficient memory available
  DiskPressure         False   Mon, 17 Sep 2018 05:24:46 +0900   Sun, 16 Sep 2018 12:21:13 +0900   KubeletHasNoDiskPressure     kubelet has no disk pressure
  Ready                True    Mon, 17 Sep 2018 05:24:46 +0900   Sun, 16 Sep 2018 12:21:33 +0900   KubeletReady                 kubelet is posting ready status. AppArmor enabled
Addresses:
  InternalIP:  【IP】
  ExternalIP:  【IP】
  Hostname:    gke-go-webapi-for-gke-st-default-pool-3b8ab9c5-062c
Capacity:
 cpu:     1
 memory:  608252Ki
 pods:    110
Allocatable:
 cpu:     940m
 memory:  608252Ki
 pods:    110
System Info:
 Machine ID:                 f56987c738e8859cbef6ac27fb5cf8a3
 System UUID:                F56987C7-38E8-859C-BEF6-AC27FB5CF8A3
 Boot ID:                    383e5637-d3a4-4d6f-9b7f-0a562533ccf2
 Kernel Version:             4.4.111+
 OS Image:                   Container-Optimized OS from Google
 Operating System:           linux
 Architecture:               amd64
 Container Runtime Version:  docker://17.3.2
 Kubelet Version:            v1.9.7-gke.6
 Kube-Proxy Version:         v1.9.7-gke.6
PodCIDR:                     10.52.1.0/24
ExternalID:                  【ID】
Non-terminated Pods:         (4 in total)
  Namespace                  Name                                                              CPU Requests  CPU Limits  Memory Requests  Memory Limits
  ---------                  ----                                                              ------------  ----------  ---------------  -------------
  kube-system                fluentd-gcp-v2.0.17-pdkqp                                         100m (10%)    0 (0%)      200Mi (33%)      300Mi (50%)
  kube-system                kube-dns-5dcfcbf5fb-d6hst                                         260m (27%)    0 (0%)      110Mi (18%)      170Mi (28%)
  kube-system                kube-dns-autoscaler-69c5cbdcdd-w4pqc                              20m (2%)      0 (0%)      10Mi (1%)        0 (0%)
  kube-system                kube-proxy-gke-go-webapi-for-gke-st-default-pool-3b8ab9c5-062c    100m (10%)    0 (0%)      0 (0%)           0 (0%)
Allocated resources:
  (Total limits may be over 100 percent, i.e., overcommitted.)
  CPU Requests  CPU Limits  Memory Requests  Memory Limits
  ------------  ----------  ---------------  -------------
  480m (51%)    0 (0%)      320Mi (53%)      470Mi (79%)
Events:         <none>

ポッドの一覧


$ kubectl get pods
NAME                                              READY     STATUS    RESTARTS   AGE
go-webapi-for-gke-study-server-747447689b-m5kw5   1/1       Running   0          11h

ポッドの詳細


$ kubectl describe pods go-webapi-for-gke-study-server-747447689b-m5kw5
Name:           go-webapi-for-gke-study-server-747447689b-m5kw5
Namespace:      default
Node:           gke-go-webapi-for-gke-st-default-pool-3b8ab9c5-3wzx/10.146.0.2
Start Time:     Sun, 16 Sep 2018 18:12:31 +0900
Labels:         pod-template-hash=3030032456
                run=go-webapi-for-gke-study-server
Annotations:    kubernetes.io/limit-ranger=LimitRanger plugin set: cpu request for container go-webapi-for-gke-study-server
Status:         Running
IP:             【IP】
Controlled By:  ReplicaSet/go-webapi-for-gke-study-server-747447689b
Containers:
  go-webapi-for-gke-study-server:
    Container ID:   docker://cc9f476e0e97637c726921b481d48905e0b6587c198dc651d61fd6b9bbfe2a67
    Image:          gcr.io/【プロジェクトID】/go-webapi-for-gke-study@sha256:4d1897773110c4ed095fd43d6f08d946c2a9692245cbdf653a689c2dd64e3419
    Image ID:       docker-pullable://gcr.io/【プロジェクトID】/go-webapi-for-gke-study@sha256:4d1897773110c4ed095fd43d6f08d946c2a9692245cbdf653a689c2dd64e3419
    Port:           80/TCP
    State:          Running
      Started:      Sun, 16 Sep 2018 18:12:35 +0900
    Ready:          True
    Restart Count:  0
    Requests:
      cpu:        100m
    Environment:  <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-54k74 (ro)
Conditions:
  Type           Status
  Initialized    True 
  Ready          True 
  PodScheduled   True 
Volumes:
  default-token-54k74:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-54k74
    Optional:    false
QoS Class:       Burstable
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300s
                 node.kubernetes.io/unreachable:NoExecute for 300s
Events:          <none>

デプロイメントの一覧


$ kubectl get deployments
NAME                             DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
go-webapi-for-gke-study-server   1         1         1            1           11h

デプロイメントの詳細


$ kubectl describe deployments go-webapi-for-gke-study-server
Name:                   go-webapi-for-gke-study-server
Namespace:              default
CreationTimestamp:      Sun, 16 Sep 2018 18:12:31 +0900
Labels:                 run=go-webapi-for-gke-study-server
Annotations:            deployment.kubernetes.io/revision=1
Selector:               run=go-webapi-for-gke-study-server
Replicas:               1 desired | 1 updated | 1 total | 1 available | 0 unavailable
StrategyType:           RollingUpdate
MinReadySeconds:        0
RollingUpdateStrategy:  1 max unavailable, 1 max surge
Pod Template:
  Labels:  run=go-webapi-for-gke-study-server
  Containers:
   go-webapi-for-gke-study-server:
    Image:        gcr.io/【プロジェクトID】/go-webapi-for-gke-study@sha256:4d1897773110c4ed095fd43d6f08d946c2a9692245cbdf653a689c2dd64e3419
    Port:         80/TCP
    Environment:  <none>
    Mounts:       <none>
  Volumes:        <none>
Conditions:
  Type           Status  Reason
  ----           ------  ------
  Available      True    MinimumReplicasAvailable
OldReplicaSets:  <none>
NewReplicaSet:   go-webapi-for-gke-study-server-747447689b (1/1 replicas created)
Events:          <none>

サービスの一覧


$ kubectl get services
NAME                             TYPE           CLUSTER-IP     EXTERNAL-IP      PORT(S)        AGE
go-webapi-for-gke-study-server   LoadBalancer   xx.xx.xxx.xx   xx.xxx.xxx.xxx   80:30180/TCP   1h
kubernetes                       ClusterIP      xx.xx.xxx.x    <none>          443/TCP        17h

サービスの詳細


$ kubectl describe services go-webapi-for-gke-study-server
Name:                     go-webapi-for-gke-study-server
Namespace:                default
Labels:                   run=go-webapi-for-gke-study-server
Annotations:              <none>
Selector:                 run=go-webapi-for-gke-study-server
Type:                     LoadBalancer
IP:                       xx.xx.xxx.xx
LoadBalancer Ingress:     xx.xxx.xxx.xxx
Port:                     <unset>  80/TCP
TargetPort:               80/TCP
NodePort:                 <unset>  30180/TCP
Endpoints:                xx.xx.x.x:80
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>
3
4
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4