标签: google-kubernetes-engine

GKE 中出站连接的稳定公共 IP 或 IP 范围

我使用 Google Kubernetes Engine 按需运行 Pod。每个 pod 都使用 nodeport 服务公开暴露在互联网上。

我正在 GKE 中寻找一种方法来获取出站连接的单个 IP 或 IP 范围,将它们提供给第三方 API 以将它们列入白名单。

当节点自动缩放或升级它们时,GKE 节点 IP 是不可管理的。我需要一种方法来保持一致的出站 IP。

我曾尝试使用一个简单的 NAT 网关到 Kubernetes 节点(使用这里的示例),虽然这将出站连接路由到 NAT 网关,但它会中断到 Pod(Nodeport 服务)的入站流量,因为它们在NAT 网关。

  • 是否有谷歌云区域的默认 IP 范围,我可以将其提供给第三方以列入白名单(或)

  • 如果 GKE 提供了一种从静态 IP(或)预先保留的列表中选择节点外部 IP 的方法

  • 有没有其他方法可以实现拥有单个静态 IP 或代表来自 Pod 的出站流量的 IP 范围

我发现像类似的问题这样,但使用NAT时休息,他们并没有解决我的问题,因为豆荚应该是外部连接。

google-cloud-platform google-kubernetes-engine

30
推荐指数
1
解决办法
2万
查看次数

gcloud docker -- 登录尝试推送结果失败,404

我正在尝试将 docker 映像推送到 Google 的容器注册表,但不断收到有关 Docker 登录失败的错误消息。我跑

gcloud docker -- push gcr.io/<my-project-id>/test-image
Run Code Online (Sandbox Code Playgroud)

我回来了

ERROR: Docker CLI operation failed:

Error response from daemon: login attempt to 
https://appengine.gcr.io/v2/ failed with status: 404 Not Found

ERROR: (gcloud.docker) Docker login failed.
Run Code Online (Sandbox Code Playgroud)

其他不通过 docker 工作的 gcloud 操作。例如,我可以通过gcloud container clusters create my-cluster.

我今天确实在玩本地注册表,不确定这是否会破坏事情。

谢谢!

docker google-kubernetes-engine gcloud

25
推荐指数
3
解决办法
4827
查看次数

在 Kubernetes 部署规范中使用环境变量

我目前使用 Kubernetes 规范Deployment.yaml来部署服务。该规范包括对特定 IP 地址的逐字引用(标记<static-ip-address>如下):

spec:
  type: LoadBalancer
  loadBalancerIP: <static-ip-address>
Run Code Online (Sandbox Code Playgroud)

我担心将密码或 IP 地址等信息推送到远程 Git 存储库中。我可以通过使用环境变量来避免这种情况,例如使用部署规范和实际部署大致如下:

spec:
   type: LoadBalancer
   loadBalancerIP: ${SERVICE_ADDRESS}
Run Code Online (Sandbox Code Playgroud)

export SERVICE_ADDRESS=<static-ip-address>
kubectl create -f Deployment.yaml
Run Code Online (Sandbox Code Playgroud)

显然,这种特定的语法还不起作用。但是这样的事情可能吗,如果有的话怎么办?

我宁愿不依赖单独的配置工具Secret s 和ConfigMaps 看起来很有希望,但显然不能以适合此目的的方式使用它们。如果我可以直接引用用它定义的静态 IP 地址gcloud compute addresses create service-address,那就最好了。

environment-variables kubernetes google-kubernetes-engine

20
推荐指数
2
解决办法
3万
查看次数

如何在 Google Kubernetes Engine 中选择 Kubernetes 负载均衡器的外部 IP 地址

我正在使用 Google Kubernetes Engine 部署一个网络应用程序,我想通过负载均衡器在我作为 Google Cloud Platform 中同一项目的一部分控制的现有静态 IP 地址上访问它,因为我想使用域名已经指向这个IP。

我用于 pod 的 yaml 文件是:

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
  labels:
    app: my-app
spec:
  containers:
  - name: my-container
    image: gcr.io/my-project/my-app:latest
Run Code Online (Sandbox Code Playgroud)

我可以使用以下方法设置负载平衡器:

apiVersion: v1
kind: Service
metadata:
  name: my-load-balancer
spec:
  ports:
  - port: 80
    targetPort: 80
  selector:
    app: my-app
  type: LoadBalancer
Run Code Online (Sandbox Code Playgroud)

这提供了一个可以访问应用程序的外部 IP,但我找不到任何方法来配置它以使用我想要的 IP。该服务的文件提到了spec.clusterIP设置,但这似乎并没有涉及到的外部IP。同样,一旦设置了负载均衡器,服务的 status.loadBalancer.ingress.ip 字段就会设置为其外部 IP 地址,但这似乎不是一个可配置的设置。

作为替代方案,我尝试在 Google Compute Engine 控制台中手动创建转发规则,将来自静态 IP 地址的流量定向到 Kubernetes 设置的目标池,但是当我尝试连接时,连接被拒绝。

有什么方法可以做我想做的事 - 在选定的静态 IP 地址上在 Google Kubernetes 引擎上公开 Kubernetes …

docker google-compute-engine kubernetes google-cloud-platform google-kubernetes-engine

18
推荐指数
2
解决办法
2万
查看次数

nginx 中的 kubernetes dns 解析器

我在本地开发docker-compose,并且有一个 nginx 容器做一个简单的proxy_pass像这样:

location /app/ {
    proxy_pass http://webapp:3000/;

    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;

    resolver 127.0.0.11;
}
Run Code Online (Sandbox Code Playgroud)

我现在想转移到 kubernetesGKE 中,最后一行给我带来了麻烦。

我试图将解析器切换到:

    resolver kube-dns;
Run Code Online (Sandbox Code Playgroud)

我还尝试了各种其他 IP 和名称,但我不断收到以下错误:

nginx: [emerg] host not found in resolver "kube-dns"
Run Code Online (Sandbox Code Playgroud)

我的 kubernetes 设置是我有一个 pod,有 2 个容器:“webapp”和“nginx”。我只想有一个service指向 nginx的外部可以proxy_pass指向 webapp 的。

有任何想法吗?

nginx kubernetes google-kubernetes-engine

16
推荐指数
2
解决办法
1万
查看次数

Kubernetes - 我可以避免使用 GCE 负载均衡器来降低成本吗?

我正在使用 Gitlab-CI 在 GCE 上部署 Kubernetes 集群。我想将成本保持在最低水平 - 这是我目前的设置:

  • 节点在 3 个f1-micro实例上运行
  • Traefik使用 ServiceType 配置运行的系统 podLoadBalancer
  • 配置了通配符 dns
  • 1 个postgres 吊舱
  • 1 个ingress为 Traefik 配置的Web 服务器 pod

我想降低部署成本。大部分成本由 GCE 负载均衡器承担。有没有办法在 GCE 上使用公共 IP 地址而不是负载均衡器?如果是这样,我是否可以使用分配给集群的 IP 地址(而不是保留静态 IP)?

换句话说,有没有办法在没有负载均衡器的情况下使用 GCE 将临时 IP 绑定到 Kubernetes 服务?

是否有任何其他配置我可以做不同的事情来降低 GCE 的总体成本?

load-balancing google-compute-engine kubernetes google-kubernetes-engine

14
推荐指数
1
解决办法
3670
查看次数

在现有 GKE 集群上启用 VPC 原生(别名 IP)

有没有办法Alias IP在现有的 GKE 集群上启用(禁用Alias IP)?

(除了使用https://github.com/bowei/k8s-custom-iptables在每个节点上创建 NAT)

kubernetes google-cloud-platform google-kubernetes-engine

13
推荐指数
1
解决办法
3070
查看次数

尽管后端服务健康,谷歌云 http(s) 负载平衡器返回 502

我有一个 GCE http(s) 负载均衡器配置为将流量定向到 2 个后端: - 默认后端 - 带有单独主机/路径规则的第二个后端 ( <host>:/*)

两个后端都存在于同一个实例组中——一个容器集群,运行两个暴露不同 NodePort 的 kubernetes 服务。

实例组有两个命名端口,每个暴露的 NodePort 一个。

尽管两个后端都报告健康,但对第二个后端的所有请求都返回 502。

服务本身不是问题 - 如果我将第二个后端后面的服务切换为默认服务,它可以正常工作。

注意:自从它第一次发布以来,我已经大大更新/简化了这个描述,因为我能够用更简单的配置重现这个问题。

load-balancing google-compute-engine google-cloud-platform google-kubernetes-engine

12
推荐指数
1
解决办法
5752
查看次数

创建 GCE 负载均衡器时出错:请求的地址 ip 既不是静态的也不是分配给 LB

我有一种情况,Kubernetes 显然无法再为kubectl create -f Deployment.yaml. kubectl describe service <my-service>报告以下错误

CreatingLoadBalancerFailed    
Error creating load balancer (will retry): Failed to create load balancer 
for service default/<my-service>: requested ip <my-address> is 
neither static nor assigned to LB <id>(default/<my-service>): <nil>
Run Code Online (Sandbox Code Playgroud)

gcloud compute addresses list表示my-address是静态IP地址:

NAME          REGION        ADDRESS       STATUS
<my-address>  europe-west1  <ip-address>  RESERVED
Run Code Online (Sandbox Code Playgroud)

Deployment.yaml包含<my-service>分配<my-address>给负载均衡器的规范:

kind: Service
apiVersion: v1
metadata:
  name: my-service
spec:
  selector:
    app: my-app
ports:
  - protocol: UDP
    port: …
Run Code Online (Sandbox Code Playgroud)

google-compute-engine kubernetes google-kubernetes-engine

9
推荐指数
2
解决办法
4061
查看次数

检测 GKE 日志中的 Kubernetes OOMKilled 事件

我想为 OOMKilled 事件设置检测,在检查 pod 时看起来像这样:

Name:   pnovotnak-manhole-123456789-82l2h
Namespace:  test
Node:   test-cluster-cja8smaK-oQSR/10.x.x.x
Start Time: Fri, 03 Feb 2017 14:34:57 -0800
Labels:   pod-template-hash=123456789
    run=pnovotnak-manhole
Status:   Running
IP:   10.x.x.x
Controllers:  ReplicaSet/pnovotnak-manhole-123456789
Containers:
  pnovotnak-manhole:
    Container ID: docker://...
    Image:    pnovotnak/it
    Image ID:   docker://sha256:...
    Port:
    Limits:
      cpu:  2
      memory: 3Gi
    Requests:
      cpu:    200m
      memory:   256Mi
    State:    Running
      Started:    Fri, 03 Feb 2017 14:41:12 -0800
    Last State:   Terminated
      Reason:   OOMKilled
      Exit Code:  137
      Started:    Fri, 03 Feb 2017 14:35:08 -0800
      Finished:   Fri, 03 Feb 2017 14:41:11 -0800 …
Run Code Online (Sandbox Code Playgroud)

kubernetes google-kubernetes-engine google-stackdriver

9
推荐指数
1
解决办法
6263
查看次数