LoginSignup
0
1

More than 3 years have passed since last update.

GKE作業コマンドメモ

Last updated at Posted at 2020-06-18

概要

  • GKE作業をするときコピペするための個人的なコマンドメモ
  • SDKやサービスアクセス権限などはすべて整っている前提

詳細

GKE作業コマンドメモ

作業準備

$ sudo gcloud components update kubectl
$ export PROJECT_ID="$(gcloud config get-value project -q)"
$ export GCR_HOST="asia.gcr.io"
$ export DOCKER_IMAGE="sample-app-server"
$ export IMAGE_TAG="v1"
$ export CONTAINER_NAME=${DOCKER_IMAGE}
$ export CLUSTER_NAME="sample-cluster"
$ export COMPUTE_ZONE="asia-northeast1-c"
$ export MACHINE_TYPE="n1-standard-1"
$ gcloud config set project ${PROJECT_ID}
$ gcloud config set container/cluster ${CLUSTER_NAME}
$ gcloud config set compute/zone ${COMPUTE_ZONE}

または上記をまとめた処理を実行する
例)$ bash env.sh

Dockerfile単体チェック

作業コマンドメモ
$ cd ~/docker/<Dockerfile_dir>/
$ docker build ./ -t ${GCR_HOST}/${DOCKER_IMAGE}:${IMAGE_TAG}
$ docker images
$ docker run -p 8080:80 --rm --privileged -d -it ${GCR_HOST}/${DOCKER_IMAGE}:${IMAGE_TAG} /sbin/init
$ docker ps
$ docker exec -it <container_id> /bin/bash
$ ps -aux | grep -e nginx -e php-fpm
# exit
$ curl http://0.0.0.0:8080/phpinfo.php
$ lynx http://0.0.0.0:8080/phpinfo.php
$ docker stop <container_id>

クラスター作成

$ gcloud container clusters create ${CLUSTER_NAME} --zone ${COMPUTE_ZONE} --machine-type="${MACHINE_TYPE}" --num-nodes=3
$ gcloud container clusters get-credentials ${CLUSTER_NAME}
$ gcloud compute instances list

##kubectl get pods
##kubectl create deployment hello-web --image=gcr.io/${PROJECT_ID}/hello-app:v1
##kubectl expose deployment hello-web --type=LoadBalancer --port 80 --target-port 8080
##kubectl get service

コンテナイメージ作成登録

$ cloudshell edit Dockerfile
$ docker build -t asia.gcr.io/${PROJECT_ID}/${DOCKER_IMAGE}:${IMAGE_TAG} .
$ docker push ${GCR_HOST}/${PROJECT_ID}/${DOCKER_IMAGE}:${IMAGE_TAG}
$ gcloud container images list-tags asia.gcr.io/${PROJECT_ID}/${DOCKER_IMAGE}

コンテナ起動

$ docker run -d -p 8080:80 asia.gcr.io/${PROJECT_ID}/${DOCKER_IMAGE}:${IMAGE_TAG}
$ curl http://0.0.0.0:8080/phpinfo.php
$ lynx http://0.0.0.0:8080/phpinfo.php
$ docker rm <container_id>
$ docker ps
$ docker kill <container_id>
$ docker rm <container_id>

コンテナデプロイ

$ wget https://raw.githubusercontent.com/GoogleCloudPlatform/gcp-getting-started-lab-jp/master/fundamental/gke/sample-app-server/sample-app-server-deployment.yaml
※ファイル名変更

$ cloudshell edit sample-webapp-deployment.yaml
$ kubectl apply -f sample-webapp-deployment.yaml
$ kubectl get deployment
$ kubectl get pods -o wide
$ wget https://raw.githubusercontent.com/GoogleCloudPlatform/gcp-getting-started-lab-jp/master/fundamental/gke/sample-app-server/hoge-app-server-service.yaml
$ cloudshell edit sample-app-server-service.yaml
$ kubectl apply -f sample-app-server-service.yaml
$ kubectl get svc
# podにログインして確認
$ kubectl exec -it web-xxxxxxxxx /bin/bash
$ kubectl exec -it app-xxxxxxxxx /bin/bash
$ curl <EXTERNAL_IP>:8080
  • sample-webapp-server-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: web
spec:
  replicas: 3
  selector:
    matchLabels:
      run: web
  template:
    metadata:
      labels:
        run: web
    spec:
      containers:
      - name: web
        image: asia.gcr.io/${PROJECT_ID}/sample-web-server:v1
        ports:
        - containerPort: 80
apiVersion: apps/v1
kind: Deployment
metadata:
  name: app
spec:
  replicas: 3
  selector:
    matchLabels:
      run: app
  template:
    metadata:
      labels:
        run: app
    spec:
      containers:
      - name: app
        image: asia.gcr.io/${PROJECT_ID}/sample-app-server:v1
        ports:
        - containerPort: 9000
  • sample-app-server-service.yaml
apiVersion: v1
kind: Service
metadata:
  labels:
    name: sample-app-server
  name:sample-app-server
spec:
  ports:
  - port: 8080
  selector:
    name: sample-app-server
  type: LoadBalancer

ポッドスケール

$ kubectl scale deployment/hoge-app-server --replicas=3
$ kubectl get pods

コンテナ削除

$ kubectl delete svc/hoge-app-server
$ kubectl delete deployment/hoge-app-server
0
1
0

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
0
1