当前位置: 首页 > news >正文

k8s-Pod域名学习总结

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: myaliyunsecretrestartPolicy: Always# 配置dns策略dnsPolicy: Default  containers:- image:  registry.cn-hangzhou.aliyuncs.com/jimliu/order-service:latestname: 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: v1kind: Podmetadata:name: custom-dnsspec:containers:- name: tomcat-runimage: tomcatdnsPolicy: "None" # Kubernetes 环境中的 DNS 设置 使用pod自定DSNdnsConfig:nameservers:  # DNS服务器列表- 8.8.8.8searches: # 配置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.206hostnames: - 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.comfallthrough
}

在这里插入图片描述

再次访问域名 成功

在这里插入图片描述

注意 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-serviceclusterIP: None  #注意  clusterIP 为Noneports: - port: 5555 

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

在这里插入图片描述

验证成功

相关文章:

k8s-Pod域名学习总结

k8s-Pod域名学习总结 大纲 k8s内置DNS服务 配置Pod的域名服务 CornDNS配置 默认Pod的域名 自定义Pod的域名 实战需求 1 Pod有自己的域名 2 集群内部的Pod可以通过域名访问其他的Pod 基础准备: 1 k8s 集群版本1.17 k8s内置DNS服务 k8s1.17安装完成后自动创建…...

0405习题总结-不定积分

文章目录1 不定积分的基本概念2 直接积分法-基本积分公式3 第一换元法-凑微分形式法4 第二类换元法5 分部积分求不定积分6 表格法积分7 有理函数求积分后记1 不定积分的基本概念 例1 f(x){x1,x≥012e−x12,x<0求∫f(x)dxf(x) \begin{cases} x1,\quad x\ge0\\ \frac{1}{2}e^…...

QT 常用控件类型命名参考

拟定的QT的控件命名规则&#xff1a;蛇形命名方式 控件类型开头&#xff0c;以下是QT控件类型命名的参考范例 Buttons Buttons起始字符串对象名称举例Push Buttonbuttonbutton_loginTool Buttontool_button / buttonbutton_switchRadio Buttonradio_button / radioradio_boy…...

MATLAB与图像处理的那点小事儿~

目录 一、学习内容 二、matlab基本知识 三、线性点运算 四、非线性点运算&#xff0c;伽马矫正 五、直方图 1、直方图均衡化 &#xff08;1&#xff09;使用histep函数实现图像均衡化 &#xff08;2&#xff09;使用自行编写的均衡化函数实现图像均衡化 2、直方图规定…...

第十四届蓝桥杯模拟赛(第三期)Java组个人题解

第十四届蓝桥杯模拟赛&#xff08;第三期&#xff09;Java组个人题解 今天做了一下第三期的校内模拟赛&#xff0c;有些地方不确定&#xff0c;欢迎讨论和指正~ 文章目录第十四届蓝桥杯模拟赛&#xff08;第三期&#xff09;Java组个人题解填空题部分第一题【最小数】第二题【E…...

Go语言之条件判断循环语句(if-else、switch-case、for、goto、break、continue)

一、if-else条件判断语句 Go中的if-else条件判断语句跟C差不多。但是需要注意的是&#xff0c;Go中强制规定&#xff0c;关键字if和else之后的左边的花括号"{“必须和关键字在同一行&#xff0c;若使用了else if结构&#xff0c;则前段代码快的右花括号”}"必须和关…...

深入理解AQS

概念设计初衷&#xff1a;该类利用 状态队列 实现了一个同步器&#xff0c;更多的是提供一些模板方法&#xff08;子类必须重写&#xff0c;不然会抛错&#xff09;。 设计功能&#xff1a;独占、共享模式两个核心&#xff0c;state、Queue2.1 statesetState、compareAndSetSta…...

JVM学习笔记十:执行引擎

0. 前言 声明&#xff1a; 感谢尚硅谷宋红康老师的讲授。 感谢广大网友共享的笔记内容。 B站&#xff1a;https://www.bilibili.com/video/BV1PJ411n7xZ 本文的内容基本来源于宋老师的课件&#xff0c;其中有一些其他同学共享的内容&#xff0c;也有一些自己的理解内容。 1. …...

【2023-03-10】JS逆向之美团滑块

提示&#xff1a;文章仅供参考&#xff0c;禁止用于非法途径 前言 目标网站:aHR0cHM6Ly9wYXNzcG9ydC5tZWl0dWFuLmNvbS9hY2NvdW50L3VuaXRpdmVsb2dpbg 页面分析 接口流程 1.https://passport.meituan.com/account/unitivelogin主页接口&#xff1a;需获取下面的参数&#xff0…...

全志V853芯片放开快启方案打印及在快起方式下配置isp led的方法

全志V85x芯片 如何放开快启方案的打印&#xff1f; 1.主题 如何放开快启方案的打印 2.问题背景 产品&#xff1a;v851系列快启方案 软件&#xff1a;tina 其他&#xff1a;特有版本信息添加自由描述 &#xff08;如固件版本&#xff0c;复现概率&#xff0c;特定环境&#x…...

大数据 | (一)Hadoop伪分布式安装

大数据原理与应用教材链接&#xff1a;大数据技术原理与应用电子课件-林子雨编著 Hadoop伪分布式安装借鉴文章&#xff1a;Hadoop伪分布式安装-比课本详细 大数据 | &#xff08;二&#xff09;SSH连接报错Permission denied&#xff1a;SSH连接报错Permission denied 哈喽&a…...

Django/Vue实现在线考试系统-06-开发环境搭建-Django安装

1.0 基本介绍 Django 是一个由 Python 编写的一个开放源代码的 Web 应用框架。 使用 Django,只要很少的代码,Python 的程序开发人员就可以轻松地完成一个正式网站所需要的大部分内容,并进一步开发出全功能的 Web 服务 Django 本身基于 MVC 模型,即 Model(模型)+ View(…...

KaiwuDB 时序引擎数据存储内存对齐技术解读

一、理论1、什么是内存对齐现代计算机中内存空间都是按照 byte 划分的&#xff0c;在计算机中访问一个变量需要访问它的内存地址&#xff0c;从理论上看&#xff0c;似乎对任何类型的变量的访问都可以从任何地址开始。但在实际情况中&#xff0c;通常在特定的内存地址才能访问特…...

IR 808 Alkyne,IR-808 alkyne,IR 808炔烃,近红外吲哚类花菁染料

【产品理化指标】&#xff1a;中文名&#xff1a;IR-808炔烃英文名&#xff1a;IR-808 alkyne&#xff0c;Alkyne 808-IR CAS号&#xff1a;N/AIR-808结构式&#xff1a;规格包装&#xff1a;10mg&#xff0c;25mg&#xff0c;50mg&#xff0c;接受各种复杂PEGS定制服务&#x…...

elasticsearch

这里写目录标题1.初识ElasticSearch1.1 了解ES1.2 倒排索引1.2.1 正向索引1.2.2 倒排索引1.2.3 正向和倒排1.3 ES的一些概念1.3.1 文档和字段1.3.2 索引和映射1.3.3 mysql和elasticsearch1.4 安装ES、kibana1.初识ElasticSearch 1.1 了解ES elasticsearch是一款非常强大的开源…...

并发编程---java锁

java锁一 多线程锁synchronized案例分析1.1synchronized介绍1.2 synchronized案例分析1.2.1.标准访问&#xff0c;请问先打印邮件还是短信&#xff1f;1.2.2.邮件⽅法暂停4秒钟&#xff0c;请问先打印邮件还是短信&#xff1f;分析1.2.3.新增⼀个普通⽅法hello&#xff08;&…...

品牌营销 | 学习如何最大限度地发挥品牌营销的作用

您是否想过如何最大限度地发挥品牌营销的潜力&#xff1f;这是一项艰巨的挑战&#xff0c;通过了解品牌营销的基本组成部分&#xff0c;您可以成功地推广您的品牌。 &#xff08;图源&#xff1a;Pixabay&#xff09; 品牌营销的基本组成部分 你需要做什么来发展稳固的品牌&am…...

Linux驱动的同步阻塞和同步非阻塞

在字符设备驱动中&#xff0c;若要求应用与驱动同步&#xff0c;则在驱动程序中可以根据情况实现为阻塞或非阻塞一、同步阻塞这种操作会阻塞应用程序直到设备完成read/write操作或者返回一个错误码。在应用程序阻塞这段时间&#xff0c;程序所代表的进程并不消耗CPU的时间&…...

LearnOpenGL-光照-5.投光物

本人刚学OpenGL不久且自学&#xff0c;文中定有代码、术语等错误&#xff0c;欢迎指正 我写的项目地址&#xff1a;https://github.com/liujianjie/LearnOpenGLProject 文章目录投光物平行光点光源聚光不平滑的例子平滑例子投光物 前面几节使用的光照都来自于空间中的一个点 即…...

【C语言】每日刷题 —— 牛客语法篇(1)

前言 大家好&#xff0c;今天带来一篇新的专栏c_牛客&#xff0c;不出意外的话每天更新十道题&#xff0c;难度也是从易到难&#xff0c;自己复习的同时也希望能帮助到大家&#xff0c;题目答案会根据我所学到的知识提供最优解。 &#x1f3e1;个人主页&#xff1a;悲伤的猪大…...

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站&#xff0c;会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后&#xff0c;网站没有变化的情况。 不熟悉siteground主机的新手&#xff0c;遇到这个问题&#xff0c;就很抓狂&#xff0c;明明是哪都没操作错误&#x…...

网络编程(Modbus进阶)

思维导图 Modbus RTU&#xff08;先学一点理论&#xff09; 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议&#xff0c;由 Modicon 公司&#xff08;现施耐德电气&#xff09;于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统

医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上&#xff0c;开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识&#xff0c;在 vs 2017 平台上&#xff0c;进行 ASP.NET 应用程序和简易网站的开发&#xff1b;初步熟悉开发一…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

JVM垃圾回收机制全解析

Java虚拟机&#xff08;JVM&#xff09;中的垃圾收集器&#xff08;Garbage Collector&#xff0c;简称GC&#xff09;是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象&#xff0c;从而释放内存空间&#xff0c;避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

测试markdown--肇兴

day1&#xff1a; 1、去程&#xff1a;7:04 --11:32高铁 高铁右转上售票大厅2楼&#xff0c;穿过候车厅下一楼&#xff0c;上大巴车 &#xffe5;10/人 **2、到达&#xff1a;**12点多到达寨子&#xff0c;买门票&#xff0c;美团/抖音&#xff1a;&#xffe5;78人 3、中饭&a…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具

文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

(二)原型模式

原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

spring:实例工厂方法获取bean

spring处理使用静态工厂方法获取bean实例&#xff0c;也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下&#xff1a; 定义实例工厂类&#xff08;Java代码&#xff09;&#xff0c;定义实例工厂&#xff08;xml&#xff09;&#xff0c;定义调用实例工厂&#xff…...