首页 > 其他分享 >修改k8s pod的hosts文件

修改k8s pod的hosts文件

时间:2024-06-06 14:54:54浏览次数:25  
标签:edithost jar 修改 sh hosts pod k8s

当我们服务需要使用自定义的域名解析时,就需要修改pod内hosts文件。

而如果我们在pod内部修改后,下次重启依然会丢,所有下面用两种方式实现持久化修改:

 

1.当集群内所有或者大部分服务都需要修改hosts文件时,我们可以修改CoreDNS的configmap文件

 kubectl edit cm -n kube-system coredns

在data里加入hosts{

.....

}

然后重启pod后生效。

2.只针对特定的服务添加hosts内容,此时在dockerfile的文件里添加

提醒:不可用RUN echo "1.1.1.1 www.yx.com">>/etc/hosts

因为尽管构建时修改了hosts,容器在启动时会重新生成这个文件,就会覆盖点修改的hosts.

我们可以写一个修改hosts的脚本,然后在entrypoint里执行这个脚本,用于容器启动执行的命令:

在Dockerfile的同级目录下新将sh脚本,cat >>edithost.sh<<EOF

 

 

#!/bin/sh
echo "1.1.1.1 www.yx.com">>/etc/hosts
exec "$@"

 exec "$@" 必须添加,表示用指定的命令代替当前的shell,一旦exec执行成功,指定的命令会取代当前的进程。

在下面dockerfile表示,追加hosts脚本执行完成后用CMD的启动jar命令替代当前的进程,这样就保持了jar程序运行的命令是主进程。

Dockerfile的内容为:

FROM openjdk:17.0.2-slim
ENV LANG=C.UTF-8
ENV TZ=Asia/Shanghai
workdir /app
COPY edithost.sh /app/edithost.sh
ADD myweb-0.0.1-SNAPSHOT.jar ./app.jar
RUN chmod +x edithost.sh

ENTRYPOINT ["sh","edithost.sh"]
CMD ["java","-Djava.security.egd=file:/dev/./urandom","-jar","app.jar"]

然后重新docker build构建镜像 ,k8s重启pod即可。

 

标签:edithost,jar,修改,sh,hosts,pod,k8s
From: https://www.cnblogs.com/yangx124/p/18235152

相关文章

  • k8s-pod参数详解
    目录概述创建Pod编写一个简单的Pod添加常用参数为Pod的容器分配资源网络相关Pod健康检查启动探针存活探针就绪探针作用整个Pod参数配置创建docker-registry卷挂载结束概述  k8s中的pod参数详解。官方文档  版本k8s1.27.x、busybox:stable-musl、nginx:sta......
  • k8s 证书过期处理
    问题kubeadm安装的集群默认签发的证书有效期为1年,到期后集群组件之间无法正常通信。证书修复流程1.检查当前证书状态$kubeadmcertscheck-expiration[check-expiration]Readingconfigurationfromthecluster...[check-expiration]FYI:Youcanlookatthisconfig......
  • k8s配置节点亲和性yaml示例:根据节点名称来配置节点亲和性(node affinity)
    在Kubernetes中,根据节点名称来配置节点亲和性(nodeaffinity)通常不是直接通过节点名称实现的,而是通过为节点添加特定的标签,然后在Pod的亲和性规则中匹配这些标签。不过,有一种特殊情况是使用NodeAffinity的nodeSelectorTerms中的matchExpressions,通过设置operator为In并使用......
  • k8s - 二进制部署[阿里云]
    概述部署前先了解一下k8s需要的组件和所处的位置,并且为了保证安全,k8s各组件之间通信都需要信任,这就引出了k8s从入门到放弃的证书部署步骤我这次是在阿里云上部署,所以包括了一些云产品云产品介绍eip动态公网ip,和nat网关绑定后,内网服务器才可以访问公网nat网关,所有k8s......
  • 搭建高可用k8s
    搭建k8s高可用高可用只针对于api-server,需要用到nginx+keepalived,nginx提供4层负载,keepalived提供vip(虚拟IP)系统采用openEuler22.03LTS1.前期准备因为机器内存只有16G,所有我采用3master+1node主机名IPVIPmaster01192.168.200.163192.168.200.200mast......
  • 快速一键化部署后端服务到k8s
    首先具备1、创建DockerfileFROMopenjdk:17RUNecho"Asia/Shanghai">/etc/timezoneWORKDIR/appCOPY*.jar/app/COPYpod_start.sh/app/RUNchmod+x/app/pod_start.shENTRYPOINT["/app/pod_start.sh"]2、pod_start.sh#!/bin/bashecho&......
  • k8s 对外服务-Ingress
    一、Ingress简介:service的作用体现在两个方面,对集群内部,它不断跟踪pod的变化,更新endpoint中对应pod的对象,提供了ip不断变化的pod的服务发现机制;对集群外部,他类似负载均衡器,可以在集群内外部对pod进行访问。在Kubernetes中,Pod的IP地址和service的ClusterIP仅可以在集群网络内......
  • AnolisOS7.9(CentOS7)部署K8s(1.22.4)集群
    一.安装K8s集群1.准备工作,2台服务器①192.168.5.140-做为master节点#在该节点运行命令设置主机名:hostnamectlset-hostnamemaster②192.168.5.141-做为node1节点,在该节点运行命令设置主机名:#在该节点运行命令设置主机名:hostnamectlset-hostna......
  • 【Kubernetes】k8s的调度约束(亲和与反亲和)
    一、调度约束list-watch组件Kubernetes是通过List-Watch的机制进行每个组件的协作,保持数据同步的,每个组件之间的设计实现了解耦。用户是通过kubectl根据配置文件,向APIServer发送命令,在Node节点上面建立Pod和Container。APIServer经过API调用,权限控制,调......
  • 15种pod的状态
    15种pod的状态调度失败常见错误状态(Unschedulable)pod被创建后进入调度阶段,k8s调度器依据pod声明的资源请求量和调度规则,为pod挑选一个适合运行的节点。当集群节点不满足pod调度需求时,pod将会处于pending状态。造成调度失败的典型原因有:节点资源不足k8s将节点资源(cpu,内......