我正在使用 Statefulset,并且启动了多个 Pod,但它们不是彼此的复制品。我想设置 pod 的主机名,并将这些主机名作为环境变量传递给所有 pod,以便它们可以相互通信。
我尝试在 pod 规范下使用主机名,但主机名永远不会设置为指定的主机名。但是,它的主机名设置为 podname-0。
# Source: testrep/templates/statefulset.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: orbiting-butterfly-testrep
labels:
app.kubernetes.io/name: testrep
helm.sh/chart: testrep-0.1.0
app.kubernetes.io/instance: orbiting-butterfly
app.kubernetes.io/managed-by: Tiller
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: testrep
app.kubernetes.io/instance: orbiting-butterfly
strategy:
type: Recreate
template:
metadata:
labels:
app.kubernetes.io/name: testrep
app.kubernetes.io/instance: orbiting-butterfly
spec:
nodeSelector:
testol: ad3
hostname: test1
containers:
- name: testrep
image: "test/database:v1"
imagePullPolicy: IfNotPresent
env:
- name: DB_HOSTS
value: test1,test2,test3
Run Code Online (Sandbox Code Playgroud) 我正在使用 calico 设置一个 pod,但它一直失败并出现一些授权错误。默认情况下,以下是我系统的节点 cidr:
[root@k8master-1 ~]# kubeadm config view | grep Subnet
podSubnet: 10.244.0.0/16
serviceSubnet: 10.96.0.0/12
Run Code Online (Sandbox Code Playgroud)
我已经使用以下步骤设置了 ippools:
https://docs.projectcalico.org/getting-started/kubernetes/flannel/flannel
- apiVersion: projectcalico.org/v3
kind: IPPool
metadata:
name: rack-ip-pool
spec:
blockSize: 26
cidr: 10.244.1.0/24
ipipMode: Never
natOutgoing: true
nodeSelector: all()
vxlanMode: Never
Run Code Online (Sandbox Code Playgroud)
[root@k8master-1 ~]# calicoctl get ippool -o wide
NAME CIDR NAT IPIPMODE VXLANMODE DISABLED SELECTOR
rack-ip-pool 10.244.1.0/24 true Never Never false all()
Run Code Online (Sandbox Code Playgroud)
Pod Yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: testcalico
labels:
cracklerack: "1"
spec:
serviceName: testcalico-svc
selector: …
Run Code Online (Sandbox Code Playgroud)