我有一个要扩展的最小的(有效的) presto 安装(同一主机上的一个协调器和一个工作器)。我创建了一个带有工作程序节点的容器,当通过docker部署时它可以工作(IE显示在presto CLI中)。
select * from system.runtime.nodes;
当我说我的k8集群容器并创建一些Pod时,这些Pod似乎可以联系协调员,但它们从未出现在CLI中。 Pod的日志显示他们已经找到了协调器,并且协调器日志中没有任何错误消息,因此Im困惑于断开连接的位置。
deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: presto-worker
spec:
type: NodePort
selector:
matchLabels:
app: presto-worker
replicas: 2
template:
metadata:
labels:
app: presto-worker
spec:
containers:
- name: presto-image
image: docker.io/mystuff/presto-image:latest
ports:
- containerPort: 8080
最佳答案
看起来您已经将Deployment和Service的各个部分结合了起来;他们是两个不同的对象。您可以将其分解:
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: presto-worker
spec:
selector:
matchLabels:
app: presto-worker
replicas: 2
template:
metadata:
labels:
app: presto-worker
spec:
containers:
- name: presto-image
image: docker.io/mystuff/presto-image:latest
ports:
- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
name: presto-worker
spec:
type: NodePort
selector:
matchLabels:
app: presto-worker
ports:
- name: http
port: 8080
服务选择器指向特定的 Pane ;它需要与部署规范的Pod模板标签匹配。部署选择器为部署管理的 Pane 命名。在这两种情况下,它们都指向 pods ,但它们具有不同的用途。
关于docker - presto-将 worker 从docker迁移到kubernetes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51236551/