如果我们设置hostNetwork: true
,Kubernetes中的StatefulSet规范如何为每个容器分配主机名?我有以下规范(类似):
apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
name: abc
spec:
serviceName: abc
replicas: 2
template:
metadata:
labels:
app: abc
spec:
hostNetwork: true
#hostame: test
terminationGracePeriodSeconds: 10
containers:
- name: abc
image: abc.xyz.com:9001/abc:01.00.00.00
ports:
- name: api-port
containerPort: 9000
hostPort: 9000
readinessProbe:
httpGet:
path: /api
port: api-port
scheme: HTTPS
现在运行kubectl create
命令后,我看到第一个容器出现时选择了主机的主机名,因为我们已经指定了hostNetwork: true
,但第二个容器出现时的主机名就像abc-0.abc.default.svc.cluster.local
。
此外,唯一运行的服务是Kubernetes服务。我自己没有创建abc服务。
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes 10.96.0.1 <none> 443/TCP 1d
答案 0 :(得分:0)
它应该每个节点只创建一个pod,我在下面的1.8群集中进行了测试,它为每个节点创建了一个pod,其中包含正确的pod hostname名称(与节点名称相同)。它不会创建我们创建任何服务所需的任何服务。
您的群集是版本1.7.3,这可能是错误,这就是它错误地创建主机名的原因。
apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
name: abc
spec:
serviceName: abc
replicas: 3
template:
metadata:
labels:
app: abc
spec:
hostNetwork: true
#hostame: test
terminationGracePeriodSeconds: 10
containers:
- name: sfgtools
image: sfgroups/alphine_nettools
ports:
- name: api-port
containerPort: 80
hostPort: 80