【WEB+DB PRESS Vol.99】k8sの記事での利用コマンド
概要
WEB+DB PRESS Vol.99 の記事を参考にk8sを利用してみました。
詳しい内容は、記事をご参照いただければと思います。(非常にわかりやすい記事でした)
下記は、記事に書いてあるコマンドのままですが、メモ書き程度に思っていただければ。
コマンド
gcloud側の設定
# project の設定 % gcloud config set project xxxx # ゾーンの設定 % gcloud config set compute/zone asia-northeast1-a # 認証設定 % gcloud auth login
コンテナクラスタ起動
# クラスタ起動 % gcloud container clusters create one \ --cluster-version=1.6.7 \ --machine-type=g1-small Creating cluster one...done. Created [https://container.googleapis.com/v1/projects/xxxxx/zones/asia-northeast1-a/clusters/one]. kubeconfig entry generated for one. NAME ZONE MASTER_VERSION MASTER_IP MACHINE_TYPE NODE_VERSION NUM_NODES STATUS one asia-northeast1-a 1.6.7 35.190.233.232 g1-small 1.6.7 3 RUNNING
GCRにイメージをbuildしてpush
# Container build file % cat manifest/cloudbuild.yaml env: ['PROJECT_ROOT=one'] args: ['build', '-o', 'goneup'] - name: 'gcr.io/cloud-builders/docker' env: ['PROJECT_ROOT=one'] args: ['build', '--tag=asia.gcr.io/$PROJECT_ID/one/goneup', '.'] images: ['asia.gcr.io/$PROJECT_ID/one/goneup']% # push gcr % gcloud container builds submit --config=manifest/cloudbuild.yaml .
kubernetes利用
Pod単独
% cat manifest/pod.yaml apiVersion: v1 kind: Pod metadata: name: goneup spec: containers: - image: asia.gcr.io/[project]/one/goneup:latest imagePullPolicy: Always name: goneup # create pod % kubectl create -f manifest/pod.yaml # port forward % kubectl port-forward [pod name] [local port]:[external port]
ReplicaSet
apiVersion: extensions/v1beta1 kind: ReplicaSet metadata: name: goneup spec: replicas: 3 template: metadata: labels: name: goneup spec: containers: - image: asia.gcr.io/[project]/one/goneup:latest imagePullPolicy: Always name: goneup # create replicaset % kubectl create -f manifest/replicaset.yaml # check replicasets % kubectl get replicasets NAME DESIRED CURRENT READY AGE goneup-1100937273 2 2 2 57s # replace replicaset % kubectl replace -f manifest/replicaset.yaml
Deployment
% cat manifest/deployment.yaml apiVersion: apps/v1beta1 kind: Deployment metadata: name: goneup spec: replicas: 3 template: metadata: labels: name: goneup spec: containers: - image: asia.gcr.io/[project]/one/goneup:latest imagePullPolicy: Always name: goneup # create deployment % kubectl create -f manifest/deployment.yaml # check deployment % kubectl get deployment NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE goneup 2 2 2 2 50s
Service
% cat manifest/service.yaml apiVersion: v1 kind: Service metadata: name: goneup spec: type: LoadBalancer selector: name: goneup ports: - port: 8080 # create service % kubectl create -f manifest/service.yaml
Ingress
% cat manifest/ingress.yaml apiVersion: extensions/v1beta1 kind: Ingress metadata: name: goneup spec: rules: - http: paths: - path: /* backend: serviceName: goneup servicePort: 8080 # create ingress % kubectl create -f manifest/ingress.yaml
まとめ
各マニフェストファイルを作成することで、簡単にGCP上にk8sを構築できました。
また情報にアクセスしたい際は、kubectl get xxx
で簡単にアクセスできるところが非常にいいなと感じました。
基本的な設定しか入れていないので、利用してみてもっと詳細な設定まで使いこなせると良いかと思います。