AWS announces preview of AWS Interconnect - multicloud
AWS announces AWS Interconnect – multicloud (preview), providing simple, resilient, high-speed private connections to other cloud service providers. AWS Interconnect - multicloud is easy to configure and provides high-speed, resilient connectivity with dedicated bandwidth, enabling customers to interconnect AWS networking services such as AWS Transit Gateway, AWS Cloud WAN, and Amazon VPC to other cloud service providers with ease.
¿Cómo puedo automatizar la configuración del proxy HTTP para los nodos de containerd de Amazon EKS?
Quiero automatizar la configuración del proxy HTTP para los nodos de Amazon Elastic Kubernetes Service (Amazon EKS) con una versión ejecutable de containerd.
Descripción breve
Para los grupos de nodos administrados creados en las versiones 1.23 o anteriores de Amazon EKS, la versión ejecutable del contenedor predeterminada es Docker. Si este es su caso práctico, siga todos los pasos de la resolución para especificar una versión ejecutable de containerd. Para los grupos de nodos administrados creados en las versiones 1.24 o posteriores de Amazon EKS, la versión ejecutable del contenedor predeterminada es containerd.
Para usar containerd en su grupo de nodos administrados en lugar de dockerd, es necesario especificar una versión ejecutable de containerd en userdata.
Tras cambiar el grupo de nodos administrados a una versión ejecutable de containerd, cree una plantilla de lanzamiento personalizada con su ID de imagen de máquina de Amazon (AMI). A continuación, configure los ajustes del proxy HTTP y los valores del entorno del clúster.
Nota: Para nodos con entorno de ejecución de Docker, consulte ¿Cómo automatizo la configuración del proxy HTTP para los nodos trabajadores de Amazon EKS con Docker?
Resolución
Creación de una plantilla de lanzamiento personalizada
Para especificar containerd como versión ejecutable y crear una plantilla de inicio personalizada, siga estos pasos:
-
Especifique containerd como la versión ejecutable en su grupo de nodos administrados. En userdata, utilice la opción --container-runtime=containerd para bootstrap.sh.
-
Cree una plantilla de lanzamiento personalizada con el ID de la AMI. Si no lo hace, el grupo de nodos administrados combinará automáticamente userdata.
-
Establezca la configuración del proxy como containerd, sandbox-image y kubelet.
Nota: Sandbox-image es la unidad de servicio que extrae la imagen de entorno aislado de containerd. -
Describa userdata con los siguientes campos:
MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="==BOUNDARY==" --==BOUNDARY== Content-Type: text/cloud-boothook; charset="us-ascii" #Set the proxy hostname and port PROXY=XXXXXXX:3128 TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` MAC=$(curl -H "X-aws-ec2-metadata-token: $TOKEN" -v -s http://169.254.169.254/latest/meta-data/mac/) VPC_CIDR=$(curl -H "X-aws-ec2-metadata-token: $TOKEN" -v -s http://169.254.169.254/latest/meta-data/network/interfaces/macs/$MAC/vpc-ipv4-cidr-blocks | xargs | tr ' ' ',') #Create the containerd and sandbox-image systemd directory mkdir -p /etc/systemd/system/containerd.service.d mkdir -p /etc/systemd/system/sandbox-image.service.d #[Option] Configure yum to use the proxy cloud-init-per instance yum_proxy_config cat << EOF >> /etc/yum.conf proxy=http://$PROXY EOF #Set the proxy for future processes, and use as an include file cloud-init-per instance proxy_config cat << EOF >> /etc/environment http_proxy=http://$PROXY https_proxy=http://$PROXY HTTP_PROXY=http://$PROXY HTTPS_PROXY=http://$PROXY no_proxy=$VPC_CIDR,localhost,127.0.0.1,169.254.169.254,.internal,.eks.amazonaws.com NO_PROXY=$VPC_CIDR,localhost,127.0.0.1,169.254.169.254,.internal,.eks.amazonaws.com EOF #Configure Containerd with the proxy cloud-init-per instance containerd_proxy_config tee <<EOF /etc/systemd/system/containerd.service.d/http-proxy.conf >/dev/null [Service] EnvironmentFile=/etc/environment EOF #Configure sandbox-image with the proxy cloud-init-per instance sandbox-image_proxy_config tee <<EOF /etc/systemd/system/sandbox-image.service.d/http-proxy.conf >/dev/null [Service] EnvironmentFile=/etc/environment EOF #Configure the kubelet with the proxy cloud-init-per instance kubelet_proxy_config tee <<EOF /etc/systemd/system/kubelet.service.d/proxy.conf >/dev/null [Service] EnvironmentFile=/etc/environment EOF cloud-init-per instance reload_daemon systemctl daemon-reload --==BOUNDARY== Content-Type:text/x-shellscript; charset="us-ascii" #!/bin/bash set -o xtrace #Set the proxy variables before running the bootstrap.sh script set -a source /etc/environment #Run the bootstrap.sh script B64_CLUSTER_CA=YOUR_CLUSTER_CA API_SERVER_URL=API_SERVER_ENDPOINT /etc/eks/bootstrap.sh EKS_CLUSTER_NAME --b64-cluster-ca $B64_CLUSTER_CA --apiserver-endpoint $API_SERVER_URL --container-runtime containerd --==BOUNDARY==--Nota: Sustituya XXXXXXX:3128, YOUR_CLUSTER_CA, API_SERVER_ENDPOINT y EKS_CLUSTER_NAME por el proxy, autoridad de certificación (CA), punto de enlace del servidor y nombre del clúster. Tras crear los puntos de enlace de la nube privada virtual (VPC), agregue los puntos de enlace del servicio de AWS a NO_PROXY y no_proxy.
Configuración de los ajustes del proxy para aws-node y kube-proxy
Nota: Si dirige el tráfico del clúster a Internet a través de un proxy HTTP y su punto de enlace de EKS es público, debe completar estos pasos. Si tiene una configuración diferente, estos pasos son opcionales.
Cree un ConfigMap para configurar los valores del entorno. A continuación, aplique el ConfigMap en su clúster. Utilice el siguiente script como ejemplo para su ConfigMap:
apiVersion: v1 kind: ConfigMap metadata: name: proxy-environment-variables namespace: kube-system data: HTTP_PROXY: http://XXXXXXX:3128 HTTPS_PROXY: http://XXXXXXX:3128 NO_PROXY: KUBERNETES_SERVICE_CIDR_RANGE,localhost,127.0.0.1,VPC_CIDR_RANGE,169.254.169.254,.internal
Nota: Sustituya KUBERNETES_SERVICE_CIDR_RANGE y VPC_CIDR_RANGE por los valores de sus rangos CIDR. Después de crear los puntos de enlace de VPC, agregue puntos de enlace de AWS a NO_PROXY y no_proxy.
A continuación, establezca la configuración de su proxy HTTP como aws-node y kube-proxy:
$ kubectl patch -n kube-system -p '{ "spec": {"template":{ "spec": { "containers": [ { "name": "aws-node", "envFrom": [ { "configMapRef": {"name": "proxy-environment-variables"} } ] } ] } } } }' daemonset aws-node $ kubectl patch -n kube-system -p '{ "spec": {"template":{ "spec": { "containers": [ { "name": "kube-proxy", "envFrom": [ { "configMapRef": {"name": "proxy-environment-variables"} } ] } ] } } } }' daemonset kube-proxy
Creación de un grupo de nodos administrados
Cree un nuevo grupo de nodos administrados que utilice la plantilla de lanzamiento personalizada creada.
Prueba del proxy
Para comprobar el estado de los nodos, ejecute los siguientes comandos:
$ kubectl get nodes $ kubectl run test-pod --image=amazonlinux:2 --restart=Never -- sleep 300 $ kubectl get pods -A
Recibirá un resultado similar al del ejemplo siguiente:
$ kubectl get nodes -o wide NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME ip-192-168-100-114.ap-northeast-1.compute.internal Ready <none> 2m27s v1.23.13-eks-fb459a0 192.168.100.114 <none> Amazon Linux 2 5.4.219-126.411.amzn2.x86_64 containerd://1.6.6 $ kubectl run test-pod --image=amazonlinux:2 --restart=Never -- sleep 300 pod/test-pod created $ kubectl get pods -A NAMESPACE NAME READY STATUS RESTARTS AGE default test-pod 1/1 Running 0 14s kube-system aws-node-cpjcl 1/1 Running 0 3m34s kube-system coredns-69cfddc4b4-c7rpd 1/1 Running 0 26m kube-system coredns-69cfddc4b4-z5jxq 1/1 Running 0 26m kube-system kube-proxy-g2f4g 1/1 Running 0 3m34s
Consulte el registro de su proxy para obtener información adicional sobre la conectividad de sus nodos:
192.168.100.114 TCP_TUNNEL/200 6230 CONNECT registry-1.docker.io:443 - HIER_DIRECT/XX.XX.XX.XX - 192.168.100.114 TCP_TUNNEL/200 10359 CONNECT auth.docker.io:443 - HIER_DIRECT/XX.XX.XX.XX - 192.168.100.114 TCP_TUNNEL/200 6633 CONNECT registry-1.docker.io:443 - HIER_DIRECT/XX.XX.XX.XX - 192.168.100.114 TCP_TUNNEL/200 10353 CONNECT auth.docker.io:443 - HIER_DIRECT/XX.XX.XX.XX - 192.168.100.114 TCP_TUNNEL/200 8767 CONNECT registry-1.docker.io:443 - HIER_DIRECT/XX.XX.XX.XX -
Información relacionada
- Temas
- Containers
- Etiquetas
- Amazon Elastic Kubernetes Service
- Idioma
- Español

Contenido relevante
- preguntada hace un mes
- preguntada hace un mes
OFICIAL DE AWSActualizada hace 5 meses
OFICIAL DE AWSActualizada hace 2 años