Hitachi

Hitachi Advanced Data Binder システム構築・運用ガイド


18.5.1 Kubernetesの各リソースオブジェクトの生成

Kubernetesの各リソースオブジェクトを生成する手順を説明します。

生成するリソースオブジェクトは次のとおりです。

各リソースオブジェクトの生成は,Kubernetesマスタノード上からkubectlコマンドを使用して実施してください。

kubectlコマンドには次の実行方法がありますが,ここではマニフェストファイルを指定する方法を説明します。

メモ

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

なお,各列に表示される値は実行環境によって異なります。また,kubectldescribeサブコマンドを使用すると,各リソースオブジェクトのさらに詳細な情報を参照できます。