尝试入门使用Kubernetes/EKS

EKS是什么?

容器编排器是什么?以及有关Kubernetes的简单配置和运作的描述。
这是JAWS-UG初心者支部#53新年LT特别会议的演讲材料。

 

如何快速简单地试用EKS

1. Cloud9的准备

创建Cloud9环境

image.png

使AMTC失效

image.png

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
image.png

参考 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角色。

image.png

由于是为测试目的,我们将添加AdministratorAccess权限并继续进行。

image.png
image.png

将IAM角色分配

image.png
image.png

创建集群

从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”。

image.png

您可以在EKS控制台上确认已创建的集群,并通过EC2控制台确认已创建用于数据平面的EC2。

3. 创建资源

撰写宣言书

image.png
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页面是否显示。

image.png

删除群集。

为了不忘记,执行删除集群的操作。在Cloud9控制台上执行以下命令。

eksctl delete cluster \
    --region ap-northeast-1 \
	--name  eks-clu

如果提示返回了,为了确认起见,我会检查以下内容。

image.png

删除创建的Cloud9环境和IAM角色。

image.png
广告
将在 10 秒后关闭
bannerAds