Sho*_*chi 30 amazon-web-services amazon-rds google-cloud-platform kubernetes google-kubernetes-engine
我在google cloud(GKE)中运行k8s群集,在aws(RDS)中运行MySQL服务器.Pod需要连接到RDS,它只允许来自某些IP的连接.如何配置传出流量以获得静态IP?
Luc*_*ier 14
我有一个问题从Pod连接到sftp服务器.要解决此问题,首先需要创建外部IP地址:
gcloud compute addresses create {{ EXT_ADDRESS_NAME }} --region {{ REGION }}
Run Code Online (Sandbox Code Playgroud)
然后,我想您的pod已分配给默认池节点集群.提取默认池节点名称:
gcloud compute instances list | awk '{ print $1 }' | grep default-pool
Run Code Online (Sandbox Code Playgroud)
擦除vm实例的默认外部ip:
gcloud compute instances delete-access-config {{ VM_DEFAULT-POOL_INSTANCE }} --access-config-name external-nat
Run Code Online (Sandbox Code Playgroud)
添加之前创建的外部静态IP:
gcloud compute instances add-access-config {{ VM_DEFAULT-POOL_INSTANCE }} --access-config-name external-nat --address {{ EXT_ADDRESS_IP }}
Run Code Online (Sandbox Code Playgroud)
如果您的Pod未附加到默认池节点,请不要忘记使用nodeSelector选择它:
nodeSelector:
cloud.google.com/gke-nodepool: {{ NODE_NAME }}
Run Code Online (Sandbox Code Playgroud)
我做了一些研究,发现了一些事情.
我们正在寻找的东西称为"出口IP"或NAT-as-a-Service,它们在GKE中都不可用.
无论如何,我们有两种不同的选择:
希望能帮助到你!
我知道这确实很旧,但对我来说,解决方案是在谷歌云中创建一个私有 kubernetes 集群。如果集群是私有的,那么节点将没有任何外部 IP。如果节点没有外部 ip,并且我们有云 nat,那么所有传出流量将具有与云 nat ip 相同的 ip。所有这一切都可以通过谷歌云控制台来完成。
我发现这篇文章提供了有关创建私有集群的信息。 https://cloud.google.com/kubernetes-engine/docs/how-to/private-clusters
如果集群是私有的并且您需要从某个远程区域访问它,请使用以下命令:
gcloud 容器集群更新 {cluster_name} --enable-master-authorized-networks --master-authorized-networks {您的 IP 的 CIDR 表示法}
注意:在与 kubernetes 集群相同的区域中创建 cloud nat。另外,在创建云 nat 时,请确保为 NAT IP 地址选择“手动”选项,然后选择您拥有的一个静态 IP。将其余配置保留为默认值,除非您知道自己在做什么。
一切设置完毕后,kubectl exec 到任何节点中运行的任何 pod。使用 dig 命令检查您的传出 IP。
dig +short myip.opendns.com @resolver1.opendns.com
应该和云nat ip 一样。
| 归档时间: |
|
| 查看次数: |
9572 次 |
| 最近记录: |