📝
EC2 インスタンスに Kubernetes 環境を構築してみた
nginx のデフォルトページを表示するまでの手順です。
前提
- プラットフォーム: Amazon Linux2
- EC2 インスタンスへの接続方法: EC2 Instance Connect
手順
$ sudo yum update -y
$ sudo amazon-linux-extras enable docker
$ sudo yum install -y docker
$ sudo systemctl start docker
$ sudo systemctl enable docker
$ sudo usermod -aG docker $USER
# swap 無効化
$ sudo swapoff -a
$ sudo sed -i '/ swap / s/^/#/' /etc/fstab
# ここでいったん EC2 インスタンスからログアウトし、再ログインする
# Kubernetes リポジトリ登録
$ cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes Repo
baseurl=https://pkgs.k8s.io/core:/stable:/v1.30/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.30/rpm/repodata/repomd.xml.key
EOF
# kubeadm, kubelet, kubectl インストール
$ sudo yum install -y kubelet kubeadm kubectl
$ sudo systemctl enable --now kubelet
# Kubernetes クラスター初期化(単一ノード)
$ sudo kubeadm init --pod-network-cidr=10.244.0.0/16
# kubectl 設定
$ mkdir -p $HOME/.kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config
# ネットワークプラグイン Flannel インストール
$ kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
# マスターノードの taint を削除(単一ノード構成用)
$ kubectl taint nodes --all node-role.kubernetes.io/control-plane-
# nginx Deployment 作成
$ kubectl create deployment nginx --image=nginx
# nginx サービス公開
$ kubectl expose deployment nginx --port=80 --type=NodePort
# サービス確認
$ kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 6m5s
nginx NodePort 10.96.75.133 <none> 80:30293/TCP 5m30s
最後に以下の形式でブラウザからアクセスして、nginx のデフォルトページが表示されれば OK です。
- http://<EC2のパブリックIP>:<NodePort>

まとめ
今回は EC2 インスタンスに Kubernetes 環境を構築してみました。
どなたかの参考になれば幸いです。
Discussion