이번 포스트는 워커 노드간에 네트워크 라우팅 작업을 진행합니다.
이전 시리즈와 같이, 작업에 사용되는 명령어는 아래 깃허브에서 확인 가능합니다.
URL : https://github.com/go4real/kubernetes-the-hard-way-aws/blob/master/docs/11-pod-network-routes.md
현재 EC2를 통해 구성된 워커노드 서버의 네트워크 구성은 아래와 같습니다.
각 EC2마다 하나의 노드이며, 각 노드는 pod와 브릿지로 연결되어 있습니다.
라우팅 작업을 완료하면 라우트 테이블을 경유하여 eth0에 표기된 사설 IP로 접속 및 통신 가능합니다.
ex : worker-2 노드 내부 pod 에서 worker-0 노드 내부 pod로 통신
ROUTE_TABLE_ID=$(aws ec2 describe-route-tables --output text --filters 'Name=tag:Name,Values=kubernetes' --query 'RouteTables[].Associations[].RouteTableId')
for instance in worker-0 worker-1 worker-2; do
instance_id_ip="$(aws ec2 describe-instances \
--filters "Name=tag:Name,Values=${instance}" \
--output text --query 'Reservations[].Instances[].[InstanceId,PrivateIpAddress]')"
instance_id="$(echo "${instance_id_ip}" | cut -f1)"
instance_ip="$(echo "${instance_id_ip}" | cut -f2)"
pod_cidr="$(aws ec2 describe-instance-attribute \
--instance-id "${instance_id}" \
--attribute userData \
--output text --query 'UserData.Value' \
| base64 --decode | tr "|" "\n" | grep "^pod-cidr" | cut -d'=' -f2)"
echo "${instance_ip} ${pod_cidr}"
aws ec2 create-route \
--route-table-id "${ROUTE_TABLE_ID}" \
--destination-cidr-block "${pod_cidr}" \
--instance-id "${instance_id}"
done
결과 화면
AWS 콘솔에서도 해당 라우팅 정책이 적용된 것으로 확인할 수 있습니다.