メインコンテンツまでスキップ

「eks」タグの記事が2件件あります

全てのタグを見る

· 約3分
moritalous
お知らせ

過去にQiitaに投稿した内容のアーカイブです。

テスト環境

項目内容
ホスト環境Windows 11
仮想化環境Multipass

仮想環境の作成

項目
CPU2コア
メモリ8GB
ストレージ20GB
コマンドプロンプト
multipass launch -n eks-anywhere2 -c 2 -m 8G -d 20G
multipass shell eks-anywhere

環境構築

Dockerのインストール

ubuntu
curl -fsSL https://get.docker.com -o get-docker.sh && \
sh ./get-docker.sh && \
sudo usermod -aG docker $USER

一度ログアウトして再ログイン

ubuntu
exit
コマンドプロンプト
multipass shell eks-anywhere

kubectlのインストール

ubuntu
curl -LO "https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl" && \
chmod +x ./kubectl && \
sudo mv ./kubectl /usr/local/bin/kubectl

EKS Anywhere CLIツールのインストール

ubuntu
curl "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" \
--silent --location \
| tar xz -C /tmp && \
sudo mv /tmp/eksctl /usr/local/bin/
ubuntu
export EKSA_RELEASE="0.6.0" OS="$(uname -s | tr A-Z a-z)" RELEASE_NUMBER=2 && \
curl "https://anywhere-assets.eks.amazonaws.com/releases/eks-a/${RELEASE_NUMBER}/artifacts/eks-a/v${EKSA_RELEASE}/${OS}/eksctl-anywhere-v${EKSA_RELEASE}-${OS}-amd64.tar.gz" \
--silent --location \
| tar xz ./eksctl-anywhere && \
sudo mv ./eksctl-anywhere /usr/local/bin/

インストール確認

ubuntu
eksctl anywhere version

EKSクラスターの作成

configファイルの生成

ubuntu
CLUSTER_NAME=dev-cluster
eksctl anywhere generate clusterconfig $CLUSTER_NAME \
--provider docker > $CLUSTER_NAME.yaml

クラスターの作成

ubuntu
eksctl anywhere create cluster -f $CLUSTER_NAME.yaml

できた。超簡単。

ubuntu
export KUBECONFIG=${PWD}/${CLUSTER_NAME}/${CLUSTER_NAME}-eks-a-cluster.kubeconfig
kubectl get ns
ubuntu@eks-anywhere:~$ kubectl get ns
NAME STATUS AGE
capd-system Active 110s
capi-kubeadm-bootstrap-system Active 2m8s
capi-kubeadm-control-plane-system Active 114s
capi-system Active 2m16s
capi-webhook-system Active 2m19s
cert-manager Active 3m40s
default Active 4m33s
eksa-system Active 61s
etcdadm-bootstrap-provider-system Active 2m4s
etcdadm-controller-system Active 2m1s
kube-node-lease Active 4m35s
kube-public Active 4m35s
kube-system Active 4m35s
ubuntu@eks-anywhere:~$

テストアプリケーションのデプロイ

ubuntu
kubectl apply -f "https://anywhere.eks.amazonaws.com/manifests/hello-eks-a.yaml"
ubuntu@eks-anywhere:~$ kubectl get pods -l app=hello-eks-a
NAME READY STATUS RESTARTS AGE
hello-eks-a-9644dd8dc-f2czp 1/1 Running 0 27s
ubuntu@eks-anywhere:~$

ポートフォワーディング

ubuntu
kubectl port-forward deploy/hello-eks-a 8000:80

この状態でもう一つターミナルを立ち上げて(コマンドプロンプトをもう一つ立ち上げてmultipass shell eks-anywhere)、アクセス

ubuntu@eks-anywhere:~$ curl localhost:8000
Handling connection for 8000
⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢

Thank you for using

███████╗██╗ ██╗███████╗
██╔════╝██║ ██╔╝██╔════╝
█████╗ █████╔╝ ███████╗
██╔══╝ ██╔═██╗ ╚════██║
███████╗██║ ██╗███████║
╚══════╝╚═╝ ╚═╝╚══════╝

█████╗ ███╗ ██╗██╗ ██╗██╗ ██╗██╗ ██╗███████╗██████╗ ███████╗
██╔══██╗████╗ ██║╚██╗ ██╔╝██║ ██║██║ ██║██╔════╝██╔══██╗██╔════╝
███████║██╔██╗ ██║ ╚████╔╝ ██║ █╗ ██║███████║█████╗ ██████╔╝█████╗
██╔══██║██║╚██╗██║ ╚██╔╝ ██║███╗██║██╔══██║██╔══╝ ██╔══██╗██╔══╝
██║ ██║██║ ╚████║ ██║ ╚███╔███╔╝██║ ██║███████╗██║ ██║███████╗
╚═╝ ╚═╝╚═╝ ╚═══╝ ╚═╝ ╚══╝╚══╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝╚══════╝

You have successfully deployed the hello-eks-a pod hello-eks-a-9644dd8dc-f2czp

For more information check out
https://anywhere.eks.amazonaws.com

⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢
ubuntu@eks-anywhere:~$

かっちょいい。

· 約5分
moritalous
お知らせ

過去にQiitaに投稿した内容のアーカイブです。

Re:Invent 2020でAmazon EKS Distro (EKS-D)が発表されましたね。

公式ブログはこちら なぜか日本語の方にはEKS-Dの表記がないですね

Amazon EKS Distro: Amazon EKS で使用される Kubernetes ディストリビューション https://aws.amazon.com/jp/blogs/news/amazon-eks-distro-the-kubernetes-distribution-used-by-amazon-eks/

Introducing Amazon EKS Distro (EKS-D) https://aws.amazon.com/jp/blogs/opensource/introducing-amazon-eks-distro/

早速手持ちのRaspberry Pi 4でやってみました。

先にまとめ

環境

Raspberry Pi 4 (メモリ8GB) microSDカード 32GB ※EKS-Dのビルドを行う際に10GBほど必要です

OSはUbuntu 20.04(64bit)です。

前準備

sudo apt update && sudo apt upgrade -y
  • snapcraftのインストール
sudo snap install snapcraft --classic
  • /boot/firmware/cmdline.txtcgroup_enable=memory cgroup_memory=1を追加(1行目の末尾)
- net.ifnames=0 dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=LABEL=writable rootfstype=ext4 elevator=deadline rootwait fixrtc
+ net.ifnames=0 dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=LABEL=writable rootfstype=ext4 elevator=deadline rootwait fixrtc cgroup_enable=memory cgroup_memory=1
  • LXDの初期化

ビルド時にLXDを使ってみました。初期化します。ディスクスペースが5GBでは不足するので10GBにしました。それ以外はデフォルト設定です。

sudo lxd init
Would you like to use LXD clustering? (yes/no) [default=no]: 
Do you want to configure a new storage pool? (yes/no) [default=yes]:
Name of the new storage pool [default=default]:
Name of the storage backend to use (btrfs, dir, lvm, zfs, ceph) [default=zfs]:
Create a new ZFS pool? (yes/no) [default=yes]:
Would you like to use an existing empty block device (e.g. a disk or partition)? (yes/no) [default=no]:
Size in GB of the new loop device (1GB minimum) [default=5GB]: 10GB ←ここだけ!
Would you like to connect to a MAAS server? (yes/no) [default=no]:
Would you like to create a new local network bridge? (yes/no) [default=yes]:
What should the new bridge be called? [default=lxdbr0]:
What IPv4 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]:
What IPv6 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]:
Would you like LXD to be available over the network? (yes/no) [default=no]:
Would you like stale cached images to be updated automatically? (yes/no) [default=yes]
Would you like a YAML "lxd init" preseed to be printed? (yes/no) [default=no]:

EKS-Dのsnapパッケージのビルド

cd /tmp/
git clone https://github.com/canonical/eks-snap.git
cd eks-snap/
snapcraft --use-lxd

45分ほど待つと、eks_v1.18.9_arm64.snapが出来上がります 私のビルド成果物はこちらに格納しました。 https://github.com/moritalous/eks-snap/releases/tag/eks_v1.18.9_arm64

EKS-Dのインストール

sudo snap install eks_v1.18.9_arm64.snap --classic --dangerous

EKS-Dの起動

sudo eks.start

ステータス確認

ubuntu@ubuntu:~$ sudo eks status
eks is running
high-availability: no
datastore master nodes: 127.0.0.1:19001
datastore standby nodes: none
ubuntu@ubuntu:~$

ubuntuユーザーで動作するように設定

mkdir ~/.kube
cd ~/.kube
sudo eks.config > config
chmod 600 config
sudo usermod -a -G eks ubuntu
sudo chown -f -R ubuntu ~/.kube

一度ログアウトして再ログインすると、eks.kubectlコマンドが使えると思います。

色々確認

eksに含まれるコマンドの確認

ubuntu@ubuntu:~$ eks help
Available subcommands are:
add-node
config
ctr
dashboard-proxy
dbctl
join
kubectl
leave
refresh-certs
remove-node
reset
start
status
stop
inspect
ubuntu@ubuntu:~$

kube-systemで起動しているPodの確認

ubuntu@ubuntueks kubectl get pods -n kube-system 
NAME READY STATUS RESTARTS AGE
calico-node-7js69 1/1 Running 1 83m
metrics-server-f59887c58-5wxdp 1/1 Running 0 83m
calico-kube-controllers-555fc8cc5c-6v286 1/1 Running 0 83m
coredns-6788f546c9-vtbq5 1/1 Running 0 83m
hostpath-provisioner-c77bfc987-vnbzk 1/1 Running 0 83m
ubuntu@ubuntu:~$

Serviceの確認

ubuntu@ubuntu:~$ eks kubectl get svc --all-namespaces 
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
default kubernetes ClusterIP 10.152.183.1 <none> 443/TCP 87m
kube-system kube-dns ClusterIP 10.152.183.10 <none> 53/UDP,53/TCP,9153/TCP 87m
kube-system metrics-server ClusterIP 10.152.183.182 <none> 443/TCP 87m
ubuntu@ubuntu:~$

イマイチどのあたりがEKSなのか、わかりませんでした。。。