尝试入门使用Kubernetes/EKS
EKS是什么?
容器编排器是什么?以及有关Kubernetes的简单配置和运作的描述。
这是JAWS-UG初心者支部#53新年LT特别会议的演讲材料。
如何快速简单地试用EKS
1. Cloud9的准备
创建Cloud9环境
使AMTC失效
kubectl的安装
在Cloud9控制台中,输入以下指令。
curl -o kubectl https://s3.us-west-2.amazonaws.com/amazon-eks/1.23.7/2022-06-29/bin/linux/amd64/kubectl
chmod +x ./kubectl
mkdir -p $HOME/bin && cp ./kubectl $HOME/bin/kubectl && export PATH=$PATH:$HOME/bin
echo 'export PATH=$PATH:$HOME/bin' >> ~/.bashrc
kubectl version --short --client
参考 AWS 官方操作步骤。
安装eksctl
请在Cloud9控制台中输入以下命令。
curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp
sudo mv /tmp/eksctl /usr/local/bin
eksctl version
请参考AWS官方操作手册。
创建IAM角色
在一般情况下,选择EC2并创建IAM角色。
由于是为测试目的,我们将添加AdministratorAccess权限并继续进行。
将IAM角色分配
创建集群
从Cloud9控制台输入以下命令。
eksctl create cluster \
--region ap-northeast-1 \
--name eks-clu \
--version 1.23 \
--nodegroup-name eks-ng \
--node-type t3.micro \
--nodes 2 \
--nodes-min 2
当收到提示后,说明创建已完成。(大约需要20分钟。)
我们要在CloudFormation中确认堆栈状态是否为”CREATE_COMPLETE”。
您可以在EKS控制台上确认已创建的集群,并通过EC2控制台确认已创建用于数据平面的EC2。
3. 创建资源
撰写宣言书
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx-app
replicas: 2
template:
metadata:
labels:
app: nginx-app
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
type: LoadBalancer
selector:
app: nginx-app
ports:
- protocol: TCP
port: 80
targetPort: 80
应用宣言书。
使用kubectl apply命令将清单文件应用后,使用kubectl get pod命令确认已创建Pod。
kubectl apply -f nginx-deployment.yml
kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-deployment-6c588ccdf7-bghpc 1/1 Running 0 18s
nginx-deployment-6c588ccdf7-nq244 1/1 Running 0 18s
使用kubectl apply命令应用清单文件后,使用kubectl get service命令确认已创建了LoadBalancer。
kubectl apply -f nginx-service.yml
kubectl get service
kubectl get service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 15m
nginx-service LoadBalancer 10.100.34.217 xxxxxxxxx.ap-northeast-1.elb.amazonaws.com 80:30276/TCP 8s
访问上述LoadBalancer的DNS名称xxxxxxxxx.ap-northeast-1.elb.amazonaws.com,并确认nginx的TOP页面是否显示。
删除群集。
为了不忘记,执行删除集群的操作。在Cloud9控制台上执行以下命令。
eksctl delete cluster \
--region ap-northeast-1 \
--name eks-clu
如果提示返回了,为了确认起见,我会检查以下内容。
删除创建的Cloud9环境和IAM角色。