🔖

【Kubernetes】入門したので簡潔にまとめてみた

2021/01/16に公開

【1】 マニフェストファイル(AP)

◆ Pod

  • Pod作成時ContainerCreatingの場合$ kubectl describe pod [Pod名]で確認
apiVersion: v1
kind: Pod
metadata:
  name: sample-app
  namespace: default
  labels:
    app: test
    type: application
spec:
  containers:
    - name: sample-app
      image: sample-app:v1.0
    command:
      - /bin/bash
    args:
      - -c
      - rails db:migrate && rails server

◆ Service

apiVersion: v1
kind: Service
metadata:
  name: app-service
spec:
  ports:
  - port: 3000
    targetPort: 3000

◆ Deployment

apiVersion: apps/v1
kind: Deployment
metadata:
  name: sample-deployment
spec:
  selector:
    matchLabels:   #templateのlabelと一致させる
      app: test
    replicas: 2
  strategy:
    rollingUpdate:   #基本はRollingUpdate一択
      maxSurge: 1
      maxUnavailable: 1
  revesionHistoryLimit: 12   #ReplicaSetの履歴保存数
    template:
      metadata:
        labels:   #5行上のmatchLabelsと一致させる
          app: test
      spec:
        containers:
        - name: sample-app
          image: sample-app:v1.0
          ports:
          - containerPort: 3000

◆ ConfigMap

apiVersion: v1
kind: ConfigMap
metadata:
  name: config   #configMapKeyRefで使用
data:
  sample.cfg: |
    username: test   #configMapKeyRefで使用

---

apiVersion: v1
kind: Pod
metadata:
  name: sample
spec:
  containers:
  - name: sample-app
    image: sample-app:v1.0
    env:
    - name: TYPE
      valueFrom:
        configMapKeyRef:
          name: config     #上記configMapのmetadata参照
          key: username    #上記configMapのdataプロパティ参照

◆ Ingress

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: sample
spec:
  rules:
  - http:
      paths:
      - path: /   #どのパスにリダイレクトするか設定
        backend:
          serviceName: sample   #Serviceマニフェストのmetadata参照
          servicePort: 80

【2】 マニフェストファイル(DB)

◆ Pod

apiVersion: v1
kind: Pod
metadata:
  name: sample-db
spec:
  containers:
    - name: postgresql
      image: sample-db:v1.0
    volumeMounts:
        - mountPath: "/var/lib/postgresql/data"
          name: db
  volumes:
    - name: db
      persistentVolumeClaim:
        claimName: sample-pvc

◆ PersistentVolume PersistentVolumeClaim

apiVersion: v1
kind: PersistentVolume
metadata:
  name: sample-pv
spec:
  capacity:                   #ストレージ容量
    storage: 1Gi
  accessModes:
  - ReadWriteMany              #他はReadWriteOnce, ReadOnlyMany
  storageClassName: standard   #ストレージの種類
  hostpath:
    path: "/tmp"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: sample-pvc
spec:
  accessModes:
    - ReadWriteMany            #他はReadWriteOnce, ReadOnlyMany
  resources:
    requests:
      storage: 1Gi             #ストレージ容量
  storageClassName: standard   #ストレージの種類

【3】 pod操作

◆ pod作成
$ kubectl apply -f pod.yml
◆ pod一覧確認
$ kubectl get pod
NAME    READY     STATUS    RESTARTS   AGE
sample    1/1       Running    0         3s
◆ pod削除
$ kubectl delete pod sample
$ kubectl delete -f pod.yml
◆ podログイン
$ kubectl exec -it sample sh
◆ podとのファイル転送
$ kubectl cp sample:/root/hello.txt ./hello.txt
◆ pod詳細表示
$ kubectl describe pod/sample
◆ podログ確認
$ kubectl logs pod/sample
◆ IPアドレス確認
$ kubectl get pod -o wide

【4】 kubectlインストール

$ brew install kubectl
$ brew install kubernetes-cli
$ kubectl version --client

参考文献

Discussion