kubernetes Microk8s可访问互联网,但无法访问内部网络

x33g5p2x  于 2022-11-02  发布在  Kubernetes
关注(0)|答案(1)|浏览(237)

我刚刚在一个vmware虚拟服务器上安装了Ubuntu 22.04,并开始使用microk8s,该服务器是本地网络的一部分,在该网络中有一些服务器,包括处理网络的microsoft ADIIS服务器。
我在ubuntu系统上安装了docker,可以通过docker运行web应用的所有容器,没有任何问题。(一个容器),连接到本地网络的windows AD服务器,对web应用程序的用户进行身份验证。在主机上,它工作正常,可以到达X1 M9 N1 X服务器以及网络中的其他服务器,并执行所有必要的操作。
另一方面,当通过microk8skubernetes上运行时,所有服务都可以工作,它们都可以从本地网络访问,而同时容器可以访问外部网络(在我们的本地网络之外,例如www.google.com)。只有内部网络似乎不可访问,对此我总是得到超时错误。

我尝试的内容(但不起作用)
  • 外部服务[1][2]
  • 检查复制到容器中的主机上的dns解析

注意:
我不确定应该运行什么类型的命令来提供关于配置的最有用的信息,所以我将重复这个问题,用日志和其他有意义的信息来扩展它。
谢谢

编辑2022年11月10日

我已经启用了以下插件

microk8s is running
high-availability: no
  datastore master nodes: 127.0.0.1:19001
  datastore standby nodes: none
addons:
  enabled:
    dns                  # (core) CoreDNS
    ha-cluster           # (core) Configure high availability on the current node
    helm                 # (core) Helm - the package manager for Kubernetes
    helm3                # (core) Helm 3 - the package manager for Kubernetes
    ingress              # (core) Ingress controller for external access
    metallb              # (core) Loadbalancer for your Kubernetes cluster

另一个奇怪的事情是,容器可以通过主机的IP地址(10.1.1.xxx)访问主机上的postgres数据库

编辑2 2022年12月10日

这是入口yaml文件

apiVersion: v1
kind: Service
metadata:
  name: ingress
  namespace: ingress
spec:
  selector:
    name: nginx-ingress-microk8s
  type: LoadBalancer
  ports:
    - name: http
      protocol: TCP
      port: 80
      targetPort: 80
    - name: https
      protocol: TCP
      port: 443
      targetPort: 443
---

# 

# Ingress

# 

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: main-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
  rules:
  - http:
      paths:
      - path: /api/erp(/|$)(.*)
        pathType: Prefix
        backend:
          service:
            name: erp-service
            port:
              number: 8000
      - path: /api/auth(/|$)(.*)
        pathType: Prefix
        backend:
          service:
            name: auth-service
            port:
              number: 8000
      - path: /()(.*)
        pathType: Prefix
        backend:
          service:
            name: ui-service
            port:
              number: 3000

我可以访问UI,并且通过使用主机的ip/api/auth,我可以访问swagger/openapi的在线文档。[1]:https://kubernetes.io/docs/concepts/services-networking/service/#services-without-selectors

yb3bgrhw

yb3bgrhw1#

到目前为止,我还没有找到任何解决方案,只能绕过请求并使用“代理”endpoint,如
Accessing an external InfluxDb Database from a microk8s pod using selectorless service and manual endpoint?
基本上,它创建一个服务,该服务可由群集访问,并创建一个指向外部资源的终结点。

从应答中获取的实际源配置
kind: Service
apiVersion: v1
metadata:
  name: influxdb-service-lb
  #namespace: ingress
spec:
  type: LoadBalancer
  loadBalancerIP: 10.1.2.61

# selector:

# app: grafana

  ports:
  - name: http
    protocol: TCP
    port: 8086
    targetPort: 8086
---
apiVersion: v1
kind: Endpoints
metadata:
  name: influxdb-service-lb
subsets:
  - addresses:
      - ip: 10.1.2.220
    ports:
      - name: influx
        protocol: TCP
        port: 8086

如果我能找到解决方案,我会更新此答案

相关问题