kubectl getコマンドのあれこれ

おそらく、kubenetesのコマンドで一番たたくのではないかと思う「kubectl get」
各種リソースや設定情報などを取得できる。

#取得できるリソース
（個人的に）よく使うものは以下の4つ。
これ以外はkubernetesを勉強していくうちに使うことになるだろう。。。

##node
クラスタを構成する物理（仮想）ノードを確認できる。

```
$ kubectl get node
NAME           STATUS   ROLES    AGE     VERSION
k8s-master     Ready    master   7d15h   v1.17.3
k8s-worker01   Ready    <none>   7d15h   v1.17.3
k8s-worker02   Ready    <none>   7d15h   v1.17.3
```

##pod
デプロイされているpodを確認できる。

```
$ kubectl get pods
No resources found in default namespace.
```
オプションを何もつけないと、defaultのnamespaceのpodが表示される。
default以外のpodを確認する場合は、-nオプションでnamespaceを指定する。

```
$ kubectl -n kube-system get pods
NAME                                      READY   STATUS    RESTARTS   AGE
calico-kube-controllers-77c4b7448-6prr9   1/1     Running   5          7d15h
calico-node-2hc9b                         1/1     Running   5          7d15h
calico-node-cgdgk                         1/1     Running   5          7d15h
calico-node-tkcz5                         1/1     Running   5          7d15h
coredns-6955765f44-55wbn                  1/1     Running   5          7d15h
coredns-6955765f44-bhdvr                  1/1     Running   5          7d15h
etcd-k8s-master                           1/1     Running   5          7d15h
kube-apiserver-k8s-master                 1/1     Running   5          7d15h
kube-controller-manager-k8s-master        1/1     Running   5          7d15h
kube-proxy-8pngh                          1/1     Running   5          7d15h
kube-proxy-gqt42                          1/1     Running   5          7d15h
kube-proxy-pq2fb                          1/1     Running   5          7d15h
kube-scheduler-k8s-master                 1/1     Running   5          7d15h
metrics-server-fbc46dc5f-9k6kt            1/1     Running   2          24h
```

ちなみに、pods/pod/poどれでも結果は同じ。

##service
デプロイされているserviceを確認できる。

```
$ kubectl get services
NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP   7d15h
```

ちなみに、services/service/svcどれでも結果は同じ。
-n でnamespaceを指定すると、そのnamespaceのserviceを表示できる。

##replicaset
デプロイされているreplicasetを確認できる。

```
$ kubectl -n sock-shop get replicaset
NAME                      DESIRED   CURRENT   READY   AGE
carts-5fc45568c4          1         1         1       2d23h
carts-db-64ff6c747f       1         1         1       2d23h
catalogue-69b7ff5bb4      1         1         1       2d23h
catalogue-db-69cf48ff8    1         1         1       2d23h
front-end-6fc8dff6ff      1         1         1       2d23h
orders-74c6b45f4f         1         1         1       2d23h
orders-db-df75f545f       1         1         1       2d23h
payment-7f95f9f77         1         1         1       2d23h
queue-master-85f5644bf5   1         1         1       2d23h
rabbitmq-c7b9db6cc        1         1         1       2d23h
session-db-67fd8d6d7      1         1         1       2d23h
shipping-745b9d8755       1         1         1       2d23h
user-559d7f794f           1         1         1       2d23h
user-db-87f548457         1         1         1       2d23h
```

#オプション
##-o wide
デフォルトよりも多くの情報が表示される。

```
$ kubectl get node -o wide
NAME           STATUS   ROLES    AGE     VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE                KERNEL-VERSION                CONTAINER-RUNTIME
k8s-master     Ready    master   7d15h   v1.17.3   10.20.30.10   <none>        CentOS Linux 7 (Core)   3.10.0-1062.12.1.el7.x86_64   docker://19.3.6
k8s-worker01   Ready    <none>   7d15h   v1.17.3   10.20.30.20   <none>        CentOS Linux 7 (Core)   3.10.0-1062.12.1.el7.x86_64   docker://19.3.6
k8s-worker02   Ready    <none>   7d15h   v1.17.3   10.20.30.30   <none>        CentOS Linux 7 (Core)   3.10.0-1062.12.1.el7.x86_64   docker://19.3.6

$ kubectl -n kube-system get pod -o wide
NAME                                      READY   STATUS    RESTARTS   AGE     IP                NODE           NOMINATED NODE   READINESS GATES
calico-kube-controllers-77c4b7448-6prr9   1/1     Running   5          7d15h   192.168.235.210   k8s-master     <none>           <none>
calico-node-2hc9b                         1/1     Running   5          7d15h   10.20.30.10       k8s-master     <none>           <none>
calico-node-cgdgk                         1/1     Running   5          7d15h   10.20.30.20       k8s-worker01   <none>           <none>
calico-node-tkcz5                         1/1     Running   5          7d15h   10.20.30.30       k8s-worker02   <none>           <none>
coredns-6955765f44-55wbn                  1/1     Running   5          7d15h   192.168.235.209   k8s-master     <none>           <none>
coredns-6955765f44-bhdvr                  1/1     Running   5          7d15h   192.168.235.208   k8s-master     <none>           <none>
etcd-k8s-master                           1/1     Running   5          7d15h   10.20.30.10       k8s-master     <none>           <none>
kube-apiserver-k8s-master                 1/1     Running   5          7d15h   10.20.30.10       k8s-master     <none>           <none>
kube-controller-manager-k8s-master        1/1     Running   5          7d15h   10.20.30.10       k8s-master     <none>           <none>
kube-proxy-8pngh                          1/1     Running   5          7d15h   10.20.30.30       k8s-worker02   <none>           <none>
kube-proxy-gqt42                          1/1     Running   5          7d15h   10.20.30.20       k8s-worker01   <none>           <none>
kube-proxy-pq2fb                          1/1     Running   5          7d15h   10.20.30.10       k8s-master     <none>           <none>
kube-scheduler-k8s-master                 1/1     Running   5          7d15h   10.20.30.10       k8s-master     <none>           <none>
metrics-server-fbc46dc5f-9k6kt            1/1     Running   2          24h     192.168.69.222    k8s-worker02   <none>           <none>
```

##-o yaml
yaml形式で出力する。

```
$ kubectl -n sock-shop get pod carts-5fc45568c4-r4fqk -o yaml
apiVersion: v1
kind: Pod
metadata:
  annotations:
    cni.projectcalico.org/podIP: 192.168.69.224/32
    cni.projectcalico.org/podIPs: 192.168.69.224/32
  creationTimestamp: "2020-03-01T13:36:01Z"
  generateName: carts-5fc45568c4-
  labels:
    name: carts
    pod-template-hash: 5fc45568c4
・・・
```

##-n _namespace_
上で既に出てきてるので、割愛

##-A
-Aを指定すると、全てのnamespaceのリソースを表示してくれる。
namespaceを忘れたときに便利だけど、リソースが多い場合にはたくさん表示されてしまう。

```
$ kubectl get pod -A
NAMESPACE     NAME                                      READY   STATUS    RESTARTS   AGE
kube-system   calico-kube-controllers-77c4b7448-6prr9   1/1     Running   5          7d15h
kube-system   calico-node-2hc9b                         1/1     Running   5          7d15h
kube-system   calico-node-cgdgk                         1/1     Running   5          7d15h
kube-system   calico-node-tkcz5                         1/1     Running   5          7d15h
kube-system   coredns-6955765f44-55wbn                  1/1     Running   5          7d16h
・・・
sock-shop     session-db-67fd8d6d7-f2s96                1/1     Running   3          2d23h
sock-shop     shipping-745b9d8755-nvqng                 1/1     Running   3          2d23h
sock-shop     user-559d7f794f-65sxs                     1/1     Running   3          2d23h
sock-shop     user-db-87f548457-ldqvh                   1/1     Running   3          2d23h
```
##-L _label_
_label_ に指定したラベルを持つリソースを抽出して、そのラベルも表示します。

```
$ kubectl -n sock-shop get pod -L name
NAME                            READY   STATUS    RESTARTS   AGE     NAME
carts-5fc45568c4-r4fqk          1/1     Running   3          2d23h   carts
carts-db-64ff6c747f-vlghp       1/1     Running   3          2d23h   carts-db
・・・
```

##-l _lavel_
_label_ に指定したラベルを持つリソースを抽出します。-Lと違って抽出するだけで表示はしません。

```
$ kubectl -n sock-shop get pod -l name
NAME                            READY   STATUS    RESTARTS   AGE
carts-5fc45568c4-r4fqk          1/1     Running   3          2d23h
carts-db-64ff6c747f-vlghp       1/1     Running   3          2d23h
・・・
```

##-l _lavel_=_value_
_label_ に指定したラベルに_value_が指定されたリソースを抽出します。

```
$ kubectl -n sock-shop get pod -l name=carts
NAME                     READY   STATUS    RESTARTS   AGE
carts-5fc45568c4-r4fqk   1/1     Running   3          3d
```

-Lとも組み合わせて使えます。

```
$ kubectl -n sock-shop get pod -l name=carts -L name
NAME                     READY   STATUS    RESTARTS   AGE   NAME
carts-5fc45568c4-r4fqk   1/1     Running   3          3d    carts
```

#まとめ
とりあえず現時点でkubectl getコマンドでよく使うオプションを集めてみました。
他のオプションも色々試してみて追加していきたいと思います。

なお、kubectl get allと全てのリソースを表示することもできます。
これに-Aもつけるとすべてのnamespaceのリソースも表示できるので、何ができているのか全て知りたい場合はこのコマンドを使うのもアリかなと思います。
小規模なクラスタでもこれだけダーッと出てくるので、grepかけるとかしないと使いにくいかなとは思います。

```
$ kubectl get all -A
NAMESPACE     NAME                                          READY   STATUS    RESTARTS   AGE
kube-system   pod/calico-kube-controllers-77c4b7448-6prr9   1/1     Running   5          7d15h
kube-system   pod/calico-node-2hc9b                         1/1     Running   5          7d15h
kube-system   pod/calico-node-cgdgk                         1/1     Running   5          7d15h
kube-system   pod/calico-node-tkcz5                         1/1     Running   5          7d15h
kube-system   pod/coredns-6955765f44-55wbn                  1/1     Running   5          7d16h
kube-system   pod/coredns-6955765f44-bhdvr                  1/1     Running   5          7d16h
kube-system   pod/etcd-k8s-master                           1/1     Running   5          7d16h
kube-system   pod/kube-apiserver-k8s-master                 1/1     Running   5          7d16h
kube-system   pod/kube-controller-manager-k8s-master        1/1     Running   5          7d16h
kube-system   pod/kube-proxy-8pngh                          1/1     Running   5          7d16h
kube-system   pod/kube-proxy-gqt42                          1/1     Running   5          7d16h
kube-system   pod/kube-proxy-pq2fb                          1/1     Running   5          7d16h
kube-system   pod/kube-scheduler-k8s-master                 1/1     Running   5          7d16h
kube-system   pod/metrics-server-fbc46dc5f-9k6kt            1/1     Running   2          24h
loadtest      pod/load-test-7f75b94bb8-dxf6c                1/1     Running   3          3d
loadtest      pod/load-test-7f75b94bb8-njm97                1/1     Running   3          3d
sock-shop     pod/carts-5fc45568c4-r4fqk                    1/1     Running   3          3d
sock-shop     pod/carts-db-64ff6c747f-vlghp                 1/1     Running   3          3d
sock-shop     pod/catalogue-69b7ff5bb4-pm988                1/1     Running   3          3d
sock-shop     pod/catalogue-db-69cf48ff8-5sztl              1/1     Running   3          3d
sock-shop     pod/front-end-6fc8dff6ff-4lxmn                1/1     Running   4          3d
sock-shop     pod/orders-74c6b45f4f-42rns                   1/1     Running   3          3d
sock-shop     pod/orders-db-df75f545f-vvth6                 1/1     Running   3          3d
sock-shop     pod/payment-7f95f9f77-n5v7p                   1/1     Running   3          3d
sock-shop     pod/queue-master-85f5644bf5-pgdkt             1/1     Running   3          3d
sock-shop     pod/rabbitmq-c7b9db6cc-bb5hn                  2/2     Running   6          3d
sock-shop     pod/session-db-67fd8d6d7-f2s96                1/1     Running   3          3d
sock-shop     pod/shipping-745b9d8755-nvqng                 1/1     Running   3          3d
sock-shop     pod/user-559d7f794f-65sxs                     1/1     Running   3          3d
sock-shop     pod/user-db-87f548457-ldqvh                   1/1     Running   3          3d

NAMESPACE     NAME                     TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                  AGE
default       service/kubernetes       ClusterIP   10.96.0.1        <none>        443/TCP                  7d16h
kube-system   service/kube-dns         ClusterIP   10.96.0.10       <none>        53/UDP,53/TCP,9153/TCP   7d16h
kube-system   service/metrics-server   ClusterIP   10.109.240.83    <none>        443/TCP                  25h
sock-shop     service/carts            ClusterIP   10.110.120.109   <none>        80/TCP                   3d
sock-shop     service/carts-db         ClusterIP   10.109.174.164   <none>        27017/TCP                3d
sock-shop     service/catalogue        ClusterIP   10.108.116.129   <none>        80/TCP                   3d
sock-shop     service/catalogue-db     ClusterIP   10.110.226.123   <none>        3306/TCP                 3d
sock-shop     service/front-end        NodePort    10.107.92.139    <none>        80:30001/TCP             3d
sock-shop     service/orders           ClusterIP   10.107.232.34    <none>        80/TCP                   3d
sock-shop     service/orders-db        ClusterIP   10.103.162.21    <none>        27017/TCP                3d
sock-shop     service/payment          ClusterIP   10.108.6.76      <none>        80/TCP                   3d
sock-shop     service/queue-master     ClusterIP   10.97.129.100    <none>        80/TCP                   3d
sock-shop     service/rabbitmq         ClusterIP   10.104.194.103   <none>        5672/TCP,9090/TCP        3d
sock-shop     service/session-db       ClusterIP   10.108.6.216     <none>        6379/TCP                 3d
sock-shop     service/shipping         ClusterIP   10.105.98.147    <none>        80/TCP                   3d
sock-shop     service/user             ClusterIP   10.100.7.156     <none>        80/TCP                   3d
sock-shop     service/user-db          ClusterIP   10.108.238.79    <none>        27017/TCP                3d

NAMESPACE     NAME                         DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR                 AGE
kube-system   daemonset.apps/calico-node   3         3         3       3            3           kubernetes.io/os=linux        7d15h
kube-system   daemonset.apps/kube-proxy    3         3         3       3            3           beta.kubernetes.io/os=linux   7d16h

NAMESPACE     NAME                                      READY   UP-TO-DATE   AVAILABLE   AGE
kube-system   deployment.apps/calico-kube-controllers   1/1     1            1           7d15h
kube-system   deployment.apps/coredns                   2/2     2            2           7d16h
kube-system   deployment.apps/metrics-server            1/1     1            1           25h
loadtest      deployment.apps/load-test                 2/2     2            2           3d
sock-shop     deployment.apps/carts                     1/1     1            1           3d
sock-shop     deployment.apps/carts-db                  1/1     1            1           3d
sock-shop     deployment.apps/catalogue                 1/1     1            1           3d
sock-shop     deployment.apps/catalogue-db              1/1     1            1           3d
sock-shop     deployment.apps/front-end                 1/1     1            1           3d
sock-shop     deployment.apps/orders                    1/1     1            1           3d
sock-shop     deployment.apps/orders-db                 1/1     1            1           3d
sock-shop     deployment.apps/payment                   1/1     1            1           3d
sock-shop     deployment.apps/queue-master              1/1     1            1           3d
sock-shop     deployment.apps/rabbitmq                  1/1     1            1           3d
sock-shop     deployment.apps/session-db                1/1     1            1           3d
sock-shop     deployment.apps/shipping                  1/1     1            1           3d
sock-shop     deployment.apps/user                      1/1     1            1           3d
sock-shop     deployment.apps/user-db                   1/1     1            1           3d

NAMESPACE     NAME                                                DESIRED   CURRENT   READY   AGE
kube-system   replicaset.apps/calico-kube-controllers-77c4b7448   1         1         1       7d15h
kube-system   replicaset.apps/coredns-6955765f44                  2         2         2       7d16h
kube-system   replicaset.apps/metrics-server-5cc8d5c4df           0         0         0       25h
kube-system   replicaset.apps/metrics-server-78f448b976           0         0         0       24h
kube-system   replicaset.apps/metrics-server-fbc46dc5f            1         1         1       24h
loadtest      replicaset.apps/load-test-7f75b94bb8                2         2         2       3d
sock-shop     replicaset.apps/carts-5fc45568c4                    1         1         1       3d
sock-shop     replicaset.apps/carts-db-64ff6c747f                 1         1         1       3d
sock-shop     replicaset.apps/catalogue-69b7ff5bb4                1         1         1       3d
sock-shop     replicaset.apps/catalogue-db-69cf48ff8              1         1         1       3d
sock-shop     replicaset.apps/front-end-6fc8dff6ff                1         1         1       3d
sock-shop     replicaset.apps/orders-74c6b45f4f                   1         1         1       3d
sock-shop     replicaset.apps/orders-db-df75f545f                 1         1         1       3d
sock-shop     replicaset.apps/payment-7f95f9f77                   1         1         1       3d
sock-shop     replicaset.apps/queue-master-85f5644bf5             1         1         1       3d
sock-shop     replicaset.apps/rabbitmq-c7b9db6cc                  1         1         1       3d
sock-shop     replicaset.apps/session-db-67fd8d6d7                1         1         1       3d
sock-shop     replicaset.apps/shipping-745b9d8755                 1         1         1       3d
sock-shop     replicaset.apps/user-559d7f794f                     1         1         1       3d
sock-shop     replicaset.apps/user-db-87f548457                   1         1         1       3d
```