首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将域附加到Kubernetes StatefulSet中的容器主机名

将域附加到Kubernetes StatefulSet中的容器主机名
EN

Server Fault用户
提问于 2019-07-18 18:04:29
回答 1查看 1.6K关注 0票数 1

我创建了一个Kubernetes StatefulSet。在StatefulSet中有三个名称为mysql-0mysql-1mysql-2的豆荚,每个都有一个容器。

如果我“登录”到pod mysql-1中的容器并键入hostname,我将得到响应mysql-1。但是,我想让容器认为它的主机名是mysql-1.example.com。换句话说,强制主机名附加域。

我如何让StatefulSet实现这一目标?

EN

回答 1

Server Fault用户

发布于 2019-07-19 13:22:06

根据http://man7.org/linux/man-pages/man7/hostname.7.html

主机名的有效字符是从a到z的ASCII(7)字母、从0到9的数字以及连字符(-)。主机名不能以连字符开头。

以上也适用于子域。下面是用于验证的正则表达式:[a-z0-9]([-a-z0-9]*[a-z0-9])?

但是,您可以在pod定义中使用hostname:subdomain:字段,如所描述的这里

具有上述字段的ReplicaSet如下所示:

代码语言:javascript
运行
复制
apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: test-replica-set
  labels:
    app: guestbook
    tier: frontend
spec:
  replicas: 3
  selector:
    matchLabels:
      tier: frontend
  template:
    metadata:
      labels:
        tier: frontend
    spec:
      hostname: my-hostname
      subdomain: my-subdomain
      containers:
      - image: busybox:1.28
        command:
          - sleep
          - "3600"
        name: busybox1
        env:
        - name: HOSTNAME
          value: "whathever.domain.com"

它的工作方式如下:

代码语言:javascript
运行
复制
> kubectl exec test-replica-set-pz2kk -it -- hostname
my-hostname

还可以检索添加-d选项的DNS域名,或使用-f选项检索FQDN名称。这将为您的豆荚生成K8s域名,如这里所描述的。

您也可以将环境变量注入到一个容器中,并将您的信息放在那里,就像我在上面的示例中所做的那样。

代码语言:javascript
运行
复制
> kubectl exec test-replica-set-pz2kk -it -- sh
/ # echo $HOSTNAME
whathever.domain.com
票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/975813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档