K8S部署kubedns步骤

【云迁移工具RDA】迁移常见问题 Agent无法正常启动,Linux系统提示“SMS.0201 Failed to start sms agent!”,Windows系统提示“SMS.0201 源端主机网络繁忙,无法连接api网关”。该问题通常是由于源端没有通公网,或者没有按照要求配置hosts,无法与iam或者sms通信导致。需要排查源端网络。1.登录源端服务器。2.检查源端是否能正常访问互联网,若无法访问,请处理后重新启动Agent。可参考弹性公网IP Ping不通检查源端的DNS,防火墙,安全组、本地网络等。 阅读详情

基础环境

基本的k8s集群,安装部署可参考我的文章。

部署kubedns步骤

  1. 准备镜像

    # kingdragon 是我的docker hub仓库,你可以换成自己的仓库,并准备相应的镜像
    kingdragon/k8s-dns-dnsmasq-nanny-amd64:1.14.5
    kingdragon/k8s-dns-kube-dns-amd64:1.14.5
    kingdragon/k8s-dns-sidecar-amd64:1.14.5
    
  2. 准备yaml文件

    • kubedns-cm.yaml

      apiVersion: v1
      kind: ConfigMap
      metadata:
        name: kube-dns
        namespace: kube-system
        labels:
          addonmanager.kubernetes.io/mode: EnsureExists
      
    • kubedns-controller.yaml

      apiVersion: extensions/v1beta1
      kind: Deployment
      metadata:
        name: kube-dns
        namespace: kube-system
        labels:
          k8s-app: kube-dns
          kubernetes.io/cluster-service: "true"
          addonmanager.kubernetes.io/mode: Reconcile
      spec:
        # replicas: not specified here:
        # 1. In order to make Addon Manager do not reconcile this replicas parameter.
        # 2. Default is 1.
        # 3. Will be tuned in real time if DNS horizontal auto-scaling is turned on.
        strategy:
          rollingUpdate:
            maxSurge: 10%
            maxUnavailable: 0
        selector:
          matchLabels:
            k8s-app: kube-dns
        template:
          metadata:
            labels:
              k8s-app: kube-dns
            annotations:
              scheduler.alpha.kubernetes.io/critical-pod: ''
          spec:
            tolerations:
            - key: "CriticalAddonsOnly"
              operator: "Exists"
            volumes:
            - name: kube-dns-config
              configMap:
                name: kube-dns
                optional: true
            containers:
            - name: kubedns
              image: kingdragon/k8s-dns-kube-dns-amd64:1.14.5
              resources:
                # TODO: Set memory limits when we've profiled the container for large
                # clusters, then set request = limit to keep this container in
                # guaranteed class. Currently, this container falls into the
                # "burstable" category so the kubelet doesn't backoff from restarting it.
                limits:
                  memory: 170Mi
                requests:
                  cpu: 100m
                  memory: 70Mi
              livenessProbe:
                httpGet:
                  path: /healthcheck/kubedns
                  port: 10054
                  scheme: HTTP
                initialDelaySeconds: 60
                timeoutSeconds: 5
                successThreshold: 1
                failureThreshold: 5
              readinessProbe:
                httpGet:
                  path: /readiness
                  port: 8081
                  scheme: HTTP
                # we poll on pod startup for the Kubernetes master service and
                # only setup the /readiness HTTP server once that's available.
                initialDelaySeconds: 3
                timeoutSeconds: 5
              args:
              - --domain=cluster.local.
              - --dns-port=10053
              - --config-dir=/kube-dns-config
              - --v=2
              #__PILLAR__FEDERATIONS__DOMAIN__MAP__
              env:
              - name: PROMETHEUS_PORT
                value: "10055"
              ports:
              - containerPort: 10053
                name: dns-local
                protocol: UDP
              - containerPort: 10053
                name: dns-tcp-local
                protocol: TCP
              - containerPort: 10055
                name: metrics
                protocol: TCP
              volumeMounts:
              - name: kube-dns-config
                mountPath: /kube-dns-config
            - name: dnsmasq
              image: kingdragon/k8s-dns-dnsmasq-nanny-amd64:1.14.5
              livenessProbe:
                httpGet:
                  path: /healthcheck/dnsmasq
                  port: 10054
                  scheme: HTTP
                initialDelaySeconds: 60
                timeoutSeconds: 5
                successThreshold: 1
                failureThreshold: 5
              args:
              - -v=2
              - -logtostderr
              - -configDir=/etc/k8s/dns/dnsmasq-nanny
              - -restartDnsmasq=true
              - --
              - -k
              - --cache-size=1000
              - --log-facility=-
              - --server=/cluster.local./127.0.0.1#10053
              - --server=/in-addr.arpa/127.0.0.1#10053
              - --server=/ip6.arpa/127.0.0.1#10053
              ports:
              - containerPort: 53
                name: dns
                protocol: UDP
              - containerPort: 53
                name: dns-tcp
                protocol: TCP
              # see: https://github.com/kubernetes/kubernetes/issues/29055 for details
              resources:
                requests:
                  cpu: 150m
                  memory: 20Mi
              volumeMounts:
              - name: kube-dns-config
                mountPath: /etc/k8s/dns/dnsmasq-nanny
            - name: sidecar
              image: kingdragon/k8s-dns-sidecar-amd64:1.14.5
              livenessProbe:
                httpGet:
                  path: /metrics
                  port: 10054
                  scheme: HTTP
                initialDelaySeconds: 60
                timeoutSeconds: 5
                successThreshold: 1
                failureThreshold: 5
              args:
              - --v=2
              - --logtostderr
              - --probe=kubedns,127.0.0.1:10053,kubernetes.default.svc.cluster.local.,5,A
              - --probe=dnsmasq,127.0.0.1:53,kubernetes.default.svc.cluster.local.,5,A
              ports:
              - containerPort: 10054
                name: metrics
                protocol: TCP
              resources:
                requests:
                  memory: 20Mi
                  cpu: 10m
            dnsPolicy: Default  # Don't use cluster DNS.
            serviceAccountName: kube-dns
      

      补充:
      1、改镜像地址为你自己的镜像仓库。
      2、cluster.local.为集群的域名,参见你配置集群时的cluster.domin参数的值。

    • kubedns-sa.yaml

      apiVersion: v1
      kind: ServiceAccount
      metadata:
        name: kube-dns
        namespace: kube-system
        labels:
          kubernetes.io/cluster-service: "true"
          addonmanager.kubernetes.io/mode: Reconcile
      
    • kubedns-svc.yaml

      apiVersion: v1
      kind: Service
      metadata:
        name: kube-dns
        namespace: kube-system
        labels:
          k8s-app: kube-dns
          kubernetes.io/cluster-service: "true"
          addonmanager.kubernetes.io/mode: Reconcile
          kubernetes.io/name: "KubeDNS"
      spec:
        selector:
          k8s-app: kube-dns
        clusterIP: 10.254.0.2
        ports:
        - name: dns
          port: 53
          protocol: UDP
        - name: dns-tcp
          port: 53
          protocol: TCP
      

      补充:
      clusterIP: 10.254.0.2 即明确指定了 kube-dns Service IP,这个 IP 需要和 kubelet 的 --cluster-dns 参数值一致。

  3. 部署kubedns

    # 路径可以不一样
    $ pwd
    /root/kubedns
    
    $ ls *.yaml
    kubedns-cm.yaml  kubedns-controller.yaml  kubedns-sa.yaml  kubedns-svc.yaml
    
    $ kubectl create -f .
    
  4. 校验

    $ cat >> my-nginx.yaml << EOF
    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
      name: my-nginx
    spec:
      replicas: 2
      template:
        metadata:
          labels:
            run: my-nginx
        spec:
          containers:
          - name: my-nginx
            image: harbor-001.jimmysong.io/library/nginx:1.9
            ports:
            - containerPort: 80
    EOF
    $ kubectl create -f my-nginx.yaml
    
    # Export 该 Deployment, 生成 my-nginx 服务
    $ kubectl expose deploy my-nginx
    $ kubectl get services --all-namespaces |grep my-nginx
    
    
    # 创建另一个 Pod,查看 `/etc/resolv.conf` 是否包含 `kubelet` 配置的 `--cluster-dns` 和 `--cluster-domain`,是否能够将服务 `my-nginx` 解析到 Cluster IP `10.254.179.239`。
    
    
    $ kubectl create -f nginx-pod.yaml
    $ kubectl exec  nginx -i -t -- /bin/bash
    root@nginx:/# cat /etc/resolv.conf
    nameserver 10.254.0.2
    search default.svc.cluster.local. svc.cluster.local. cluster.local. jimmysong.io
    options ndots:5
    
    root@nginx:/# ping my-nginx
    PING my-nginx.default.svc.cluster.local (10.254.179.239): 56 data bytes
    76 bytes from 119.147.223.109: Destination Net Unreachable
    ^C--- my-nginx.default.svc.cluster.local ping statistics ---
    
    root@nginx:/# ping kubernetes
    PING kubernetes.default.svc.cluster.local (10.254.0.1): 56 data bytes
    ^C--- kubernetes.default.svc.cluster.local ping statistics ---
    11 packets transmitted, 0 packets received, 100% packet loss
    
    root@nginx:/# ping kube-dns.kube-system.svc.cluster.local
    PING kube-dns.kube-system.svc.cluster.local (10.254.0.2): 56 data bytes
    ^C--- kube-dns.kube-system.svc.cluster.local ping statistics ---
    6 packets transmitted, 0 packets received, 100% packet loss
    
ICC2: place阶段的clock network delay 设置了set_clock_latency之后,即便没长tree,也会有反标值,显示为clock network delay(ideal)和设置的clock latency值,需要注意的是同时设置set_clock_latency和set_clock_latency -source,clock network delay(ideal)值是二者叠加的。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 阅读详情

相关推荐

物料帐配置之 重估消耗

物料帐配置 ML material ledger

SAP刺客的博客 5905

【博客589】K8s Topology Spread Constraints

你可以使用 拓扑分布约束(Topology Spread Constraints) 来控制 Pod 在集群内故障域之间的分布, 例如区域(Region)、可用区(Zone)、节点和其他用户自定义拓扑域。这样做有助于实现高可用并提升资源利用率。

qq_43684922的博客 1636

STM32 Nucleo-144开发板开箱bring-up

最近做项目,用到STM32F446ZET6这款MCU,为了赶进度,前期软件需要提前开发,于是在某宝买了对应主控的官方开发板,为了避免遗忘,后面能翻出来回忆一些细节,就形成了本篇的主要内容,同时也希望能够帮助刚上手的小伙伴少走弯路,如果对你有帮助请点赞、收藏、转发,谢谢!

汽车电子软件领域知识分享 2674

Pod 一直处于Pending状态?可能是拓扑约束的问题

Sealos 公众号已接入了 GPT-4,完全免费!欢迎前来调戏????❝原文链接:https://juejin.cn/post/7245179553886486584起因:今天在部署组件的时候,发现组件的 pod 一直处于 Pending 状态,报错显示的原因是:不满足 Pod 拓扑分布约束,看了代码发现是原来同事给组件新增了 Pod 拓扑约束。对于 Pod 拓扑约束,我先前并没有认真了解过,刚好可以...

云原生实验室 616

TK抓包协议分析:So层逆向

第三个参数是一个回调函数,这里他的返回值1表示成功,0表示失败,那我们手动把他Hook为0,让他不支持quic协议,实现降级。等,我们是为了解决抓包问题,那很有可能是在net目录下(network),那来搜索一下。开了抓包以后APP直接是网络无连接了,并且抓到的请求也是不正常的,下面我们就开始定位。看了半天感觉也没啥有用的东西,那下面我们整理一下已经有信息,来猜测一下,后续怎么进行。那可以猜测,我们真正需要Hook的那个函数也有可能是这样加载的,可以字符串搜索一下。

2503_90751938的博客 3415

STM32L476低功耗实战:LPTIM精准定时唤醒STOP2模式与系统级功耗优化

本文深入探讨了STM32L476低功耗实战技巧,重点解析了LPTIM精准定时唤醒STOP2模式的配置与优化。通过详细的步骤指南和实战经验分享,帮助开发者实现系统级功耗优化,特别适合电池供电设备开发。文章涵盖LPTIM1定时器配置、STOP2模式进入流程及常见问题排查,助力将整机功耗降至8.2uA级别。

weixin_33686714的博客 435

k8s调度系列之 均匀调度

官网链接:https://kubernetes.io/zh/docs/concepts/workloads/pods/pod-topology-spread-constraints/ Pod 拓扑分布约束 FEATURE STATE: Kubernetes v1.19 [stable] 你可以使用 拓扑分布约束(Topology Spread Constraints) 来控制 Pods 在集群内故障域 之间的分布,例如区域(Region)、可用区(Zone)、节点和其他用户自定义拓扑域。 这样做有助于实现高

yuezhilangniao的博客 957

基于simulink的能量管理策略的场景实例:混合动力电动汽车(HEV)的能量回收与分配策略

本文以混合动力电动汽车(HEV)为研究对象,通过Simulink建模详细演示了能量管理策略的设计与实现。内容涵盖HEV系统架构、核心组件工作原理,并分步骤指导搭建车辆动力学模型、动力系统组件模型和基于规则的能量管理策略。重点分析了制动能量回收与功率分配机制,通过仿真验证了逻辑门限策略在提升燃油经济性和维持电池SOC平衡方面的有效性。文章最后展望了更高级控制策略的应用前景,为HEV能量优化提供了完整的仿真研究框架。

xiaoheshang_123的博客 212

Kubernetes-核心组件-Kube DNS

分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net kube-dns为Kubernetes集群提供命名服务,一般通过addon的方式部署,从v1.3版本开始,成为了一个内建的自启动服务。 kube-dns工作原理 如下图所示,kube-dns由三个容器构成: kube-dns:DNS服务的核心组件,主要由KubeDNS和SkyDNS组成 KubeDNS负责监听Service和Endpoi

了解➔熟悉➔掌握➔精通 3万+

【TC3xx芯片】TC3xx DMA模块详解

TC3xx DMA模块详解

qq_36056498的博客 5915

【温室气体数据集】全球总碳柱观测网络 TCCON

【温室气体数据集】全球总碳柱观测网络 TCCON

WW、forever的博客 436

Kubernetes(K8s)之DNS方案

在使用k8s过程中,有时需要配置自定义的host文件做主机名解析。如果在镜像中修改/etc/hosts文件,而容器启动初始化时,会覆盖掉该文件。就需要利用k8s自身提供的机制解决类似的问题 hostAliases:允许在 Pod 中的 /etc/hosts 文件中手动配置静态 IP 和主机名映射,适合临时解决某些网络解析问题,但并不动态更新。 CoreDNS:Kubernetes 集群的默认 DNS 解析系统,提供服务发现和 DNS 解析的能力。它通过插件架构提供了高度的灵活性,能够根据需求进行扩展和优化。

youziguo的专栏 2508

ROSTEA软件下载及情感分析详细操作教程(附网盘链接)

原ROST虚拟团队出品的ROST系列文本内容挖掘分析平台,是辅助人文社会科学研究的免费计算平台。该软件可以实现文本预处理、分字、分词、词性识别、特殊名词抽取、词频统计、英文词频统计、情感计算、分类算法、聚类算法等一系列文本挖掘,是人文社科研究和论文写作的一把利器。该软件用户量超过一万人,遍布海内外100多所大学,包括剑桥大学、日本北海道大学、北京大学、清华大学、香港城市大学、澳门大学等众多高校。关于ROSTCM6的安装介绍可以参考之前的文章ROSTCM6软件下载及语义网络分析详细操作教程ROST EA。

m0_64336780的博客 1万+

k8s教程(service篇)-DNS服务搭建和配置

讲解k8s dns服务搭建和配置

阿甘兄 6110

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

kubernetes之kubedns部署(kubedns,dnsmasq,exechealthz)以及dns-autoscaler部署

一,理解Kubedns原理 通俗理解,首先明白k8s dns是为服务的发现而生,即service的发现,为了能够让其它服务能够直接通过service 名字找到它们,于是就需要dns将service名转换为它的IP, 那么service的变化如何知道? 如何知道目前有哪些service 及知道他们的ip呢,service的增加减少又如何知道了, 所以要有一个组件(1.3中是Kube2sky,1.3后...

3931

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

kubernetes 服务发现问题——kubedns[下部]

上一回有关kubedns服务中报错,这一回整体整理一下。 一,Kubedns工作原理 1.kubedns:kubedns监控并记录service与ip之间的映射关系,以树形结构将数据保存在内存中。 2.dnsmasq:从记录的地方查询相关的解析记录 特点:使用内存做dns缓存,速度非常快 3.exechealthz:用来监控kubedns和dnsmasq是否出现问题,做健康检测 二...

mx_steve的博客 2450

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

kubernetes:kubeDNS部署

一,理解Kubedns原理        通俗理解,首先明白k8s dns是为服务的发现而生,即service的发现,为了能够让其它服务能够直接通过service 名字找到它们,于是就需要dns将service名转换为它的VIP, 那么service的变化如何知道? 如何知道目前有哪些service 及知道他们的vip呢,service的增加减少又如何知道了,           所以要有一个组件...

ccy19910925的博客 1781

kubernetes之kubedns部署

一,理解Kubedns原理 通俗理解,首先明白k8s dns是为服务的发现而生,即service的发现,为了能够让其它服务能够直接通过service 名字找到它们,于是就需要dns将service名转换为它的VIP, 那么service的变化如何知道? 如何知道目前有哪些service 及知道他们的vip呢,service的增加减少又如何知道了, ...

weixin_33859665的博客 289

Kubernetes插件部署

1. 部署 KubeDNS 插件官方的配置文件中包含以下镜像:kube-dns ----监听service、pod等资源,动态更新DNS记录sidecar ----用于监控和健康检查dnsmasq ----用于缓存,并可从dns服务器获取dns监控指标地址:https://github.com/kubernetes/d...

weixin_34220623的博客 224

kubernetes 1.8 单机部署

注:这里就不科普了,直接开始部署。[这里使用HTTP来部署]1. 关闭 SeLinux 和 FireWall#sed-i"s/SELINUX=enforcing/SELINUX=disabled/g"/etc/selinux/config #systemctlstopfirewalld #systemctldisablefirewalld2. 安装 doc...

weixin_34310785的博客 278

Ubuntu16.04手动部署Kubernetes、Master和Node、Flannel网络部署、Dashboard和KubeDNS部署(新);

Ubuntu16.04手动部署Kubernetes、Master和Node部署http://time-track.cn/deploy-kubernetes-step-by-step-on-trusty-section-1.html; Ubuntu16.04手动部署Kubernetes(2)——Flannel网络部署http://time-track.cn/deploy-kubernetes-ste

kingwmk的博客 1370

Kubernetes 1.8 单机部署

1. 关闭 SeLinux 和 FireWall # sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config # systemctl stop firewalld # systemctl disable firewalld 2. 安装 docker # yum install -y yum-utils device-m...

weixin_33962621的博客 305

Kubernetes 1.7版本安装

为什么搞完kubernetes 1.5又要装1.7, :( 是因为微服务架构istio的要求,而且直接用yum安装怎么都是1.5,所以只能通过下载包并且改配置文件的方式了,也好,花两天时间把整个过程又走了一遍 :(( 因为涉及东西太多,我也是搞到一定进度才上来更新,可能会漏掉些什么,慢慢补充把。 证书生成 $ wget https://pkg.cfssl.org/R1.2/...

weixin_30414245的博客 157

kubernetes中部署DNS

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34357267的博客 142

Kubernetes集群上部署zookeeper和dubbo

一、安装nfs NFS, 网络文件系统,是由SUN公司研制的UNIX表示层协议。通过该协议能够让用户访问网络上的文件。 安装步骤: 第一步:下载rpcbind和nfs-utils软件; 链接:https://pan.baidu.com/s/16zDbfXd_mjSMf1TjMmdcKQ 提取码:123z 第二步:执行本地安装; yum localinstall nfs-utils-1.3.0-0.68.el7.x86_64.rpm –y rpm -qa nfs-utils rpcbind 第三步:

zhongliwen1981的专栏 2511
上一篇: 【协议森林】技术面试,“三次握手,四次挥手”背后那些事
下一篇: k8s集群部署dashboard
KingDragon_Baron
博客等级 码龄12年 55粉丝 73原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值