【问题标题】:Bind kubernetes pods to hostnames将 kubernetes pod 绑定到主机名
【发布时间】:2020-04-07 13:56:17
【问题描述】:

我有一个简单的 k8s 部署。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: test-deployment
  labels:
    app: test
spec:
  replicas: 3
  selector:
    matchLabels:
      app: test
  template:
    metadata:
      labels:
        app: test
    spec:
      containers:
        - name: test-container
          image: centos:7
          command: ["/bin/sh"]
          args: ["-c", "tail -f /dev/null"]

这些会导致创建如下所示的 pod:

NAME                               READY   STATUS    RESTARTS   AGE
test-deployment-59bb6b8b4d-pnfg8   1/1     Running   0          11m
test-deployment-59bb6b8b4d-s7w8x   1/1     Running   0          11m
test-deployment-59bb6b8b4d-wvw7n   1/1     Running   0          11m

默认情况下,每个对应的主机名都与 pod 名称匹配。

>> kubectl exec test-deployment-59bb6b8b4d-pnfg8 -c test-container env | grep HOSTNAME
HOSTNAME=test-deployment-59bb6b8b4d-pnfg8
>> kubectl exec test-deployment-59bb6b8b4d-s7w8x -c test-container env | grep HOSTNAME
HOSTNAME=test-deployment-59bb6b8b4d-s7w8x
>> kubectl exec test-deployment-59bb6b8b4d-wvw7n -c test-container env | grep HOSTNAME
HOSTNAME=test-deployment-59bb6b8b4d-wvw7n

这是我的问题。有没有办法,我可以预先配置主机名,使它们看起来像这样?

>> kubectl exec test-deployment-59bb6b8b4d-pnfg8 -c test-container env | grep HOSTNAME
HOSTNAME=test-deployment-pod1
>> kubectl exec test-deployment-59bb6b8b4d-s7w8x -c test-container env | grep HOSTNAME
HOSTNAME=test-deployment-pod2
>> kubectl exec test-deployment-59bb6b8b4d-wvw7n -c test-container env | grep HOSTNAME
HOSTNAME=test-deployment-pod3

还期望当一个 pod 死掉并被替换时,新的 pod 会绑定回旧 pod 映射到的主机名。

提前致谢!

【问题讨论】:

    标签: docker kubernetes kubernetes-pod


    【解决方案1】:

    使用StatefulSet 而不是部署

    【讨论】:

      猜你喜欢
      • 2019-01-27
      • 2020-02-13
      • 2014-11-20
      • 2017-09-09
      • 2021-07-23
      • 1970-01-01
      • 2019-08-09
      • 2020-08-29
      • 1970-01-01
      相关资源
      最近更新 更多