我正在将我们的集群迁移到k8s集群,这意味着我需要将所有composed文件重写为k8s文件。一切都在冒烟,直到我到了房间。。。
redis的组合文件:是的,它很简单,因为它只是在开发过程中测试缓存内容。。。
version: "3"
services:
db:
image: redis:alpine
ports:
- "6380:6379"
deploy:
labels:
- traefik.frontend.rule=Host:our-redis-url.com
placement:
constraints:
- node.labels.so==linux
networks:
- traefik
networks:
traefik:
external: true
所以,我们在这个群中有4个节点。。。我的DNS(我们的redisurl.com(指向其中一个,它就像一个魅力。我使用那个url+6380端口简单地连接到redis。
现在。。。。我已经创建了同样的东西,但对于k8s,如下所示:
apiVersion: apps/v1
kind: Deployment
metadata:
name: redis-ms
namespace: prod
spec:
replicas: 1
selector:
matchLabels:
app: redis-ms
template:
metadata:
labels:
app: redis-ms
spec:
containers:
- name: redis-ms
image: redis:alpine
ports:
- containerPort: 6379
resources:
requests:
cpu: 250m
memory: 256Mi
limits:
cpu: 500m
memory: 512Mi
---
apiVersion: v1
kind: Service
metadata:
name: redis-ms
namespace: prod
spec:
selector:
app: redis-ms
ports:
- protocol: TCP
port: 6380
targetPort: 6379
type: ClusterIP
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: redis-ms
namespace: prod
annotations:
kubernetes.io/ingress.class: traefik
spec:
rules:
- host: our-redis-url.com
http:
paths:
- backend:
service:
name: redis-ms
port:
number: 6380
path: /
pathType: Prefix
但这并没有奏效。pod正在运行,从日志中我可以看到它正在等待连接,但我不知道如何像docker compose(traefik.frontend.rule=Host:redis-ms.mstech.com.br来绑定url和端口部分(中那样使用技巧。
我已经尝试使用工具kompose来转换这个组成文件。。。它没有工作lol
如果有人能给我一些建议,或者帮我解决这个问题,我会感谢的。
我正在使用带有traefik的k8s作为入口控制器。
如注释中所述,Ingress系统仅用于HTTP流量。Traefik也支持TCP和UDP流量,但这与Ingress的东西是分开的,必须通过Traefik的更具体的工具(自定义资源或配置文件(进行配置。更常见的情况是,您将使用LoadBalancer类型的服务,该服务在您的云提供商中创建TCP LB。