k8s服务发现之使用 HostAliases 向 Pod /etc/hosts 文件添加条目

某些情况下,DNS 或者其他的域名解析方法可能不太适用,您需要配置 /etc/hosts 文件,在Linux下是比较容易做到的,在 Kubernetes 中,可以通过 Pod 定义中的 hostAliases 字段向 Pod 的 /etc/hosts 添加条目。

适用其他方法修改 Pod 的 /etc/hosts 文件是不被推荐的,因为 kubelet 可能在重新创建 Pod 时,就会覆盖这些修改。

默认 hosts 文件内容

让我们从一个 Nginx Pod 开始,该 Pod 被分配一个 IP:

kubectl run nginx --image nginx

输出结果

pod/nginx created

检查 Pod IP:

kubectl get pods --output=wide

输出结果:

NAME                        READY   STATUS      RESTARTS        AGE     IP              NODE                         NOMINATED NODE   READINESS GATES
nginx                       1/1     Running     0               79s     10.244.4.3      centos-automk8sworker-7019   <none>           <none>

主机文件的内容如下所示:

kubectl exec nginx -- cat /etc/hosts

输出内容

# Kubernetes-managed hosts file.
127.0.0.1	localhost
::1	localhost ip6-localhost ip6-loopback
fe00::0	ip6-localnet
fe00::0	ip6-mcastprefix
fe00::1	ip6-allnodes
fe00::2	ip6-allrouters
10.200.0.4	nginx

默认情况下,hosts 文件只包含 IPv4 和 IPv6 的样板内容,像 localhost 和主机名称。

通过 HostAliases 增加额外条目

除了默认的样板内容,你可以向 hosts 文件添加额外的条目。 例如,要将 foo.localbar.local 解析为 127.0.0.1, 将 foo.remotebar.remote 解析为 10.1.2.3,你可以在 .spec.hostAliases 下为 Pod 配置 HostAliases。

apiVersion: v1
kind: Pod
metadata:name: hostaliases-pod
spec:restartPolicy: NeverhostAliases:- ip: "127.0.0.1"hostnames:- "foo.local"- "bar.local"- ip: "10.1.2.3"hostnames:- "foo.remote"- "bar.remote"containers:- name: cat-hostsimage: busybox:1.28command:- catargs:- "/etc/hosts"

使用以下命令用此配置启动 Pod

kubectl apply -f hostaliases-pod.yaml

输出结果

pod/hostaliases-pod created

检查 Pod 详情,查看其 IPv4 地址和状态:

[root@centos-AutomK8sMaster-7016 test]# kubectl get pod --output=wide 
NAME                        READY   STATUS      RESTARTS        AGE     IP              NODE                         NOMINATED NODE   READINESS GATES
hostaliases-pod             0/1     Completed   0               3m37s   10.244.4.5      centos-automk8sworker-7019   <none>           <none>

hosts 文件的内容看起来类似如下所示:

kubectl logs hostaliases-pod
# Kubernetes-managed hosts file.
127.0.0.1	localhost
::1	localhost ip6-localhost ip6-loopback
fe00::0	ip6-localnet
fe00::0	ip6-mcastprefix
fe00::1	ip6-allnodes
fe00::2	ip6-allrouters
10.244.4.5	hostaliases-pod# Entries added by HostAliases.
127.0.0.1	foo.local	bar.local
10.1.2.3	foo.remote	bar.remote

在最下面看到我们添加的条目了

为什么 kubelet 管理 hosts 文件?

kubelet 管理每个Pod 容器的 hosts 文件,以防止容器运行时在容器已经启动后修改文件。 由于历史原因,Kubernetes 总是使用 Docker Engine 作为其容器运行时,而 Docker Engine 将在容器启动后修改 /etc/hosts 文件。

当前的 Kubernetes 可以使用多种容器运行时;即便如此,kubelet 管理在每个容器中创建 hosts文件, 以便你使用任何容器运行时运行容器时,结果都符合预期。

PS:

请避免手工更改容器内的 hosts 文件内容。

如果你对 hosts 文件做了手工修改,这些修改都会在容器退出时丢失。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/11305.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【技术架构】技术架构的演进

文章目录 前言1.名词解释(常见概念)1.1 应用&#xff08;Application&#xff09; / 系统&#xff08;System&#xff09;1.2 模块&#xff08;Module&#xff09; / 组件&#xff08;Component&#xff09;1.3 分布式&#xff08;Distributed&#xff09;1.4 集群&#xff08;…

hjm家族信托科技研究报告

目录 绪论 研究背景与意义 一、选题背景 二、选题意义 研究内容与主要研究方法 一、本文内容 二、研究方法 创新与不足 一、创新 二、不足之处 文献综述与理论基础 文献综述 国外研究现状国内研究现状国内外研究综述 理论基础 金融创新理论组合投资理论生命周期理论…

机器学习 day30(正则化参数λ对模型的影响)

λ对Jcv和Jtrain的影响 假设该模型为四阶多项式当λ很大时&#xff0c;在最小化J的过程中&#xff0c;w会很小且接近0&#xff0c;此时模型f(x)近似于一个常数&#xff0c;所以此时模型欠拟合&#xff0c;Jtrain和Jcv都很大当λ很小时&#xff0c;表示模型几乎没有正则化&…

5.2.tensorRT基础(2)-使用onnx解析器来读取onnx文件(源码编译)

目录 前言1. ONNX解析器2. libnvonnxparser.so3. 源代码编译4. 补充知识总结 前言 杜老师推出的 tensorRT从零起步高性能部署 课程&#xff0c;之前有看过一遍&#xff0c;但是没有做笔记&#xff0c;很多东西也忘了。这次重新撸一遍&#xff0c;顺便记记笔记。 本次课程学习 t…

Rocky Linux 8.4在Tesla P100服务器里的部署及显卡cudnn安装-极度精简

安装Rocky linux教程 https://developer.aliyun.com/article/1074889 注意事项 Tesla P100服务器&#xff0c;按Delete进入bios,设置Daul模式&#xff0c;第一选项选UEFI hard disk(用驱动盘选这个)&#xff0c;usb的就选UEFI usb 安装rocky linux时&#xff0c;这两项默认&…

css中flex后文本溢出的问题

原因&#xff1a; 为了给flex item提供一个合理的默认最小尺寸&#xff0c;flex将flex item的min-width 和 min-height属性设置为了auto flex item的默认设置为&#xff1a; min-width&#xff1a; auto 水平flex布局 min-height&#xff1a;auto 垂直flex布局 解决办法&…

【ICCV2023】Scale-Aware Modulation Meet Transformer

Scale-Aware Modulation Meet Transformer, ICCV2023 论文&#xff1a;https://arxiv.org/abs/2307.08579 代码&#xff1a;https://github.com/AFeng-x/SMT 解读&#xff1a;ICCV2023 &#xff5c; 当尺度感知调制遇上Transformer&#xff0c;会碰撞出怎样的火花&#xff1…

【Nodejs】Node.js简介

1.前言 Node 的重要性已经不言而喻&#xff0c;很多互联网公司都已经有大量的高性能系统运行在 Node 之上。Node 凭借其单线程、异步等举措实现了极高的性能基准。此外&#xff0c;目前最为流行的 Web 开发模式是前后端分离的形式&#xff0c;即前端开发者与后端开发者在自己喜…

关于若依导出表格隐藏功能延伸--适用于表格导入更新

关于若依导出表格隐藏功能延伸--适用于表格导入更新 编写目的若依现有隐藏策略根据业务需要进行修正编写原理 优化 编写目的 若依框架中&#xff0c;已经自带了表格导出功能&#xff0c;但是有时根据业务要求需要导出后进行修改后更新的操作&#xff0c;如果数据量大且数据库设…

docker清缓存、日志、无用镜像

docker清缓存、日志、无用镜像 docker system df查看docker各类型文件占用情况 docker system df该命令列出了 docker 使用磁盘的 4 种类型&#xff1a; Images: 所有镜像占用的空间&#xff0c;包括拉取的镜像、本地构建的镜像 Containers: 运行中的容器所占用的空间&#x…

Gitlab 合并分支与请求合并

合并分支 方式一&#xff1a;图形界面 使用 GitGUI&#xff0c;右键菜单“GitExt Browse” - 菜单“命令” - 合并分支 方式二&#xff1a;命令行 在项目根目录下打开控制台&#xff0c;注意是本地 dev 与远程 master 的合并 // 1.查看本地分支&#xff0c;确认当前分支是否…

2、HAproxy调度算法

HAProxy的调度算法可以大致分为以下几大类&#xff1a; 静态算法&#xff1a;这类算法的调度策略在配置时就已经确定&#xff0c;并且不会随着负载的变化而改变。常见的静态算法有&#xff1a; Round Robin(轮询) Least Connections(最少连接数) Static-Weight(静态权重) Sourc…

day4 驱动开发 c语言学习

不利用系统提供的register_chrdev&#xff0c;自己实现字符设备的注册 底层代码 led.c #include <linux/init.h> #include <linux/module.h> #include <linux/fs.h> #include <linux/uaccess.h> #include <linux/io.h> #include "head.h…

QSlider 样式 Qt15.15.2 圆形滑块

在看文档的时候测试了一下demo&#xff0c;然后发现了一个有意思的东西&#xff0c;自定义滑块为带边框的圆形。 在设置的时候边框总是和预期的有点误差&#xff0c;后来发现了这样一个计算方式可以画一个比较标准的圆。&#xff08;ABCDEF在下方代码块内&#xff09; 滑块的…

Kubernetes 之CNI 网络插件大对比

介绍 网络架构是Kubernetes中较为复杂、让很多用户头疼的方面之一。Kubernetes网络模型本身对某些特定的网络功能有一定要求&#xff0c;但在实现方面也具有一定的灵活性。因此&#xff0c;业界已有不少不同的网络方案&#xff0c;来满足特定的环境和要求。 CNI意为容器网络接…

MultipartFile重命文件名(中文文件名修改成英文)

思路&#xff1a;把MultipartFile先存到项目目录下&#xff08;或者磁盘&#xff09;&#xff0c;存的时候修改文件名&#xff0c;再读取出来转成MultipartFile 1.实现代码&#xff1a;MultipartFile先存到项目目录&#xff0c;再读取出来File public static MultipartFile n…

K8S集群管理:用名字空间分隔系统资源

Kubernetes 的名字空间并不是一个实体对象&#xff0c;只是一个逻辑上的概念。它可以把集群切分成一个个彼此独立的区域&#xff0c;然后我们把对象放到这些区域里&#xff0c;就实现了类似容器技术里 namespace 的隔离效果&#xff0c;应用只能在自己的名字空间里分配资源和运…

【iOS】—— 持久化

文章目录 数据持久化的目的iOS中数据持久化方案数据持久化方式分类内存缓存磁盘缓存 沙盒机制获取应用程序的沙盒路径沙盒目录的获取方式 持久化数据存储方式XML属性列表Preferences偏好设置&#xff08;UserDefaults&#xff09;数据库存储什么是序列化和反序列化&#xff0c;…

Hadoop概念学习(无spring集成)

Hadoop 分布式的文件存储系统 三个核心组件 但是现在已经发展到很多组件的s 或者这个图 官网地址: https://hadoop.apache.org 历史 hadoop历史可以看这个: https://zhuanlan.zhihu.com/p/54994736 优点 高可靠性&#xff1a; Hadoop 底层维护多个数据副本&#xff0c;所…

工程师分享:如何解决传导干扰?

电磁干扰 EMI 中电子设备产生的干扰信号是通过导线或公共电源线进行传输&#xff0c;互相产生干扰称为传导干扰。传导干扰给不少电子工程师带来困惑&#xff0c;如何解决传导干扰&#xff1f; 找对方法&#xff0c;你会发现&#xff0c;传导干扰其实很容易解决&#xff0c;只要…