我有个别的kubernetes容器正在运行。有人可以帮助我如何链接他们? 我曾在docker compose上工作,它的工作方式如下:
redis:
image: redis
hostname: redis
expose:
- "6379"
nginx:
image: xxx.xx.xx.xx:5000/nginx:0.1
expose:
- "8080"
ports:
- "8080:8080"
depends_on:
- active-webserver
- passive-webserver
active-webserver:
image: xxx.xx.xx.xx:5000/webserver:0.1
hostname: active-webserver
depends_on:
- redis
links:
- redis
expose:
- "8081"
ports:
- "8090:8081"
passive-webserver:
image: xxx.xx.xx.xx:5000/webserver:0.1
hostname: passive-webserver
depends_on:
- redis
- kafka
links:
- redis
- kafka
expose:
- "8081"
ports:
- "8091:8081"
但是当来到kubernetes时,我不知道如何继续。我有使用kompose后创建的服务和部署文件,但它实际上打破了代码之间的链接。
服务档案:
apiVersion: v1
kind: Service
metadata:
annotations:
kompose.cmd: kompose convert -f docker-compose.yaml
kompose.version: 1.5.0 (999278f)
creationTimestamp: null
labels:
io.kompose.service: nginx
name: nginx
spec:
ports:
- name: "8080"
port: 8080
targetPort: 8080
selector:
io.kompose.service: nginx
status:
loadBalancer: {}
我的部署文件是:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
annotations:
kompose.cmd: kompose convert -f docker-compose.yaml
kompose.version: 1.5.0 (999278f)
creationTimestamp: null
labels:
io.kompose.service: nginx
name: nginx
spec:
replicas: 1
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
io.kompose.service: nginx
spec:
containers:
- image: xxx.xx.xx.xx:5000/nginx:0.1
name: nginx
ports:
- containerPort: 8080
resources: {}
restartPolicy: Always
status: {}
答案 0 :(得分:0)
取决于。
在kubernetes中,容器调度的原子单位是Pod,pod可以包含多个容器,但pod是您的缩放单位。因此,如果容器已链接,并且您始终希望它们将它们一起缩放,则将它们全部放在同一个窗格中。
如果你不想,如果你可能想要一个容器多于另一个容器或者想要独立扩展它们,那么你可以做的最好的事情就是下面的一个或几个来实现某种顺序。
创建一个命名空间来放置整个"堆栈"对于您可能希望独立扩展的每组容器进行部署(或其他),但将它们保存在一个名称空间中。那样你的内部dns名称(如果你使用的是kubedns)就是redis.mystack.svc.cluster.local(其中mystack是你的命名空间的名称,redis是你面前服务的名称,在这里case,你的redis pods。)
使用标签将应用的不同部分绑在一起。标签是组织堆叠的好方法。例如,给每个资源一个标签" app:mystack"。然后你可以做kubectl get pods -l app=mystack
使用像helm(https://github.com/kubernetes/helm)这样的工具,它有一个将资源分组到一个"应用程序"的概念。
任何这些都可以毫无问题地一起使用。