#chiroito ’s blog

Java を中心とした趣味の技術について

AWS 上に構築した OpenShift に Infra ノードを追加する

コンテナイメージレジストリやルータなどインフラを構成する要素のみをホストするようなマシンをインフラノードと言います。今回はこの様なノードを AWS 上で構築した OpenShift 4.3 に追加します。

インフラノードとワーカーノードの違いは以下の要素を含んでいるかどうかです。

spec:
  template:
    metadata:
      labels:
        machine.openshift.io/cluster-api-machine-role: infra 
        machine.openshift.io/cluster-api-machine-type: infra 
    spec:
      metadata:
        labels:
          node-role.kubernetes.io/infra: "" 

MachineSet を作成

以下の Yaml はインフラノードとなる MachineSet のサンプルです。

chiroito-cluster と言う名前のクラスタに us-east-2a-infra と言う名前の MachineSet を追加します。

AWS特有の情報は以下で作ります。

  • リージョンは us-east-2
  • アベイラビリティゾーンは us-east-2a
  • インスタンスタイプは m5.large
  • セキュリティグループは chiroito-worker-infra-sg

machineset.yaml

apiVersion: machine.openshift.io/v1beta1
kind: MachineSet
metadata:
  labels:
    machine.openshift.io/cluster-api-cluster: chiroito-cluster 
  name: us-east-2a-infra 
  namespace: openshift-machine-api
spec:
  replicas: 2
  selector:
    matchLabels:
      machine.openshift.io/cluster-api-cluster: chiroito-cluster 
      machine.openshift.io/cluster-api-machineset: us-east-2a-infra 
  template:
    metadata:
      labels:
        machine.openshift.io/cluster-api-cluster: chiroito-cluster 
        machine.openshift.io/cluster-api-machine-role: infra 
        machine.openshift.io/cluster-api-machine-type: infra 
        machine.openshift.io/cluster-api-machineset: us-east-2a-infra 
    spec:
      metadata:
        labels:
          node-role.kubernetes.io/infra: "" 
      providerSpec:
        value:
          ami:
            id: ami-0d8f77b753c0d96dd
          apiVersion: awsproviderconfig.openshift.io/v1beta1
          blockDevices:
            - ebs:
                iops: 0
                volumeSize: 120
                volumeType: gp2
          credentialsSecret:
            name: aws-cloud-credentials
          deviceIndex: 0
          iamInstanceProfile:
            id: chiroito-cluster-worker-profile 
          instanceType: m5.large
          kind: AWSMachineProviderConfig
          placement:
            availabilityZone: us-east-2a
            region: us-east-2
          securityGroups:
            - filters:
                - name: tag:Name
                  values:
                    - chiroito-cluster-worker-sg 
          subnet:
            filters:
              - name: tag:Name
                values:
                  - chiroito-cluster-private-us-east-2a 
          tags:
            - name: kubernetes.io/cluster/chiroito-cluster 
              value: owned
          userDataSecret:
            name: worker-user-data

この Yaml を使って MachineSet を作ります。

$ oc create -f machineset.yaml

確認

MachineSet が作成されたかを確認します。

$ oc get machinesets -n openshift-machine-api
NAME                DESIRED   CURRENT   READY   AVAILABLE   AGE
us-east-2a-infra    2         2         2       2           20h
us-east-2a-worker   2         2         2       2           21h

MachineSet によって Machine が作成されたかを確認します。

oc get machines -n openshift-machine-api
NAME                        PHASE     TYPE        REGION      ZONE         AGE
chiroito-cluster-master-0   Running   m5.xlarge   us-east-2   us-east-2a   21h
chiroito-cluster-master-1   Running   m5.xlarge   us-east-2   us-east-2b   21h
chiroito-cluster-master-2   Running   m5.xlarge   us-east-2   us-east-2c   21h
us-east-2a-infra-5kbl6      Running   m5.large    us-east-2   us-east-2a   20h
us-east-2a-infra-wvpx4      Running   m5.large    us-east-2   us-east-2a   20h
us-east-2a-worker-7gp74     Running   m5.large    us-east-2   us-east-2c   20h
us-east-2a-worker-tss5j     Running   m5.large    us-east-2   us-east-2c   20h

ついでにノードも確認しましょう。きちんと infra,worker となっていれば OK です。

oc get nodes -n openshift-machine-api
NAME                                         STATUS   ROLES          AGE   VERSION
ip-10-0-129-22.us-east-2.compute.internal    Ready    infra,worker   20h   v1.16.2
ip-10-0-132-220.us-east-2.compute.internal   Ready    master         21h   v1.16.2
ip-10-0-141-130.us-east-2.compute.internal   Ready    infra,worker   20h   v1.16.2
ip-10-0-145-141.us-east-2.compute.internal   Ready    master         21h   v1.16.2
ip-10-0-165-220.us-east-2.compute.internal   Ready    master         21h   v1.16.2
ip-10-0-166-143.us-east-2.compute.internal   Ready    worker         20h   v1.16.2
ip-10-0-169-180.us-east-2.compute.internal   Ready    worker         20h   v1.16.2

参考資料