Minikube 上でのkubectlコマンド実行など (Windows 10)

- VirtualBoxのインストール (6.0.8 r130520 (Qt5.6.2))


- namespace 作成

```
kubectl create namespace [namespace]
```

<br/>

- commandのみでnginx imageのpodを作成する

```
kubectl run nginx --image=nginx --restart=Never --namespace=mynamespace


(**) option 説明
--restart=Never : podが存在するときrestartしない
```

<br/>

- commandから作成したpodを削除する

```
kubectl delete pod [pod name] -n [namespace]
```

<br/>

- Yaml fileを作成してpodを作成する

```
kubectl run nginx --image=nginx  --restart=Never   --namespace=mynamespace --dry
-run -o yaml > nginx.yaml
kubectl create -f nginx.yaml --namespace=mynamespace

(**) option説明
--dry-run : command実行しない
-o yaml : yaml形式で
上記2つのoptionを組み合わせることで、run 実行するための
yamlファイルが取得できる。


以下のようなファイルをviなどで作成してもOK

vi pod-nginx
===
apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: nginx
  name: nginx
spec:
  containers:
  - image: nginx
    name: nginx
    resources: {}
  dnsPolicy: ClusterFirst
  restartPolicy: Never
status: {}
===

kubectl create -f nginx.yaml --namespace=mynamespace

```

<br/>

- pod名:bb でbusybox imageのPodを作成し、"env" コマンドの実行結果を標準出力に表示する。

```
kubectl run bb --image=busybox --namespace=mynamespace --restart=Never --tty -it --command -- env --namespace=mynamespace

(**) 実行結果
===
PS C:\kubernetes> kubectl run bb --image=busybox --namespace=mynamespace --restart=Never --tty -it
 --command -- env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=bb
TERM=xterm
KUBERNETES_PORT=tcp://10.96.0.1:443
KUBERNETES_PORT_443_TCP=tcp://10.96.0.1:443
KUBERNETES_PORT_443_TCP_PROTO=tcp
KUBERNETES_PORT_443_TCP_PORT=443
KUBERNETES_PORT_443_TCP_ADDR=10.96.0.1
KUBERNETES_SERVICE_HOST=10.96.0.1
KUBERNETES_SERVICE_PORT=443
KUBERNETES_SERVICE_PORT_HTTPS=443
HOME=/root
===
```

- NameSpace 'myns' を作成するためのYaml codeを取得する。

```
> kubectl.exe create namespace myns --dry-run -o yaml
apiVersion: v1
kind: Namespace
metadata:
  creationTimestamp: null
  name: myns
spec: {}
status: {}
```

<br/>

- ResourceQuota 'myrq' を作成するためのyaml codeを取得する。

```
> kubectl.exe create resourcequota myrq --dry-run -o yaml
apiVersion: v1
kind: ResourceQuota
metadata:
  creationTimestamp: null
  name: myrq
spec: {}
status: {}
```

<br/>

- すべてのNameSpaceのPodを表示する。

```
> kubectl.exe get pods --all-namespaces
NAMESPACE     NAME                                    READY   STATUS      RESTARTS   AGE
kube-system   coredns-5c98db65d4-dtqm6                1/1     Running     2          3d
kube-system   coredns-5c98db65d4-kx9mz                1/1     Running     2          3d
kube-system   etcd-minikube                           1/1     Running     1          3d
kube-system   kube-addon-manager-minikube             1/1     Running     1          3d
kube-system   kube-apiserver-minikube                 1/1     Running     1          3d
kube-system   kube-controller-manager-minikube        1/1     Running     1          3d
kube-system   kube-proxy-hvnh6                        1/1     Running     1          3d
kube-system   kube-scheduler-minikube                 1/1     Running     1          3d
kube-system   kubernetes-dashboard-7b8ddcb5d6-7dvx7   1/1     Running     2          3d
kube-system   storage-provisioner                     1/1     Running     2          3d
mynamespace   bb                                      0/1     Completed   0          18m
mynamespace   nginx                                   1/1     Running     0          86m
```

- image : nginx の pod nginxを作成しport 80へのトラフィックを許可する。

```
kubectl.exe run nginx --image=nginx --restart=Never --namespace=mynamespace --po
rt=80
```

- 稼働中のpod:nginxのimageをnginx:1.7.1に更新する

```
kubectl.exe set image pod nginx nginx=nginx:1.7.1 --namespace=mynamespace

===
> kubectl.exe set image pod nginx nginx=nginx:1.7.1 --namespace=mynamespace^C
PS C:\Users\tsutomu.tazawa\kubernetes> kubectl.exe describe pod nginx --namespace=mynamespace
Name:         nginx
Namespace:    mynamespace
Priority:     0
Node:         minikube/10.0.2.15
Start Time:   Mon, 22 Jul 2019 13:03:34 +0900
Labels:       run=nginx
Annotations:  <none>
Status:       Running
IP:           172.17.0.6
Containers:
  nginx:
    Container ID:   docker://c030cf10cc621edcc6f79b2e6905c1c0659a3753f5b9b3aff3052fbf1866cb0c
    Image:          nginx:1.7.1
    Image ID:       docker-pullable://nginx@sha256:7fbe0579e123f3d2b29c9159e9a80547fb72621bb419e52d98c679ddbf1055a1
    Port:           80/TCP
    Host Port:      0/TCP
    State:          Running
      Started:      Mon, 22 Jul 2019 16:35:50 +0900
    Last State:     Terminated
      Reason:       Completed
      Exit Code:    0
      Started:      Mon, 22 Jul 2019 13:03:38 +0900
      Finished:     Mon, 22 Jul 2019 16:35:47 +0900
    Ready:          True
    Restart Count:  1
    Environment:    <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-pstnz (ro)
Conditions:
  Type              Status
  Initialized       True
  Ready             True
  ContainersReady   True
  PodScheduled      True
Volumes:
  default-token-pstnz:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-pstnz
    Optional:    false
QoS Class:       BestEffort
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300s
                 node.kubernetes.io/unreachable:NoExecute for 300s
Events:
  Type    Reason   Age                  From               Message
  ----    ------   ----                 ----               -------
  Normal  Killing  66s                  kubelet, minikube  Container nginx definition changed, will be restarted
  Normal  Pulling  66s                  kubelet, minikube  Pulling image "nginx:1.7.1"
  Normal  Created  63s (x2 over 3h33m)  kubelet, minikube  Created container nginx
  Normal  Started  63s (x2 over 3h33m)  kubelet, minikube  Started container nginx
  Normal  Pulled   63s                  kubelet, minikube  Successfully pulled image "nginx:1.7.1"
===
```

<br/><br/>

[参考資料]
-- kubernetes : kubectlコマンド一覧
https://qiita.com/suzukihi724/items/241f7241d297a2d4a55c