【问题标题】:How to access Google Kubernetes Engine FTP Server by FileZilla如何通过 FileZilla 访问 Google Kubernetes Engine FTP 服务器
【发布时间】:2018-10-21 17:14:21
【问题描述】:

我创建了一个 gcePresistentDisk 并创建了一个集群并挂载了它。 这是yaml文件,https://github.com/aledv/kubernetes-ftp引用:

部署.yaml

apiVersion: apps/v1beta1 # for versions before 1.6.0 use extensions/v1beta1
kind: Deployment
metadata:
  name: my-ftp
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: my-ftp
    spec:
      volumes:
      - name: task-pv-storage
        gcePersistentDisk:
          pdName: my-disk
          fsType: ext4
      containers:
      - name: my-ftp-container
        image: fauria/vsftpd
        ports:
        - containerPort: 21
          protocol: TCP
          name: "ftp-server"
        volumeMounts:
        - mountPath: "/home/vsftpd"
          name: task-pv-storage
        env:
        - name: FTP_USER
          value: "user"
        - name: FTP_PASS
          value: "password"

Service.yaml

apiVersion: v1
kind: Service
metadata:
  name: my-ftp-service
  labels:
    app: my-ftp
spec:
  type: LoadBalancer
  ports:
    - port: 21
      nodePort: 30080
  selector:
    app: my-ftp

Ingress.yaml

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ftp-ftp-ingress
spec:
  backend:
    serviceName: ftp-ftp-service
    servicePort: 21

我创造了它们。 我试过了

$kubectl get service rushbit-ftp-service --watch

获取 ip 并使用 FileZilla 将 ip 与用户名和密码连接。 我也尝试了端口 30080,但仍然超时。

我错过了什么吗?

【问题讨论】:

    标签: server ftp kubernetes yaml


    【解决方案1】:

    我认为您需要创建一个秘密。

    echo -n '管理员' | base64 YWRtaW4=

    secret.yaml

    api版本:v1

    种类:秘密

    元数据:

    名称:名称传递

    类型:不透明

    数据:

    密码:YWRtaW4=

    然后你需要在模块规范中添加

    规格:

      containers:
    
      - image: mysql:5.7
    
        name: mysql
    
        env:
    
        - name: MYSQL_ROOT_PASSWORD
    
          valueFrom:
    
            secretKeyRef:
    
              name: name-pass
    
              key: password
    

    【讨论】:

      【解决方案2】:

      遇到问题的朋友可以试试以下方法:

      在deployment.yaml中,指定被动模式的最小和最大端口范围。

       env: 
        - name: PASV_ADDRESS
          value: "127.0.0.1"
        - name: PASV_MIN_PORT
          value: "31100"
        - name: PASV_MAX_PORT
          value: "31101"
      

      然后,在 service.yaml 中,从 deployment.yaml 中指定端口。

      ports:
       - name: port1
         port: 21
         nodePort: 30080
       - name: port2
         port: 31100
         nodePort: 31100
       - name: port3
         port: 31101
         nodePort: 31101
      

      这样你的FTP客户端应该可以在客户端模式下工作了。

      【讨论】:

        【解决方案3】:

        您在一个配置中混合了两种类型的部署服务:LoadBalancer 和 Ingress。

        它不起作用。

        您应该从 Ingress 公开 FTP 服务,而不是从 LoadBalancer。

        我部署了您在 GitHub 中提供的示例配置,并且成功了。

        毕竟,我已经检查过 Ingress 控制器是否正在侦听正确的 IP 地址和端口:

        kubectl get ingres | grep ftp
        

        您也可以检查GCE防火墙配置是否有问题:

        gcloud compute firewall-rules list
        

        【讨论】:

        • 我试过这个,当我连接到服务器时,FileZilla 发送 500 Illegal PORT 命令消息和被动模式失败消息,以及 PORT 192,168,0,20,7,180。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-10-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-06
        相关资源
        最近更新 更多