1

我正在尝试建立一个多集群部署,其中有多个集群,一个入口是负载平衡它们之间的请求。

HTTP 服务与设置工作良好,这里的问题是sftp服务器。

参考这个答案和这个文档,我正在尝试访问sftp服务的端口 22。

sftp 的部署在端口 22 上公开。下面是清单:

kind: Deployment
apiVersion: extensions/v1beta1
metadata:
  name: sftp
  labels:
    environment: production
    app: sftp
spec:
  replicas: 1
  minReadySeconds: 10
  template:
    metadata:
      labels:
        environment: production
        app: sftp
      annotations:
        container.apparmor.security.beta.kubernetes.io/sftp: runtime/default
    spec:
      containers:
        - name: sftp
          image: atmoz/sftp:alpine
          imagePullPolicy: Always
          args: ["user:1001:100:upload"]
          ports:
            - containerPort: 22
          securityContext:
            capabilities:
              add: ["SYS_ADMIN"]
          resources: {}


这是使用 NodePort 服务的 sftp-service 的简单清单:

apiVersion: v1
kind: Service
metadata:
  labels:
    environment: production
  name: sftp-service
spec:
  type: NodePort
  ports:
  - name: sftp-port
    targetPort: 9000
    port: 9000
    nodePort: 30063
    protocol: TCP
  selector:
    app: sftp

ConfigMap 创建参考上述文档和答案如下所示:

apiVersion: v1
kind: ConfigMap
metadata:
  name: sftp-service
data:
  9000: "default/sftp-service:22"

最后入口清单如下所示:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-foo
  annotations:
    kubernetes.io/ingress.global-static-ip-name: static-ip
    kubernetes.io/ingress.class: gce-multi-cluster
spec:
  backend:
    serviceName: http-service-zone-printer
    servicePort: 80
  rules:
  - http:
      paths:
      - path: /sftp
        backend:
          serviceName: sftp-service
          servicePort: 22
  template:
    spec:
      containers:
        - name: proxy-port
          args:
            - "--tcp-services-configmap=default/sftp-service"

我觉得,我还没有理解使用 ingress 在 kubernetes 上为 sftp 服务器公开 TCP/UDP 端口的方法。我在这里做错了什么?

有没有其他方法可以sftp在多集群部署中简单设置使用入口和 NodePort 服务?

是我指的是进行设置的官方文档。

4

2 回答 2

-1

看起来这不受入口支持,这是存在问题的原因

一种可能的解决方案是使用 nodeport 进行 sftp,如本文档中所述

于 2019-07-17T18:26:40.147 回答
-1

您需要运行 HTTP 服务器。

您可以运行一个 HTTP 服务器,该服务器可能会在同一个 pod 中使用一个侧容器来公开相同的文件

于 2019-07-18T08:13:04.137 回答