标签: kubernetes-ingress

kubernetes nginx 入口日志不显示外部 ip

我让入口 nginx 工作在gcloud. 但是,当我使用命令看到日志时kubectl log

$ kubectl logs nginx-ingress-controller-59f55c679c-zcr24
myhost.com/clients"
10.28.0.1 - [10.28.0.1] - - [14/May/2018:09:00:59 +0000] "GET /api/users/2/10 HTTP/1.1" 304 0 "http://myhost.com/clients" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0" 796 0.083 [default-back-main-80] 10.28.0.93:1337 0 0.083 304
2018/05/14 09:01:00 [notice] 10982#10982: *6937489 "/api/(.*)" matches "/api/users/1/10", client: 10.28.0.1, server: myhost.com, request: "GET /api/users/1/10 HTTP/1.1", host: "myhost.com", referrer: "http://myhost.com/clients"
2018/05/14 09:01:00 [notice] 10982#10982: *6937489 rewritten data: "/users/1/10", args: "", client: 10.28.0.1, server: myhost.com, request: "GET /api/users/1/10 HTTP/1.1", …
Run Code Online (Sandbox Code Playgroud)

nginx kubernetes google-kubernetes-engine kubernetes-ingress

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

在 Google Kubernetes Engine 上托管 sails.js 应用程序时,我收到所有资产的 404 错误

我想在 Google Kubernetes Engine 上运行 sails.js 应用程序。在本地运行应用程序 docker 容器效果很好。到 GKE 的部署是通过 gitlab Auto-Devops 管道完成的。到目前为止,将应用程序部署到 GKE 正在运行,我可以使用 gitlab-CI 生成的域访问 sails.js 应用程序的页面 - 例如xyz-review-autodevops-123.my.host.com

但是,当访问页面时,只能加载所请求的页面 - 所有资源(例如图像、javascript 和 css 文件)都不会加载,而是返回 404。

当查看 GKE 中的 nginx-ingress-controller 日志时,我发现请求了这些 url,但结果是 404:

[05/Aug/2018:12:27:25 +0000] "GET /js/cloud.setup.js HTTP/1.1" 404 9 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.84 Safari/537.36" 573 0.004 [my-app-review-autodevops-1232u0-my-app-443] xx.xx.xx.xx:80 9 0.004 404
Run Code Online (Sandbox Code Playgroud)

还经常记录如下错误。我不确定这是否与此问题有关,但仍然想提一下,以防万一:

error obtaining PEM from secret my-app-1239989/review-autodevops-1232u0-my-app-tls: error retrieving secret my-app-1239989/review-autodevops-1232u0-my-app-tls: secret my-app-1239989/review-autodevops-1232u0-my-app-tls was not found" …
Run Code Online (Sandbox Code Playgroud)

sails.js gitlab-ci kubernetes google-kubernetes-engine kubernetes-ingress

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

Kubernetes NodePort - Ufw/Iptables 被忽略?

我在一台机器上打开了一个 Kubernetes NodePort,并使用以下规则阻止了到该端口的所有流量:

sudo ufw deny 30001
Run Code Online (Sandbox Code Playgroud)

但我仍然可以通过浏览器访问该端口。常见吗?我在文档中找不到任何相关信息。

iptables kubernetes ufw kubernetes-ingress

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

Isito 入口控制器虚拟服务返回 503

我创建了一个具有以下版本的 AKS 集群。

Kubernetes version: 1.12.6
Istio version: 1.1.4
Cloud Provider: Azure
Run Code Online (Sandbox Code Playgroud)

我还使用外部 IP 地址成功安装了 Istio 作为我的 Ingress 网关。我还为部署服务的命名空间启用了 istio-injection。我看到 sidecar 注入正在成功进行。它正在显现。

NAME                                      READY   STATUS    RESTARTS   AGE
club-finder-deployment-7dcf4479f7-8jlpc   2/2     Running   0          11h
club-finder-deployment-7dcf4479f7-jzfv7   2/2     Running   0          11h
Run Code Online (Sandbox Code Playgroud)

我的 tls 网关

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: tls-gateway
  namespace: istio-system
spec:
  selector:
    istio: ingressgateway
  servers:
  - port:
      name: https
      number: 443
      protocol: HTTPS
    tls:
      mode: SIMPLE
      serverCertificate: /etc/istio/ingressgateway-certs/tls.crt
      privateKey: /etc/istio/ingressgateway-certs/tls.key
    hosts:
    - "*"
Run Code Online (Sandbox Code Playgroud)

注意:我使用自签名证书进行测试。

我已经申请了以下虚拟服务

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: …
Run Code Online (Sandbox Code Playgroud)

azure kubernetes istio kubernetes-ingress

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

Docker 桌面 + k8s 加上 https 代理多个外部端口到部署中的 http 上的 pod?

我正在尝试做一件我认为很简单的事情。我需要在 docker 桌面的 k8s 环境中收听https://localhost:44301https://localhost:5002https://localhost:5003,并使用我的 pfx 文件/密码进行代理指定并通过端口将其转发到侦听特定地址的 Pod(可能是端口 80,无所谓)

该文档令人麻木地复杂,因为它看起来应该是直截了当的。我可以让 pod 运行,我可以使用 kubectl port-forward 并且它们工作正常,但是我无法弄清楚如何以有意义的方式使用 ha-proxy 或 nginx 或其他任何东西来使用 ingress。

有人可以做一个 ELI5 告诉我如何打开它吗?我在 Windows 10 2004 上使用 WSL2 和 Docker 实验性,所以我应该可以访问他们在文档中引用的入口内容,并把它说清楚。

谢谢!

kubernetes kubernetes-ingress docker-desktop

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

Kubernetes 上微服务之间集群间通信的最佳方式?

我是微服务的新手,想了解在 Kubernetes 上部署的微服务中实现以下行为的最佳方式是什么:

有 2 个不同的 K8s 集群。微服务 B 部署在两个集群上。

现在如果微服务 A 调用微服务 B 并且 B 的 pod 在集群 1 中不可用,那么调用应该转到集群 2 的 B。

我可以想象通过使用 Netflix OSS 来实现这个功能,但在这里我没有使用它。

另外,暂时将集群间通信放在一边,我应该如何在微服务之间进行通信?

我知道的一种方法是为每个微服务创建 NodePort 类型的 Kubernetes 服务,并在调用微服务中使用 IP 和 nodePort。

问题:如果有人删除了目标微服务的K8s Service怎么办?在重新创建 K8s 服务时,K8s 将随机分配一个新的 nodePort,然后我将不得不返回到我的调用微服务并更改目标微服务的 nodePort。如何与 nodePort 解耦?

我研究了 kubedns,但似乎它只适用于集群。

我对 Istio 和 Kubernetes Ingress 的了解非常有限。这些中的任何一个是否提供了我正在寻找的东西?

抱歉问了一个很长的问题。任何形式的指导都会非常有帮助。

java spring-boot kubernetes microservices kubernetes-ingress

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

在 GKE 私有集群上创建入口资源时超时

创建了一个 GKE 集群,为互联网连接设置了 cloud-nat。然后我部署了 kubernetes ingress-nginx kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/provider/cloud/deploy.yaml

到这里一切都很好,但是当我尝试部署时,ingress resource我得到了这个 Error from server (Timeout): error when creating "manifests/backend/service/be-nginx-ingress-serivce.yaml": Timeout: request did not complete within requested timeout 30s

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-resource
  namespace: sap
  annotations:
    kubernetes.io/ingress.class: nginx
spec:
  tls:
    - hosts:
      - mywebname.com
      secretName: ingress-tls
  rules:
    - host: mywebname.com
      http:
        paths:
        - path: /
          backend:
            serviceName: app
            servicePort: 5000
        - path: /v1
          backend:
            serviceName: web
            servicePort: 8081
Run Code Online (Sandbox Code Playgroud)

我的清单在公共 GKE 上运行良好,但今天我将其切换为私有,我遇到了这个问题,这是我第一次使用 VPC,任何帮助或指导将不胜感激,谢谢

nginx google-cloud-platform kubernetes google-kubernetes-engine kubernetes-ingress

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

在 AWS EKS 中,如何定义入口以将一个 ALB 用于多个子域 URL,每个子域 URL 都有自己的证书?

我有多个服务需要公开到 Internet,但我想为它们使用单​​个 ALB。

我正在使用最新的AWS Load Balancer Controller,我一直在阅读这里的文档(https://kubernetes-sigs.github.io/aws-load-balancer-controller/guide/ingress/annotations/#traffic-routing ),但我还没有找到关于如何实现这一点的明确解释。

这是设置:

我有 service-a.example.com -and- service-b.example.com。他们每个人在 Amazon Certificate Manager 中都有自己的证书。

在 Kubernetes 中,每个都有自己的服务对象,定义如下(每个都是唯一的):

apiVersion: v1
kind: Service
metadata:
  name: svc-a-service
  annotations:
    alb.ingress.kubernetes.io/healthcheck-protocol: HTTP
    alb.ingress.kubernetes.io/healthcheck-port: traffic-port
    alb.ingress.kubernetes.io/healthy-threshold-count: '5'
    alb.ingress.kubernetes.io/unhealthy-threshold-count: '2'
    alb.ingress.kubernetes.io/healthcheck-path: /index.html
    alb.ingress.kubernetes.io/healthcheck-interval-seconds: '30'
    alb.ingress.kubernetes.io/healthcheck-timeout-seconds: '5'
    alb.ingress.kubernetes.io/success-codes: '200'
    alb.ingress.kubernetes.io/tags: Environment=Test,App=ServiceA
spec:
  selector:
    app: service-a
  ports:
  - port: 80
    targetPort: 80
  type: NodePort
Run Code Online (Sandbox Code Playgroud)

每个服务都有自己的 Ingress 对象,定义如下(同样,每个服务都是唯一的,并且为每个服务指定了正确的证书):

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: svc-a-ingress
  annotations:
    kubernetes.io/ingress.class: alb
    alb.ingress.kubernetes.io/group.name: services
    alb.ingress.kubernetes.io/scheme: internet-facing
    alb.ingress.kubernetes.io/security-groups: sg-01234567898765432 …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services kubernetes kubernetes-ingress amazon-eks

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

如何设置 Ingress 以连接到 ClusterIP 服务?

客观的

我已经使用 Airflow 的 Stable Helm 图表在 AWS 的Elastic Kubernetes 服务上部署了Apache Airflow。我的目标是创建一个 Ingress 以允许其他人通过他们的浏览器访问气流网络服务器 UI。值得一提的是,我正在使用 AWS Fargate 在 EKS 上进行部署。我对 Kubernetes 的经验有点有限,之前我自己也没有设置过 Ingress。

我试图做的

我目前能够通过端口转发(如kubectl port-forward airflow-web-pod 8080:8080)连接到气流网络服务器吊舱。我曾尝试通过 Helm 图表设置 Ingress(此处记录)。之后:

运行kubectl get ingress -n dp-airflow我得到:

NAME             CLASS    HOSTS                      ADDRESS   PORTS   AGE
airflow-flower   <none>   foo.bar.com             80      3m46s
airflow-web      <none>   foo.bar.com             80      3m46s
Run Code Online (Sandbox Code Playgroud)

然后运行kubectl describe ingress airflow-web -n dp-airflow我得到:

Name:             airflow-web
Namespace:        dp-airflow
Address:
Default backend:  default-http-backend:80 (<error: endpoints …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services amazon-elb kubernetes kubernetes-ingress amazon-eks

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

使用 kustomize 覆盖替换多个 gke 入口主机

我有一个 GKE/GCE 入口文件,它有 2 个主机。

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: my-ingress
spec:
  rules:
  - host: myfirstdomain # <-------- override this via kustomize
    http:
      paths:
      - path: /abc
        backend:
          serviceName: abc
          servicePort: abc
      - path: /def
        backend:
          serviceName: def
          servicePort: def
      - path: /ghi
        backend:
          serviceName: ghi
          servicePort: ghi
  - host: myseconddomain # <-------- override this via kustomize
    http:
      paths:
      - backend:
          serviceName: xyz
          servicePort: xyz
Run Code Online (Sandbox Code Playgroud)

我想host通过 kustomize声明这些值,以便我可以host为不同的环境指定不同的值。

我的开发环境覆盖补丁文件如下所示:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: my-ingress …
Run Code Online (Sandbox Code Playgroud)

overlay kubernetes google-kubernetes-engine kubernetes-ingress kustomize

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