亚马逊EKS集群创建与Kubernetes对象管理指南
立即解锁
发布时间: 2025-08-17 02:16:22 阅读量: 10 订阅数: 15 


AWS DevOps实战指南:部署与扩展服务
### 亚马逊EKS集群创建与Kubernetes对象管理全解析
#### 1. 无需YAML文件创建EKS集群
可以使用eksctl的不同参数来创建EKS集群,示例命令如下:
```bash
eksctl create cluster \
--name=aws-eks \
--region=eu-west-1 \
--nodes=2 \
--tags environment=develop \
--node-type=t2.small \
--ssh-access \
--ssh-public-key=public-key-value \
--node-private-networking \
--vpc-private-subnets=your-private-subnet-az1, your-private-subnet-az2 \
--vpc-public-subnets= your-public-subnet-az1, your-public-subnet-az2
```
#### 2. 使用Terraform创建EKS实例
可以使用Terraform创建EKS实例,不过这里暂不深入介绍创建EKS的具体过程。
#### 3. 使用CloudFormation创建EKS实例
AWS的所有服务(包括Amazon EKS)都需安装在虚拟专用云(VPC)内,有两种方案可供选择:
- 在现有的虚拟专用网络上设置EKS集群。
- 创建一个新的VPC来托管EKS集群。
AWS提供了完整的CloudFormation模板来设置EKS,具体步骤如下:
1. 输入以下URL:`https://s3.amazonaws.com/aws-quickstart/quickstart-amazon-eks/templates/amazon-eks-entrypoint-new-vpc.template.yaml`。
2. CloudFormation在部署Amazon EKS集群前,需要提供一些变量和参数,可在相应界面输入以下变量:
- 堆栈名称:为CloudFormation堆栈选择一个有意义的名称,以便识别其生成的资源。
- 可用区:至少从AWS区域中选择两个可用区。
- CIDR:定义EKS的IP地址,并使用正确的安全组允许远程连接。
- 可用区数量:最佳实践是至少选择两个可用区。
- 堡垒主机:允许访问EKS,默认情况下,AWS仅允许EKS创建者访问,除非获得授权。
新集群在一段时间后将完全运行。要与Amazon EKS集群通信,需在本地工作站创建一个新的Kubeconfig文件,具体操作如下:
1. 安装AWS CLI,以Ubuntu系统为例:
```bash
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
```
2. 记录访问密钥和秘密密钥,使用以下命令进行AWS CLI设置:
```bash
$ aws configure –profile book-aws
AWS Access Key ID [None]: [Access Key ID]
AWS Secret Access Key [None]: [Secret access key]
Default region name [None]: [Your current AWS region]
Default output format [None]: json
```
3. 使用AWS CLI生成kubeconfig文件:
```bash
aws eks update-kubeconfig --name [depend-on-name-you-set-in-cloud-formation]
```
需要注意,EKS集群创建后无法停止计费,只能删除或使用。如果使用基础设施即代码(IaC)创建集群,删除操作很简单:
- 使用CloudFormation:在CloudFormation Web控制台中选择堆栈,点击“删除堆栈”按钮,所有新生成的资源将被删除。
- 使用Terraform:销毁Terraform实例,集群即被删除。
为降低云服务成本,不使用集群时(如夜间)应及时删除。
#### 4. 深入了解Kubernetes
Kubernetes可控制一组计算节点,并根据容器的资源需求和集群的计算能力进行分配。一个或多个容器可组合成逻辑单元(即Pod),并作为单个单元运行和扩展。
##### 4.1 Pods
Pod内的容器可通过本地主机相互通信,每个Pod在启动时会分配一个私有IP地址。Kubernetes网络模型允许Pod之间直接连接,无需NAT设备。
使用`kubectl run`命令可在Kubernetes集群上创建Pod:
```bash
kubectl run my-nginx --image=nginx
```
也可使用YAML文件以声明式语法创建Pod:
```yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx
labels:
env: test
spec:
containers:
- name:
```
0
0
复制全文
相关推荐










