1. 背景介绍

    某混合云场景k8s,云上和云下的node,需要将同一个域名解析到不同的IP
  2. 方案

    利用Coredns+2个第三方插件,fwdpolicyconditional
  3. 编译Coredns(在windows上)

    安装go(略)



    下载各组件源码,并编译

    cd %GOPATH%/src

    git clone https://github.com/coredns/coredns

    cd coredns/

    notepad plugin.cfg添加如下两行

这一步要保证GOOS=windows

go generate

这一步要保证GOOS=linux

go build

在当前目录会生产coredns文件。

在linux环境运行 coredns --pulgins 查看插件是否已启用。

4. 构建Docker镜像,替换环境中已有的coredns镜像

Dockerfile
FROM alpine:3.14
ADD https://oss.xxx.com/coredns .
EXPOSE 53 53/udp
RUN chmod +x coredns
ENTRYPOINT ["/coredns"]
  1. 修改配置文件
apiVersion: v1
kind: ConfigMap
metadata:
name: coredns
namespace: kube-system
labels:
addonmanager.kubernetes.io/mode: EnsureExists
data:
Corefile: |
.:53 {
errors
ready
health
kubernetes cluster.local in-addr.arpa ip6.arpa {
pods insecure
fallthrough in-addr.arpa ip6.arpa
}
hosts {
172.20.0.4 iZ88wwyb52mZ
172.20.0.5 iZ88r6821f9Z
172.20.0.6 iZ885t6kiqoZ
fallthrough
}
log
prometheus :9153
conditional {
group idc 0
group guangdianyun 1
use zone0 if incidr(client_ip, '10.244.0.0/21')
use zone0 if incidr(client_ip, '10.244.8.0/23')
use zone0 idc if incidr(client_ip, '10.244.10.0/24')
use zone0 if incidr(client_ip, '10.244.12.0/24')
use zone0 if incidr(client_ip, '10.244.13.0/24')
use zone0 if incidr(client_ip, '10.244.14.0/24')
use zone0 if incidr(client_ip, '10.244.14.0/24')
use zone1 if incidr(client_ip, '10.244.32.0/24')
use zone1 if incidr(client_ip, '10.244.30.0/24')
use zone1 if incidr(client_ip, '10.244.34.0/24')
use zone1 if incidr(client_ip, '10.244.29.0/24')
use zone1 if incidr(client_ip, '10.244.14.0/24')
use zone1 if incidr(client_ip, '10.244.31.0/24')
use zone1 if incidr(client_ip, '10.244.33.0/24')
use zone1 if incidr(client_ip, '10.244.16.0/24')
}
fwdpolicy . 127.0.0.1:5390 127.0.0.1:5391 {
policy conditional
}
}
cache 30
reload
loadbalance
}
.:5390 {
log
hosts {
172.30.254.3 xxx.cn
172.30.254.3 xxxx.cn
}
forward . /etc/resolv.conf
}
.:5391 {
log
hosts {
172.30.254.33 xxx.cn
172.30.254.33 xxxx.cn
}
forward . /etc/resolv.conf
}

参考:

https://zhuanlan.zhihu.com/p/387807927

https://github.com/coredns/coredns/discussions/4940

K8S实现不同节点POD获取不同IP的更多相关文章

  1. k8s集群节点更换ip 或者 k8s集群添加新节点

    1.需求情景:机房网络调整,突然要回收我k8s集群上一台node节点机器的ip,并调予新的ip到这台机器上,所以有了k8s集群节点更换ip一说:同时,k8s集群节点更换ip也相当于k8s集群添加新节点 ...

  2. k8s集群节点ping不通其他主机的ip

    文章目录 排查过程 本地宿主机网络检查 pod网络检查 tcpdump检查网络 检查flannel网卡 检查宿主机网卡 iptables检查 解决方法 测试环境服务出现问题,服务一直报错认证超时,检查 ...

  3. 【JVM故障问题排查心得】「内存诊断系列」Docker容器经常被kill掉,k8s中该节点的pod也被驱赶,怎么分析?

    背景介绍 最近的docker容器经常被kill掉,k8s中该节点的pod也被驱赶. 我有一个在主机中运行的Docker容器(也有在同一主机中运行的其他容器).该Docker容器中的应用程序将会计算数据 ...

  4. Kubernetes K8S之固定节点nodeName和nodeSelector调度详解

    Kubernetes K8S之固定节点nodeName和nodeSelector调度详解与示例 主机配置规划 服务器名称(hostname) 系统版本 配置 内网IP 外网IP(模拟) k8s-mas ...

  5. k8s核心资源之Pod概念&入门使用讲解(三)

    目录 1. k8s核心资源之Pod 1.1 什么是Pod? 1.2 Pod如何管理多个容器? 1.3 Pod网络 1.4 Pod存储 1.5 Pod工作方式 1.5.1 自主式Pod 1.5.2 控制 ...

  6. 12.深入k8s:kubelet创建pod流程源码分析

    转载请声明出处哦~,本篇文章发布于luozhiyun的博客:https://www.luozhiyun.com 源码版本是1.19 在上一篇中,我们知道在kubelet中,工作核心就是围绕着整个syn ...

  7. k8s集群Job Pod 容器可能因为多种原因失效,想要更加稳定的使用Job负载,有哪些需要注意的地方?

    k8s集群Job Pod 容器可能因为多种原因失效,想要更加稳定的使用Job负载,有哪些需要注意的地方? 面试官:"计数性Job默认完成模式是什么?Indexed模式如何发布自定义索引呢?& ...

  8. k8s运维之pod排错

    k8s运维之pod排错 K8S是一个开源的,用于管理云平台中多个主机上的容器化应用,Kubernetes的目标是让部署容器化变得简单并且高效 K8S的核心优势: 1,基于yaml文件实现容器的自动创建 ...

  9. CDN 环境下获取用户IP方法

    CDN 环境下获取用户IP方法 1 cdn 自定义header头的X-Real-IP,在后端使用$http_x_real_ip获得 proxy_set_header X-Real-IP $remote ...

  10. 微服务探索之路04篇k8s增加子节点,metrics资源监控,ingress-nginx域名配置及https配置

    1 k8s增加子节点 1.1 子节点服务器安装docker,使用脚本自动安装 curl -fsSL https://get.docker.com | bash -s docker --mirror A ...

随机推荐

  1. Vulnhub:Five86-2靶机

    kali:192.168.111.111 靶机:192.168.111.211 信息收集 端口扫描 nmap -A -v -sV -T5 -p- --script=http-enum 192.168. ...

  2. bash编辑功能,在命令行里编辑快捷键

    快捷键 描述 ctrl + A 跳到命令行的开头 ctrl + E 跳到命令行的尾巴上 ctrl + U  将光标处以命令行开头的内容清除 ctrl + K 将光标处到命令行尾巴处的内容清除 ctrl ...

  3. 淘宝sign算法和使用教程

    前言 最新写的淘宝热卖插件系列里面有涉及到淘宝sign算法加密,这里博主分享一下之前找到算法和修改后的算法以及使用教程.在此希望能帮助更多的人,欢迎各位加入我的交流Q群:468458543,群内不定时 ...

  4. Python语言课程实验报告 (第三周)

    Python语言基础实验(第三周) 一.实验目的和要求 1.了解流程控制语句的结构与类型: 2.学习语句的使用: 3.掌握流程控制语句的实际应用. 二.实验环境 软件版本:Python 3.10 64 ...

  5. 论文阅读: CCF A 2022 MVD: 基于流敏感图神经网络的内存相关漏洞检测 (ICSE)

    Motivation: 内存相关漏洞会导致性能下降和程序崩溃,严重威胁到现代软件的安全性. 静态分析方法使用一些预定义的漏洞规则或模式来搜索不正确的内存操作,然而,定义良好的漏洞规则或模式高度依赖于专 ...

  6. k8s安装metrics-server

    Kubernetes Metrics Server: Kubernetes Metrics Server 是 Cluster 的核心监控数据的聚合器,kubeadm 默认是不部署的. Metrics ...

  7. 2.13python基础知识

    编程语言的发展史 1.机器语言:内部用0和1表示 2.汇编语言:简单的字母表示二进制 3.高级语言:人类可以理解的 1.执行效率:机器语言>汇编语言>高级语言(编译型>解释型) 2. ...

  8. textfsm

    from concurrent.futures import ThreadPoolExecutor import netmiko import os from threading import Loc ...

  9. netmiko批量操作网络设备_pandas版

    from concurrent.futures import ThreadPoolExecutor import netmiko import os from threading import Loc ...

  10. 容器之 docker的监控平台(prometheus + Grafana)

    cAdvisor (Container Advisor) :用于收集正在运行的容器资源使用和性能信息.https://github.com/google/cadvisor Prometheus(普罗米 ...