ここでは、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
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 を確認します
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 を環境変数に設定します
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の作成は終わりです。各ハンズオンに進みましょう