我正在尝试建立一个多集群部署,其中有多个集群,一个入口是负载平衡它们之间的请求。
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 服务?
这是我指的是进行设置的官方文档。