📝

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