ハイブリッドノードの接続
Amazon EKS ハイブリッドノードは、AWS SSM ハイブリッドアクティベーションまたは AWS IAM Roles Anywhere によって提供される一時的な IAM 認証情報を使用して Amazon EKS クラスターで認証を行います。このワークショップでは、SSM ハイブリッドアクティベーションを使用します。
ハイブリッドアクティベーションを作成して ACTIVATION_ID と ACTIVATION_CODE 環境変数を設定するために、次のコマンドを実行します:
アクティベーションが作成されたので、次はインスタンスをクラスターに接続する際に参照される NodeConfig を作成します。
apiVersion: node.eks.aws/v1alpha1
kind: NodeConfig
spec:
cluster:
name: $EKS_CLUSTER_NAME
region: $AWS_REGION
hybrid:
ssm:
activationCode: $ACTIVATION_CODE
activationId: $ACTIVATION_ID
$EKS_CLUSTER_NAME と $AWS_REGION 環境変数を使用して、ターゲットの EKS クラスター name と region を指定
前のステップで作成した $ACTIVATION_CODE と $ACTIVATION_ID 環境変数を使用して、SSM の activationCode と activationId を指定
nodeconfig.yaml をハイブリッドノードインスタンスにコピーしましょう。
次に、EC2インスタンス上で nodeadm を使用してハイブリッドノードの依存関係をインストールしましょう。これには containerd、kubelet、kubectl、AWS SSM または AWS IAM Roles Anywhere コンポーネントが含まれます。インストールされるコンポーネントとファイルの場所については、ハイブリッドノードの nodeadm リファレンス を参照してください。
依存関係がインストールされ、nodeconfig.yaml が配置されたので、インスタンスをハイブリッドノードとして初期化します。
ハイブリッドノードがクラスターに正常に参加したか確認しましょう。認証情報プロバイダーとしてSystems Managerを使用しているため、ハイブリッドノードには mi- というプレフィックスが付いています。
NAME STATUS ROLES AGE VERSION
ip-10-42-118-191.us-west-2.compute.internal Ready <none> 1h v1.31.3-eks-59bf375
ip-10-42-154-9.us-west-2.compute.internal Ready <none> 1h v1.31.3-eks-59bf375
ip-10-42-163-120.us-west-2.compute.internal Ready <none> 1h v1.31.3-eks-59bf375
mi-015a9aae5526e2192 NotReady <none> 5m v1.31.4-eks-aeac579
素晴らしい!ノードは表示されていますが、NotReady のステータスになっています。これは、ワークロードを提供するためにハイブリッドノードが準備完了になるには CNI をインストールする必要があるからです。まず、Cilium Helm リポジトリを追加しましょう。
次に、Cilium helm チャートに入力として提供する設定値を見てみましょう:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: eks.amazonaws.com/compute-type
operator: In
values:
- hybrid
ipam:
mode: cluster-pool
operator:
clusterPoolIPv4MaskSize: 25
clusterPoolIPv4PodCIDRList:
- 10.53.0.0/16
operator:
replicas: 1 # We only have 1 node in this lab, 2 is the default
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: eks.amazonaws.com/compute-type
operator: In
values:
- hybrid
unmanagedPodWatcher:
restart: false
envoy:
enabled: false
この affinity.nodeAffinity 設定は、eks.amazonaws.com/compute-type によってノードをターゲットにし、各ノード上でネットワーキングを処理するメイン CNI デーモンセットポッドが hybrid ノードでのみ実行されるようにします
ipam.mode を cluster-pool に設定して、ポッド IP 割り当てにクラスター全体の IP プールを使用します
clusterPoolIPv4MaskSize: 25 を設定して、ノードごとに割り当てられる /25 サブネット(128 IP アドレス)を指定します
clusterPoolIPv4PodCIDRList を 10.53.0.0/16 に設定して、ハイブリッドノードポッド用の専用 CIDR を指定します
replicas: 1 を設定して、オペレーターのインスタンスが 1 つ実行されるように指定します
この affinity.nodeAffinity 設定は、eks.amazonaws.com/compute-type によってノードをターゲットにし、各ノード上で CNI 設定を管理するメイン CNI オペレーターポッドが hybrid ノードでのみ実行されるようにします
unmanagedPodWatcher.restart: false を設定して、ポッド再起動の監視を無効にします
envoy.enabled: false を設定して、Envoy プロキシ統合を無効にします
この構成を使用して Cilium をインストールしましょう。
Cilium をインストールした後、ハイブリッドノードは正常な状態で準備完了になるはずです。
NAME STATUS ROLES AGE VERSION
ip-10-42-118-191.us-west-2.compute.internal Ready <none> 1h v1.31.3-eks-59bf375
ip-10-42-154-9.us-west-2.compute.internal Ready <none> 1h v1.31.3-eks-59bf375
ip-10-42-163-120.us-west-2.compute.internal Ready <none> 1h v1.31.3-eks-59bf375
mi-015a9aae5526e2192 Ready <none> 5m v1.31.4-eks-aeac579
以上です!これでクラスター内でハイブリッドノードが稼働しています。