k8s-Pod域名学习总结

news2024/11/29 4:28:02

k8s-Pod域名学习总结

大纲

  • k8s内置DNS服务

  • 配置Pod的域名服务

  • CornDNS配置

  • 默认Pod的域名

  • 自定义Pod的域名

    实战需求
    1 Pod有自己的域名
    2 集群内部的Pod可以通过域名访问其他的Pod

基础准备:

  • 1 k8s 集群版本1.17

在这里插入图片描述

k8s内置DNS服务

k8s1.17安装完成后自动创建 CoreDNS服务,k8s会为 ServicePod 创建 DNS 记录,k8s集群内访问Service或Pod可以使用域名而非ip

Kubelet 为每个 Pod 配置/etc/resolv.conf文件

配置Pod的域名服务

配置Pod DNS服务

可以使用 dnsPolicy 来配置Pod 的 DNS 策略

  • Default: Pod 从运行所在的节点继承名称解析配置。(注意 这里的Default 不是默认的 DNS 策略。如果未明确指定 dnsPolicy,则使用 “ClusterFirst”
  • ClusterFirst: 与配置的集群域后缀不匹配的任何 DNS 查询(例如 “www.kubernetes.io”) 都会由 DNS 服务器转发到上游名称服务器。集群管理员可能配置了额外的存根域和上游 DNS 服务器。 参阅相关讨论 了解在这些场景中如何处理 DNS 查询的信息。默认DNS 策略
  • ClusterFirstWithHostNet: 对于以 hostNetwork 方式运行的 Pod,应将其 DNS 策略显式设置为 “ClusterFirstWithHostNet”。否则,以 hostNetwork 方式和 “ClusterFirst” 策略运行的 Pod 将会做出回退至 “Default” 策略的行为。
  • None: 此设置允许 Pod 忽略 Kubernetes 环境中的 DNS 设置。Pod 会使用其 dnsConfig 字段所提供的 DNS 设置
	spec:
	   imagePullSecrets:
	     - name: myaliyunsecret
	   restartPolicy: Always
	   # 配置dns策略
	   dnsPolicy: Default  
	   containers:
	     - image:  registry.cn-hangzhou.aliyuncs.com/jimliu/order-service:latest
	       name: order-service

可以使用 dnsConfig 来配置Pod的DNS

dnsPolicy为任意策略时都可以设置,但是当dnsPolicy=“None“时必须设置。dnsPolicy有三个配置项

  • nameservers:用于域名解析的DNS服务器列表,(Linux 最多三个)
  • searches:配置DNS 搜索域
  • options:配置其他可选DNS参数
    ,最多可以设置3个。当Pod的dinsPolicy=“None“时,该nameserver列表必须包含至少一个IP地址,配置的nameserver列表会与系统自动设置的nameserver进行合并和去重;
	apiVersion: v1
	kind: Pod
	metadata:
	name: custom-dns
	spec:
		containers:
		- name: tomcat-run
		  image: tomcat
		dnsPolicy: "None" # Kubernetes 环境中的 DNS 设置 使用pod自定DSN
		dnsConfig:
			nameservers:  # DNS服务器列表
			- 8.8.8.8
			searches: # 配置DNS 搜索域
			- mynamespace.svc.cluster-domain.example 
			options:
			- name: ndots 
			- value: "1"
			- name: edns0

配置dnsConfig后 Pod容器内的 /etc/resolv.conf 就会使用以上配置的内容

配置Pod中的 域名映射

可以使用 hostAliases 类型直接配置 /etc/hosts 实现本地域名映射

hostAliases: 
  - ip: 192.168.0.206
    hostnames: 
     - app-server-1.medcrab.com  

配置CoreDNS

k8s 1.70默认使用CoreDNS 作为DNS服务

在这里插入图片描述

如果有一些集群外并且是自己使用的内网域名,除了可以使用在Pod yaml中使用hostAliases 配置外还可以在CoreDNS 中配

可以看到Pod中无法访问自己的内网域名

可能需要安装ping
apt-get install inetutils-ping

在这里插入图片描述

kubectl edit configmap coredns -n kube-system 编辑coredns配置

添加 
hosts {
       192.168.0.206 app-server-1.medcrab.com
       fallthrough
}

在这里插入图片描述

再次访问域名 成功

在这里插入图片描述

注意 Pod yaml中 dnsPolicy 至少是 ClusterFirst

其他关于coredns的配置 可参考官方文档 https://coredns.io/

默认Pod的域名

在默认情况下 k8s集群会自动给Pod创建域名,集群内部Pod可以使用域名访问其他Pod

Pod默认的域名格式为:[pod ip].[namespace].pod.[cluster-domain]

  • [pod ip] 需要用 “-” 替换 “.” 号
  • [namespace] 为Pod所在的命名空间
  • [cluster-domain] 默认为 cluster.local

例如k8s集群default命名空间中有如下pod: my-quarkus-demo

在这里插入图片描述

则Pod my-quarkus-demo 的域名
10-244-1-21.default.pod.cluster.local   

进入另外一个Pod 验证my-quarkus-demo 的域名

在这里插入图片描述

域名验证成功

可能需要安装的软件 nslookup curl
apt-get update
apt-get install dnsutils
apt-get install curl

自定义Pod的域名

默认使用ip的方式,不利于正式的生产环境。(Pod的切换可能会导致IP的变化)

可以在Pod yaml配置中设置hostname字段定义容器环境的主机名, 并设置subdomain字段定义容器环境的子域名。

spec: 
   hostname: 主机名称
   subdomain: 子域名

在这里插入图片描述

部署Pod后此时的域名格式为:[hostname].[subdomain].[namespace].svc.[cluster-domain]

  • [hostname] yaml中配置的hostname
  • [subdomain] yaml中配置的subdomain
  • [namespace] 为Pod所在的命名空间
  • [cluster-domain] 默认为 cluster.local

例如k8s集群default命名空间中有如下pod: order-service-pod

此时pod域名为
order-service-pod.medcrabk8s-inner-order.default.svc.cluster.local

进入pod内部查看 /etc/hosts文件

在这里插入图片描述

要想在K8S集群内部使用自定义的域名访问 还需要创建一个 Headless Services (无头服务)

headless-service.yaml内容如下

apiVersion: v1
kind: Service
metadata:  
  name: medcrabk8s-inner-order  # 注意name为 pod中 subdomain 的名称
spec:
  selector:  
    app: order-service
  clusterIP: None  #注意  clusterIP 为None
  ports: 
    - port: 5555 

进入另外一个Pod 验证order-service-pod 的域名

在这里插入图片描述

验证成功

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

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

相关文章

保姆级使用PyTorch训练与评估自己的MixMIM网络教程

文章目录前言0. 环境搭建&快速开始1. 数据集制作1.1 标签文件制作1.2 数据集划分1.3 数据集信息文件制作2. 修改参数文件3. 训练4. 评估5. 其他教程前言 项目地址:https://github.com/Fafa-DL/Awesome-Backbones 操作教程:https://www.bilibili.co…

【python】如何用canvas在自己设计的软件上作画

文章目录前言Canvas组件Canvas画布界面画长方体画多边形PhotoImage组件展示gif的图片展示gif法2总结前言 python学习之路任重而道远,要想学完说容易也容易,说难也难。 很多人说python最好学了,但扪心自问,你会用python做什么了&a…

数据结构——线性数据结构(C语言实现顺序表详解)

1.什么线性表 线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使 用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串等… 在讲顺序表之前,我们先大致了解一下线性表。…

qt .pro文件 qmake编译过程

#:注释一行 QT:此项目中使用的Qt modules列表 CONFIG:此项目中使用的配置选项 TARGET:目标输出文件的名字 TEMPLATE:当生成二进制文件时项目的模版,例如app,lib 平台下使用 windows { SOURCES SysInf…

剑指 Offer II 024. 反转链表

题目链接 剑指 Offer II 024. 反转链表 easy 题目描述 给定单链表的头节点 head,请反转链表,并返回反转后的链表的头节点。 示例 1: 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1] 示例 2: 输入:h…

不用费劲,这5款效率工具为你解决学习工作烦恼

今天我要向大家推荐5款超级好用的效率软件,无论是在学习还是办公中都能够极大地提高效率。这些软件可以帮助你解决许多问题,而且每个都是真正的神器。 1.键盘仿真鼠标——NeatMouse NeatMouse 是一个小型的工具能够使用鼠标光标控制指针。当你的鼠标不…

python编程基础

python编程基础 1、什么是编程语言? 编程语言是用来控制计算机的一系列指令(Instruction),它有固定的格式和词汇(不同编程语言的格式和词汇不一样),必须遵守,否则就会出错&#xf…

opencv加水印

本文介绍opencv给图片加水印的方法。 目录1、添加水印1.1、铺满1.2、在指定区域添加1.3、一比一铺满1、添加水印 添加水印的原理是调低两张图片的透明度,然后叠加起来。公式如下: dst src1 * opacity src2 * (1 - opacity) gamma; opacity是透明度&a…

UE官方教程笔记02-实时渲染基础下

对官方教程视频[官方培训]02-实时渲染基础下 | 陈拓 Epic的笔记没听懂的地方就瞎写反射实时渲染中反射是一个非常有挑战的特性UE中有多种不同的方案,各有各的优势和缺点反射捕获屏幕空间反射平面反射LumenRT Reflection反射捕获在指定位置捕获一张Cube Map需要预计算…

低代码:助力乡村振兴事业开启“智慧模式”

伴随着脱贫攻坚目标任务的全面完成,我国“三农”工作重心历史性地转向全面推进乡村振兴,这也标志着我国农业农村工作迈上了一个新台阶。 什么是乡村振兴? 乡村振兴是新时代“三农”工作的总抓手,坚持农业农村优先发展,…

windows 下docker 安装clickhouse

docker 下载https://www.docker.com/products/docker-desktop/将下载下来的Docker Desktop Installer.exe文件双击进行安装即可,安装完成后,任务栏会出现一个蓝色的小鲸鱼图标(注意安装完成后可能会重启系统)Docker Desktop如果出…

禁用XXE处理漫谈

前言 近期准备面试题时,XXE漏洞防范措施(或者说修复方式)在一些文章中比较简略, 故本文根据研究进行总结,作为技术漫谈罢了。 简述 XXE漏洞 XXE(XML外部实体注入),程序解析XML数…

国产8K摄像机拍摄回顾与画面数据反馈

本文分析两款国产8K摄像机,一款是全画幅,一款是M43画幅。一、全新国产全画幅8K B1机器参数数据汇总:全画幅8K 60fps,受益于8K全画幅的优势与大幅升级的图像处理系统,BOSMA 8K摄像机系统提升到新的高度。拍摄支持&#…

Ubuntu 安装 CUDA and Cudnn

文章目录0 查看 nvidia驱动版本1 下载Cuda2 下载cudnn参考:0 查看 nvidia驱动版本 nvidia-smi1 下载Cuda 安装之前先安装 gcc g gdb 官方:https://developer.nvidia.com/cuda-toolkit-archive,与驱动版本进行对应,我这里是12.0…

C++语法规则1(C++面向对象 )

C面向对象 面向对象的三大特征是继承,多态和封装,C重面向对象重要的就是这些,我们下面通过一些简单的实例加以理解,从这小节开始,我们将开启新的编程旅途。与 C 语言编程的思想完全不同了,这就是 C!理解概…

[Linux基础]history相关的环境变量设置

目录 背景 简介 命令操作 1. 语法: 2. 功能 3. 参数 环境变量设置 背景 工作中时常收到客户的反馈,我的系统什么也没干,就出现文件丢失,程序错误等等问题;我们在问题排查的时候查看history信息也是重要环节…

大数据导论、Apache ZooKeeper

目录标题1、数据与数据分析2、数据分析基本步骤3、大数据时代4、分布式技术5、 Apache ZooKeeper5.1 ZooKeeper 概述5.2 ZooKeeper 特性5.3 ZooKeeper 集群角色5.4 ZooKeeper 集群搭建5.5 ZooKeeper 数据模型1、数据与数据分析 数据分析是指用适当的统计分析方法对收集来的数据…

零基础小白如何自学网络安全成为顶尖黑客?

在成为黑客之前,你需要做两点准备: 1、学一门编程语言。学哪一门不重要,但你要参考一下下面的条例: C语言是Unix系统的基础。它(连同汇编语言)能让你学习对黑客非常重要的知识:内存的工作原理…

Go爬虫学习笔记(二)

3 进阶路线:如何深入学习Go语言? 时间与复利思维 一万小时定律 - MBA智库百科 (mbalib.com):大量训练。 思维模型 类比:类比旧知识知识组块:将知识拆分知识体系:知识之间的联系:wiki、笔记双链…

漏洞分析丨cve-2012-0003

作者:黑蛋一、漏洞简介这次漏洞属于堆溢出漏洞,他是MIDI文件中存在的堆溢出漏洞。在IE6,IE7,IE8中都存在这个漏洞。而这个漏洞是Winmm.dll中产生的。二、漏洞环境虚拟机调试工具目标软件辅助工具XP-SP3、KaliOD、IDAIE6Windbg组件gflags.exe三…