如何管理EKS RDS ACK子网组?

如何管理EKS RDS ACK子网组?

我有一个脚本,用于设置带有其他有用服务的 EKS 集群。其中之一是安装 RDS 控制器套件 (ACK) 来启动 Aurora 数据库。但是,有时当我运行此脚本时,dbcluster 自定义资源会遇到一个问题,即只有一个子网位于它被告知要使用的子网组中。

我正在按照 AWS 网站上的说明安装 RDS ECK helm 图表。

echo "Setting up RDS controller"                                                                                                                                                                  
EKS_VPC_ID=$(aws eks describe-cluster --name "${CLUSTER_NAME}" --query "cluster.resourcesVpcConfig.vpcId" --output text)                                                                          
RDS_SUBNET_GROUP_NAME="sng-${CLUSTER_NAME}"                                                                                                                                                       
RDS_SUBNET_GROUP_DESCRIPTION="RDS subnet group for EKS ${CLUSTER_NAME}"                                                                                                                           
EKS_SUBNET_IDS=$(aws ec2 describe-subnets --filter "Name=vpc-id,Values=${EKS_VPC_ID}" --query 'Subnets[?MapPublicIpOnLaunch==`false`].SubnetId' --output text)                                    
RDS_NAMESPACE="${ACK_K8S_NAMESPACE}"                                                                                                                                                              
RDS_SNG_FILE="/tmp/$(date +%Y%m%d%H%M%S)-${RDS_NAMESPACE}-$$.yaml"                                                                                                                                
cat > "$RDS_SNG_FILE" << EOF                                                                                                                                                                      
apiVersion: rds.services.k8s.aws/v1alpha1                                                                                                                                                         
kind: DBSubnetGroup                                                                                                                                                                               
metadata:                                                                                                                                                                                         
 name: ${RDS_SUBNET_GROUP_NAME}                                                                                                                                                                   
 namespace: ${RDS_NAMESPACE}                                                                                                                                                                      
spec:                                                                                                                                                                                             
 name: ${RDS_SUBNET_GROUP_NAME}                                                                                                                                                                   
 description: ${RDS_SUBNET_GROUP_DESCRIPTION}                                                                                                                                                     
 subnetIDs:                                                                                                                                                                                       
$(printf " - %s\n" ${EKS_SUBNET_IDS})                                                                                                                                                             
 tags: []                                                                                                                                                                                         
EOF                                                                                                                                                                                               

(此代码基本上是从https://aws-controllers-k8s.github.io/community/docs/tutorials/rds-example/#install-the-ack-service-controller-for-rds

有时,EKS_SUBNET_IDS 仅显示一个子网。但是,再次运行aws ec2 describe-subnets --filter "Name=vpc-id,Values=${EKS_VPC_ID}" --query 'Subnets[?MapPublicIpOnLaunch==false].SubnetId' --output text通常会显示两个子网。

这可能是什么原因造成的?我很确定这两个子网已经在 VPC 中,因为集群已经使用两个 AZ 子网创建...

在调试这个问题时,查看dbsubnetgroupkubernetes 中的 CRD,我遇到了一个有趣的资源:

arn: arn:aws:rds:us-west-2:654654xxxxxx:subgrp:sng-jwatte-cluster

当我在 AWS CLI 中列出此内容时,我还看到两个子网:

        {
            "DBSubnetGroupName": "sng-jwatte-cluster",
            "DBSubnetGroupDescription": "RDS subnet group for EKS jwatte-cluster",
            "VpcId": "vpc-09c2f1542e2xxxxxx",
            "SubnetGroupStatus": "Complete",
            "Subnets": [
                {
                    "SubnetIdentifier": "subnet-00591d77694xxxxxx",
                    "SubnetAvailabilityZone": {
                        "Name": "us-west-2c"
                    },
                    "SubnetOutpost": {},
                    "SubnetStatus": "Active"
                },
                {
                    "SubnetIdentifier": "subnet-0b7fdeaece9xxxxxx",
                    "SubnetAvailabilityZone": {
                        "Name": "us-west-2d"
                    },
                    "SubnetOutpost": {},
                    "SubnetStatus": "Active"
                }
            ],
            "DBSubnetGroupArn": "arn:aws:rds:us-west-2:654654xxxxxx:subgrp:sng-jwatte-cluster",
            "SupportedNetworkTypes": []
        }

相关内容