我得到了以下Kubernetes pod和无头服务YAML配置文件:
apiVersion: v1
kind: Service
metadata:
name: elixir
spec:
clusterIP: None
selector:
app: elixir
ports:
- port: 4369
apiVersion: v1
kind: Pod
metadata:
name: e1
labels:
app: elixir
spec:
hostname: e1
subdomain: elixir
dnsPolicy: ClusterFirst
restartPolicy: Never
containers:
- name: elixir
image: bitwalker/alpine-elixir
env:
- name: MYDNSDOMAIN
value: elixir.default.svc.cluster.local
- name: MYPODNAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: MYPODIP
valueFrom:
fieldRef:
fieldPath: status.podIP
command: [ "sh" ]
args: [ "/programa/run_elixir.sh", "$(MYPODNAME).$(MYDNSDOMAIN)"]
ports:
- containerPort: 4369
volumeMounts:
- name: programa-volume
mountPath: /programa
volumes:
- name: programa-volume
configMap:
name: cm-elixir
items:
- key: run_elixir.sh
path: run_elixir.sh
mode: 0777
- key: prueba.exs
path: prueba.exs
mode: 0777
可以在我的集群的Pod中启动一个简单的Elixir程序。run_elixir.sh
是一个Shell脚本,可将程序设置启动为节点名Pod名称和主机DNS域。
服务和pod均成功启动(如果输入kubectl logs e1
,则可以看到程序输出)。
但是,我无法从集群外部连接到灵丹妙药节点(实际上,我什至不能从内部进行连接):为此,我使用Node.connect(:"e@e1.elixir.default.svc.cluster.local")
。应该行吗?我是否可以做其他事情,例如将群集DNS服务器添加到本地计算机DNS服务器列表中?
任何帮助将不胜感激。