EKS Clusterの確認

ここでは、kubectl コマンドを使用して、作成したクラスターの状態を確認します

クラスターの確認

現在存在するクラスターが表示されます

eksctl get cluster
NAME                    REGION
eksworkshop-eksctl      us-west-2

クラスターの基本情報の確認

kubectl cluster-info

Kubernetes Master のエンドポイントなどの情報が表示されます。kubectl コマンドはこのエンドポイントと通信をしています。

Kubernetes master is running at https://4EFFE6423F9FC5A5164B2371xxxxxx.gr7.us-west-2.eks.amazonaws.com
CoreDNS is running at https://4EFFE6423F9FC5A5164Bxxxxxxxx.gr7.us-west-2.eks.amazonaws.com/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

ノードの確認

クラスターに所属するノードを確認します。

kubectl get nodes

3 つの Worker ノード(EC2 インスタンス)が稼働しています。なお、コントロールプレーン(Master ノード)は見えません。

NAME                             STATUS   ROLES    AGE   VERSION
ip-192-168-15-124.ec2.internal   Ready    <none>   15m   v1.17.7-eks-bffbac
ip-192-168-26-85.ec2.internal    Ready    <none>   15m   v1.17.7-eks-bffbac
ip-192-168-48-84.ec2.internal    Ready    <none>   15m   v1.17.7-eks-bffbac

ノード(Node リソース)の詳細情報

kubectl describe コマンドを使うと、リソースの詳細な情報が確認できます。ノード(Node リソース)の詳細情報を確認します 上記 3 つのノードのうちの 1 つの名前(例えば ip-192-168-15-124.ec2.internal)をクリップボードにコピーし、以下のコマンドを実行します。

kubectl describe node <ノード名>

ノードのキャパシティや稼働しているPodなど、各種の情報が出力されます

Name:               ip-192-168-15-124.ec2.internal
Roles:              <none>
Labels:             alpha.eksctl.io/cluster-name=ekshandson
                    alpha.eksctl.io/nodegroup-name=ng-3902f9fb
                    beta.kubernetes.io/arch=amd64
                    beta.kubernetes.io/instance-type=m5.large
                    beta.kubernetes.io/os=linux
                    eks.amazonaws.com/nodegroup=ng-3902f9fb
                    eks.amazonaws.com/nodegroup-image=ami-0bc87a8f0db332ec8
                    failure-domain.beta.kubernetes.io/region=us-east-1
                    failure-domain.beta.kubernetes.io/zone=us-east-1a
                    kubernetes.io/arch=amd64
                    kubernetes.io/hostname=ip-192-168-15-124.ec2.internal
                    kubernetes.io/os=linux
                    node.kubernetes.io/instance-type=m5.large
                    topology.kubernetes.io/region=us-east-1
                    topology.kubernetes.io/zone=us-east-1a
Annotations:        node.alpha.kubernetes.io/ttl: 0
                    volumes.kubernetes.io/controller-managed-attach-detach: true
CreationTimestamp:  Mon, 20 Jul 2020 03:58:06 +0000
Taints:             <none>
Unschedulable:      false
Lease:
  HolderIdentity:  ip-192-168-15-124.ec2.internal
  AcquireTime:     <unset>
  RenewTime:       Mon, 20 Jul 2020 04:24:27 +0000
Conditions:
  Type             Status  LastHeartbeatTime                 LastTransitionTime                Reason                       Message
  ----             ------  -----------------                 ------------------                ------                       -------
  MemoryPressure   False   Mon, 20 Jul 2020 04:24:12 +0000   Mon, 20 Jul 2020 03:58:04 +0000   KubeletHasSufficientMemory   kubelet has sufficient memory available
  DiskPressure     False   Mon, 20 Jul 2020 04:24:12 +0000   Mon, 20 Jul 2020 03:58:04 +0000   KubeletHasNoDiskPressure     kubelet has no disk pressure
  PIDPressure      False   Mon, 20 Jul 2020 04:24:12 +0000   Mon, 20 Jul 2020 03:58:04 +0000   KubeletHasSufficientPID      kubelet has sufficient PID available
  Ready            True    Mon, 20 Jul 2020 04:24:12 +0000   Mon, 20 Jul 2020 03:58:56 +0000   KubeletReady                 kubelet is posting ready status
Addresses:
  InternalIP:   192.168.15.124
  ExternalIP:   3.86.52.83
  Hostname:     ip-192-168-15-124.ec2.internal
  InternalDNS:  ip-192-168-15-124.ec2.internal
  ExternalDNS:  ec2-3-86-52-83.compute-1.amazonaws.com
Capacity:
  attachable-volumes-aws-ebs:  25
  cpu:                         2
  ephemeral-storage:           83873772Ki
  hugepages-1Gi:               0
  hugepages-2Mi:               0
  memory:                      7951036Ki
  pods:                        29
Allocatable:
  attachable-volumes-aws-ebs:  25
  cpu:                         1930m
  ephemeral-storage:           76224326324
  hugepages-1Gi:               0
  hugepages-2Mi:               0
  memory:                      7260860Ki
  pods:                        29
System Info:
  Machine ID:                 ec265b266ab2f3f50c9945775127d67e
  System UUID:                EC265B26-6AB2-F3F5-0C99-45775127D67E
  Boot ID:                    64449de7-4de8-493f-b0c5-484c358bc8d0
  Kernel Version:             4.14.181-142.260.amzn2.x86_64
  OS Image:                   Amazon Linux 2
  Operating System:           linux
  Architecture:               amd64
  Container Runtime Version:  docker://19.3.6
  Kubelet Version:            v1.17.7-eks-bffbac
  Kube-Proxy Version:         v1.17.7-eks-bffbac
ProviderID:                   aws:///us-east-1a/i-0fc1d3abc8e3399e4
Non-terminated Pods:          (3 in total)
  Namespace                   Name                        CPU Requests  CPU Limits  Memory Requests  Memory Limits  AGE
  ---------                   ----                        ------------  ----------  ---------------  -------------  ---
  kube-system                 aws-node-g5rkx              10m (0%)      0 (0%)      0 (0%)           0 (0%)         26m
  kube-system                 coredns-55c5fcd78f-6x7fg    100m (5%)     0 (0%)      70Mi (0%)        170Mi (2%)     31m
  kube-system                 kube-proxy-27jpl            100m (5%)     0 (0%)      0 (0%)           0 (0%)         26m
Allocated resources:
  (Total limits may be over 100 percent, i.e., overcommitted.)
  Resource                    Requests    Limits
  --------                    --------    ------
  cpu                         210m (10%)  0 (0%)
  memory                      70Mi (0%)   170Mi (2%)
  ephemeral-storage           0 (0%)      0 (0%)
  attachable-volumes-aws-ebs  0           0
Events:
  Type    Reason                   Age                From                                        Message
  ----    ------                   ----               ----                                        -------
  Normal  Starting                 26m                kubelet, ip-192-168-15-124.ec2.internal     Starting kubelet.
  Normal  NodeHasSufficientMemory  26m (x2 over 26m)  kubelet, ip-192-168-15-124.ec2.internal     Node ip-192-168-15-124.ec2.internal status is now: NodeHasSufficientMemory
  Normal  NodeHasNoDiskPressure    26m (x2 over 26m)  kubelet, ip-192-168-15-124.ec2.internal     Node ip-192-168-15-124.ec2.internal status is now: NodeHasNoDiskPressure
  Normal  NodeHasSufficientPID     26m (x2 over 26m)  kubelet, ip-192-168-15-124.ec2.internal     Node ip-192-168-15-124.ec2.internal status is now: NodeHasSufficientPID
  Normal  NodeAllocatableEnforced  26m                kubelet, ip-192-168-15-124.ec2.internal     Updated Node Allocatable limit across pods
  Normal  Starting                 26m                kube-proxy, ip-192-168-15-124.ec2.internal  Starting kube-proxy.
  Normal  NodeReady                25m                kubelet, ip-192-168-15-124.ec2.internal     Node ip-192-168-15-124.ec2.internal status is now: NodeReady

起動している Pod を確認します

以下のコマンドで、起動している Pod を確認します

kubectl get pods -n kube-system

aws-node-xxx は、Amazon VPC CNI plugin です

NAME                       READY   STATUS    RESTARTS   AGE
aws-node-6h82b             1/1     Running   0          7m25s
aws-node-c59h8             1/1     Running   0          7m29s
aws-node-tb6xf             1/1     Running   0          7m23s
coredns-5946c5d67c-bpc4c   1/1     Running   0          13m
coredns-5946c5d67c-skdpd   1/1     Running   0          13m
kube-proxy-bvqbk           1/1     Running   0          7m29s
kube-proxy-l4dtb           1/1     Running   0          7m23s
kube-proxy-wlj4s           1/1     Running   0          7m25s

Worker Node 用の IAM Role を環境変数に設定します

後のハンズオンで資料するため、Worker Node 用の IAM Role を環境変数に設定します

STACK_NAME=$(eksctl get nodegroup --cluster eksworkshop-eksctl -o json | jq -r '.[].StackName')
ROLE_NAME=$(aws cloudformation describe-stack-resources --stack-name $STACK_NAME | jq -r '.StackResources[] | select(.ResourceType=="AWS::IAM::Role") | .PhysicalResourceId')
echo "export ROLE_NAME=${ROLE_NAME}" | tee -a ~/.bash_profile
. ~/.bash_profile

環境変数が登録されていることを確認します

以下のコマンドを実行し、環境変数が問題なく登録されていることを確認します

test -n "$ROLE_NAME" && echo ROLE_NAME is "$ROLE_NAME" || echo ROLE_NAME is not set

以下のようなアウトプットが表示されることを確認します(xxxxxの部分は環境ごとに異なります)

ROLE_NAME is eksctl-eksworkshop-eksctl-nodegro-NodeInstanceRole-xxxxxxxxx

以上で、EKS Clusterの作成は終わりです。各ハンズオンに進みましょう