18.5.1 Kubernetesの各リソースオブジェクトの生成
Kubernetesの各リソースオブジェクトを生成する手順を説明します。
生成するリソースオブジェクトは次のとおりです。
-
HADBサーバ用Deployment
-
HADBクライアント用Deployment
-
コンテナ間通信用Service
各リソースオブジェクトの生成は,Kubernetesマスタノード上からkubectlコマンドを使用して実施してください。
kubectlコマンドには次の実行方法がありますが,ここではマニフェストファイルを指定する方法を説明します。
-
リソースオブジェクトの生成方法を定義したマニフェストファイル(yamlファイル)を指定する方法
-
runサブコマンドに直接Dockerイメージを指定する方法
- メモ
-
kubectlコマンドを実行できるユーザで各リソースオブジェクトを生成してください。なお,スーパユーザで実行することを想定しています。異なるユーザで実行する場合は,yamlファイルの格納場所などを適宜変更してください。
(1) マニフェストファイル(yamlファイル)を準備する
リソースオブジェクトの生成方法を定義したマニフェストファイルを準備します。マニフェストファイルは,Kubernetesマスタノードに保存してください。保存先を次に示します。
■マニフェストファイルの保存先
/root/k8s/hadb-k8s-manifest.yaml
マニフェストファイルの例を次に示します。
- メモ
-
マニフェストファイルは,行頭のインデント(文字の開始位置)が厳密に評価されます。注意して作成してください。
■マニフェストファイルの例
apiVersion: v1 kind: Service metadata: name: hadb-svc spec: type: ClusterIP selector: app: hadb-server ports: - name: hadb-port protocol: TCP port: 23650 targetPort: 23650 --- apiVersion: apps/v1 kind: Deployment metadata: name: hadb-server labels: name: hadb-server spec: replicas: 1 selector: matchLabels: app: hadb-server template: metadata: labels: app: hadb-server annotations: security.alpha.kubernetes.io/sysctls: net.ipv4.ip_local_port_range=32767 61001 security.alpha.kubernetes.io/unsafe-sysctls: kernel.msgmnb=16386, kernel.msgmni=736, kernel.sem=250 32001 32 129, kernel.shmmax=18446744073692774400, kernel.shmmni=4097, kernel.shmall=18446744073692774400, net.core.somaxconn=129 spec: # This container starts the HADB server. containers: - name: hadb-server image: hadb-server:$VER ports: - containerPort: 23650 protocol: TCP resources: requests: cpu: 2 memory: 8Gi limits: cpu: 45 memory: 160Gi volumeMounts: - name: dbarea-vol mountPath: /HADB/db - name: spool-vol mountPath: /HADB/server/spool lifecycle: preStop: exec: command: ["/bin/sh", "-c", "echo Terminating HADB...; sleep 3; runuser adbmanager -c 'adbstop --cancel'; sleep 10"] volumes: - name: dbarea-vol hostPath: path: /exports/hadb-server/dbarea type: DirectoryOrCreate - name: spool-vol hostPath: path: /exports/hadb-server/spool type: DirectoryOrCreate terminationGracePeriodSeconds: 30 nodeSelector: kubernetes.io/hostname: host01 --- apiVersion: apps/v1 kind: Deployment metadata: name: hadb-client labels: name: hadb-client spec: replicas: 1 selector: matchLabels: app: hadb-client template: metadata: labels: app: hadb-client annotations: security.alpha.kubernetes.io/sysctls: net.ipv4.ip_local_port_range=32767 61001 security.alpha.kubernetes.io/unsafe-sysctls: kernel.msgmnb=16386, kernel.msgmni=736, kernel.sem=250 32001 32 129, kernel.shmmax=18446744073692774400, kernel.shmmni=4097, kernel.shmall=18446744073692774400, net.core.somaxconn=129 spec: containers: - name: hadb-client image: hadb-client:$VER resources: requests: cpu: 2 memory: 8Gi limits: cpu: 4 memory: 16Gi
$VERは,HADBサーバのバージョンとリリース番号です。
[説明]
上記のマニフェストファイルは,HADB用に作成するKubernetesの各リソースオブジェクトの定義を,すべて1つのファイルに記述しています。
- Kubernetesの各リソースオブジェクト
-
-
HADBサーバ用Deployment
-
HADBクライアント用Deployment
-
コンテナ間通信用Service
-
(2) kubectlコマンドでリソースオブジェクトを生成する
次のコマンドを実行して,HADB用にKubernetesの各リソースオブジェクトを生成してください。
■コマンドの実行例
cd /root/k8s kubectl apply -f ./hadb-k8s-manifest.yaml --record
リソースオブジェクトが正常に生成されている場合,次のような結果が表示されます。
service/hadb-svc created deployment.apps/hadb-server created deployment.apps/hadb-client created
また,次のコマンドを実行すると,生成されたリソースオブジェクトが正しく動作しているかどうかを確認できます。
■コマンドの実行例
kubectl get deployments kubectl get pods kubectl get services hadb-svc
リソースオブジェクトが正しく動作している場合,次のような結果が表示されます。
■コマンドの実行結果の例
NAME READY UP-TO-DATE AVAILABLE AGE hadb-client 1/1 1 1 14s hadb-server 1/1 1 1 14s NAME READY STATUS RESTARTS AGE hadb-client-6fbb9fbb97-4xvkr 1/1 Running 0 19s hadb-server-5fd5cc7fb8-8jv58 1/1 Running 0 20s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE hadb-svc ClusterIP 10.233.47.129 <none> 23650/TCP 28s
なお,各列に表示される値は実行環境によって異なります。また,kubectlのdescribeサブコマンドを使用すると,各リソースオブジェクトのさらに詳細な情報を参照できます。