前言:前段时间在某docker&k8s 技术交流群有网友提问,因为pod 内的业务需求,他们需要固定pod 的 hostname ,但是一直没找到很合适的方法,小编也是专门抽时间研究了一下这块,这里整理出来跟大家分享下,希望能帮助到一些朋友。
这里区分两种场景,针对这两种场景具体看下怎么修改pod 的 hostname
这种情况比较简单,直接在 pod yaml文件中配置可以了。
通过 spec.hostname 参数实现,如果未设置默认使用 metadata.name 参数的值作为 Pod 的 hostname。
apiVersion: v1
kind: Pod
metadata:
name: busybox2
labels:
name: busybox
spec:
hostname: busybox-2
containers:
- image: busybox
command:
- sleep
- "3600"
name: busybox
[root@VM_1_6_centos ~]# k get pod | grep busybox
busybox2 1/1 Running 0 9m35s
[root@VM_1_6_centos ~]# k exec busybox2 -- hostname
busybox-2
这里可以看到,如果单独创建pod ,这里的pod name 是使用 metadata.name 参数的值,pod 的 hostname 是使用 spec.hostname 参数的值。
上面介绍,单独创建pod 的时候,修改 pod name 和 pod hostname 都很简单,但是生产环境,我们一般不会单独创建pod ,而是通过pod 控制器(deployment StatefulSet 等)的方式创建容器,因为可以保证高可用。
那么使用 pod 控制器创建出来的 pod 怎么在控制器维度 自定义 pod name 和 pod hostname 呢?
我这里先说结论:
而且在 pod 控制器层设定的 hostname 同样是有高可用效果的,删除 已存在pod 重新生成的 pod 还会使用相同的hostname 。
这里 pod 控制器的yaml 文件中会有多个spec 字段,一定要选择挨着 containers 字段上面的spec 进行添加,不要选错了。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。