⌨️

よく使う EKS管理コマンド (kubectl, eksctl, awscli)

2022/06/12に公開約2,900字

Context

kubeconfig ファイル作成・更新

aws eks update-kubeconfig --name {cluster-name} --alias {context-name} --region ap-northeast-1 

Context 一覧

kubectl config get-contexts

Context 変更

kubectl config use-context {context-name}

Pod

Pod 一覧

kubectl get po 

# ネームスペース指定
kubectl get po -n {namespace}

# すべてのネームスペースのPodを取得
kubectl get po --all-namespaces

# ラベル指定
kubectl get po -l '{label-name}={label-value}'

# ラベル一覧取得
kubectl get po --show-labels

# 詳細表示
kubectl get po -o wide

Pod Log tail

kubectl logs -f {pod-name}

Pod 再起動

kubectl rollout restart deployment {deployment-name}

Pod 即時削除

kubectl delete po --grace-period=0 {pod-name}

環境変数一覧

kubectl exec -it {pod-name} -- env

編集

Deployment 編集

kubectl edit deployment {deployment-name}

ConfigMap 編集

kubectl edit configmap {configmap-name}

HorizontalPodAutoscaler 編集

kubectl edit hpa {hpa-name}

負荷確認

PodのCPU使用率、メモリ使用量

kubectl top po 

# ラベル指定
kubectl top po -l '{label-name}={label-value}'

NodeのCPU使用率、メモリ使用量

kubectl top node 

Job

Job 手動実行

kubectl create job {job-name} --from=cronjob/{cron-name}

Node / NodeGroup

Node 詳細

kubectl describe nodes

Node 一覧

kubectl get nodes --sort-by=.metadata.creationTimestamp -o wide

NodeGroup 一覧

eksctl get nodegroups --cluster {cluster-name}

EKSクラスタ管理

Version 確認

$ kubectl version --short

クラスタ アップデート

eksctl upgrade cluster --name {cluster-name}

NodeGroup 作成

eksctl create nodegroup -f={eksctl filename}.yaml --include='{nodegroup-name}'

NodeGroup 削除

eksctl delete nodegroup -f={eksctl filename}.yaml --include='{nodegroup-name}'

Drain

kubectl drain --delete-local-data --ignore-daemonsets {node-name}

# ノードグループ指定
kubectl drain --delete-local-data --ignore-daemonsets -l alpha.eksctl.io/nodegroup-name={nodegroup-name}

Cordon

kubectl cordon {node-name}

# ノードグループ指定
kubectl cordon -l alpha.eksctl.io/nodegroup-name={nodegroup-name}

aws-node

aws-node 一覧

kubectl get pods -n kube-system -l k8s-app=aws-node

aws-node 設定確認

kubectl get daemonset aws-node -n kube-system -o jsonpath='{.spec.template.spec.containers[*].env}' | jq .

aws-node 設定更新

kubectl -n kube-system set env daemonset aws-node WARM_ENI_TARGET-
kubectl -n kube-system set env daemonset aws-node MINIMUM_IP_TARGET=10
kubectl -n kube-system set env daemonset aws-node WARM_IP_TARGET=1

サブネット空きIPアドレス

aws ec2 describe-subnets | jq -r '.Subnets[] | select((.Tags[] | select(.Key == "Name")).Value | startswith("{subnet-name}")) | (.Tags[] | select(.Key == "Name")).Value + " " + (.AvailableIpAddressCount|tostring)'

Cluster Autoscaler

Cluster AutoScaler 一覧

 kubectl get pods -n kube-system -l app=cluster-autoscaler

Discussion

ログインするとコメントできます