Open6

GKE Autopilot を使ってk8sクラスタをいい感じにシュッとたてる

JunyaJunya

ぽちぽちしてたてた。5〜10分くらいでできた。terafform化したかったけど、それはまたの機会に

大体デフォルトのままセットアップして、リージョンを東京に設定したくらい。あとはPodのCIDRのデフォルトが10.20.0.0/17っぽくてそうなんだという感想

JunyaJunya

gcloud container clusters get-credentials ... を実行してクレデンシャル引っ張ってきてkubectlコマンド発行できるようにする。

基本的なコマンドは通っていそう。(ワーカー)ノードは作られていない

$ k get po
No resources found in default namespace.
$ k get po -A
NAMESPACE         NAME                                                      READY   STATUS     RESTARTS        AGE
gke-gmp-system    alertmanager-0                                            0/2     Pending    0               5m57s
gke-gmp-system    collector-hkpjw                                           0/2     Init:0/1   0               5m5s
...
$  k get node -A
No resources found
JunyaJunya

Hello World!

Hello World! なbudyboxをやる。

$ k create ns example
$ cat << EOF > example.yml
apiVersion: v1
kind: Pod
metadata:
  name: busybox
  namespace: example
spec:
  containers:
  - name: busybox
    image: busybox
    command: ["sleep", "600"]
    resources:
      limits:
        cpu: "100m"
        memory: "256Mi"
    volumeMounts:
    - name: host-path
      mountPath: /data
      readOnly: true
  volumes:
  - name: host-path
    hostPath:
      path: /var/log
  restartPolicy: Never
EOF
$ k apply -f ./example.yml
Warning: autopilot-default-resources-mutator:Autopilot updated Pod example/busybox: adjusted 'cpu' resource to meet requirements for containers [busybox] (see http://g.co/gke/autopilot-defaults).
pod/busybox created

できた

1分くらいするとノードがニョキっと生え、Podも生える。便利

$ k get node -n example
NAME                            STATUS   ROLES    AGE   VERSION
gk3-core-pool-2-a353431b-ms8m   Ready    <none>   60s   v1.29.5-gke.1091002
$ k get po -n example
NAME      READY   STATUS    RESTARTS   AGE
busybox   1/1     Running   0          3m18s
JunyaJunya

せっかくなので、NginxなHello Worldもやる。

$ curl -o nginx.yml https://kubernetes.io/examples/application/deployment.yaml 
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   371  100   371    0     0    113      0  0:00:03  0:00:03 --:--:--   113
$ cat nginx.yml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 2 # tells deployment to run 2 pods matching the template
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80

使われているnginxのイメージが古そうなので、1.27.0とかに更新してあげる。

$ k apply  -f ./nginx.yml                                                     
Warning: autopilot-default-resources-mutator:Autopilot updated Deployment default/nginx-deployment: defaulted unspecified 'cpu' resource for containers [nginx] (see http://g.co/gke/autopilot-defaults).
deployment.apps/nginx-deployment created

できた

$ k get deployments -o wide
NAME               READY   UP-TO-DATE   AVAILABLE   AGE     CONTAINERS   IMAGES         SELECTOR
nginx-deployment   2/2     2            2           6m30s   nginx        nginx:1.27.0   app=nginx
$ k get po        
NAME                                READY   STATUS    RESTARTS   AGE
nginx-deployment-65555b5dfb-49pdh   1/1     Running   0          2m13s
nginx-deployment-65555b5dfb-dz6v6   1/1     Running   0          3m46s

ノードもひとつ増えている。嬉しい

$ k get node
NAME                                  STATUS   ROLES    AGE     VERSION
gk3-core-nap-1cwkvnbf-ffe91f52-vg88   Ready    <none>   2m26s   v1.29.5-gke.1091002
gk3-core-pool-2-a353431b-ms8m         Ready    <none>   12m     v1.29.5-gke.1091002
JunyaJunya

一旦クリーンアップする

$ k delete -f ./nginx.yml 
deployment.apps "nginx-deployment" deleted
$ k delete  -f ./example.yml
pod "busybox" deleted
$ k delete ns example
namespace "example" deleted

消えていそう

$ k get po -A | grep -v gke-gmp-system | grep -v kube-system | grep -v gke-managed-cim
NAMESPACE         NAME                                                      READY   STATUS    RESTARTS        AGE