gpt4 book ai didi

kubernetes - 部署到 Kubernetes (GKE) 时无法访问 SFTP 服务器

转载 作者:行者123 更新时间:2023-12-02 11:53:43 24 4
gpt4 key购买 nike

使用 NodePort 服务和 Kubernetes Ingress 公开时,无法访问 SFTP 服务器。但是,如果使用 LoadBalancer 类型的服务公开相同的部署,则它可以正常工作。

以下是 GKE 中 SFTP 的部署文件使用atmoz/sftp Dockerfile。

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:pass:1001:100:upload"]
ports:
- containerPort: 22
securityContext:
capabilities:
add: ["SYS_ADMIN"]
resources: {}

如果我通常使用 LoadBalancer 类型的 Kubernetes 服务公开此部署,如下所示:

apiVersion: v1
kind: Service
metadata:
labels:
environment: production
name: sftp-service
spec:
type: LoadBalancer
ports:
- name: sftp-port
port: 22
protocol: TCP
targetPort: 22
selector:
app: sftp

上述服务获取一个外部 IP,我可以简单地在命令 sftp xxx.xx.xx.xxx 中使用它使用pass命令获取访问权限密码。

但是,我尝试使用 GKE Ingress 公开相同的部署,但它不起作用。以下是入口的 list :


# First I create a NodePort service to expose the deployment internally

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

# Ingress service has SFTP service as it's default backend
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: basic-ingress-2
spec:
backend:
serviceName: sftp-service
servicePort: 22
rules:
- http:
paths:
# "http-service-sample" is a service exposing a simple hello-word app deployment
- path: /sample
backend:
serviceName: http-service-sample
servicePort: 80

将外部 IP 分配给 Ingress 后(我知道完全设置需要几分钟)和 xxx.xx.xx.xxx/sample开始工作但是 sftp -P 80 xxx.xx.xx.xxx不起作用。

以下是我从服务器收到的错误:

ssh_exchange_identification: Connection closed by remote host
Connection closed

我在上述设置中做错了什么?为什么LoadBalancer服务能够允许访问SFTP服务,而Ingress却失败?

最佳答案

目前不完全支持在 Kubernetes Ingress 中路由除 HTTP/HTTPS 协议(protocol)之外的任何其他流量(请参阅 docs )。

您可以尝试按照此处所述进行一些解决方法:Kubernetes: Routing non HTTP Request via Ingress to Container

关于kubernetes - 部署到 Kubernetes (GKE) 时无法访问 SFTP 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57039943/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com