Kubernetes提供的虚拟DNS服务名为skydns,由四个组件组成:

  1. etcd:DNS存储
  2. kube2sky:将Kubernetes Master中的Service(服务)注册到etcd
  3. skyDNS:提供DNS域名解析服务
  4. healthz:提供对skydns服务的健康检查功能。

Kubernetes DNS服务的总体架构:

skydns-rc.yaml文件中需要修改几个参数:

  • kube2sky容器需要访问Kubernetes Master,需要配置Master所在物理主机的IP地址和端口号,--kube-master-url的值为http://192.168.1.191:8080。
  • kube2sky容器和skydns容器的启动参数--domain,设置Kubernetes集群中Service所属的域名,本例中为cluster.local,启动后,kube2sky会通过APIserver监控集群中全部Service的定义,生成相应的记录保存在etcd中。kube2sky为每个Service生成以下两条记录:
    •   <service_name>.<namespace_name>.<domain>
    •    <service_name>.<namespace_name>.svc.<domain>
  • skydns的启动参数--addr=0.0.0.0:35 表示使用本机TCP和UDP的53端口提供服务。
  • cat skydns-rc.yaml

apiVersion: v1
kind: ReplicationController
metadata:
    name: kube-dns-v11
    namespace: kube-system
    labels:
       k8s-app: kube-dns
       version: v11
       kubernetes.io/cluster-service: "true"
spec:
    replicas: 1
    selector:
       k8s-app: kube-dns
       version: v11
    template:
       metadata:
            labels:
               k8s-app: kube-dns
               version: v11
               kubernetes.io/cluster-service: "true"
       spec:
         containers:
         - name: etcd
           image: 192.168.1.191:5000/etcd:latest
           resources:
              limits:
                cpu: 100m
                memory: 50Mi
             requests:
                cpu: 100m
                memory: 50Mi
           command:
           - etcd
           - -data-dir
           - /tmp/data
           - -listen-client-urls
           - http://127.0.0.1:2379,http://127.0.0.1:4001
           - -advertise-client-urls
           - http://127.0.0.1:2379,http://127.0.0.1:4001
           - -initial-cluster-token
           - skydns-etcd
           volumeMounts:
           - name: etcd-storage
             mountPath: /tmp/data
        - name: kube2sky
          image: 192.168.1.191:5000/kube2sky:kubernetes
          resources:
             limits:
               cpu: 100m
               memory: 50Mi
            requests:
               cpu: 100m
              memory: 50Mi
          livenessProbe:
            httpGet:
               path: /healthz
               port: 8080
               scheme: HTTP
            initialDelaySeconds: 60
            timeoutSeconds: 5
            successThreshold: 1
            failureThreshold: 5
          readinessProbe:
             httpGet:
                path: /readiness
                port: 8081
                scheme: HTTP
            initialDelaySeconds: 30
            timeoutSeconds: 5
          args:
           - --kube-master-url=http://192.168.1.191:8080
           - --domain=cluster.local
        - name: skydns
          image: 192.168.1.191:5000/skydns:latest
          resources:
              limits:
                cpu: 100m
                memory: 50Mi
             requests:
                 cpu: 100m
                 memory: 50Mi
          command:
          - /skydns
          - -machines=http://127.0.0.1:4001
          - -addr=0.0.0.0:53
          - -ns-rotate=false
          - -domain=cluster.local
          ports:
          - containerPort: 53
            name: dns
            protocol: UDP
         - containerPort: 53
           name: dns-tcp
           protocol: TCP
       - name: healthz
         image: 192.168.1.191:5000/exechealthz-amd64:latest
         resources:
            limits:
              cpu: 10m
              memory: 20Mi
            requests:
               cpu: 10m
               memory: 20Mi
        args:
        - -cmd=nslookup kubernetes.default.svc.cluster.local 127.0.0.1 > /dev/null
        - -port= 8080
       ports:
       - containerPort: 8080
         protocol: TCP
   volumes:
   - name: etcd-storage
     emptyDir: {}
     dnsPolicy: Default

Kubernetes-DNS的更多相关文章

  1. Kubernetes DNS 简介

    环境 $ sudo lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 16 ...

  2. Kubernetes DNS安装配置

    #镜像在谷歌上需要FQ###################################下载kubernetes#DNS#cd kubernetes/cluster/addons/dns#修改tr ...

  3. Kubernetes DNS 高阶指南(转发别人 解析很详细)

    转发地址:http://www.jintiankansha.me/t/Js1R84GGAl DNS 是 Kubernetes 的核心功能之一,Kubernetes 通过 kube-dns 或  Cor ...

  4. Kubernetes DNS服务配置案例

    首先创建DNS服务的RC配置文件skydns-rc.yaml apiVersion: v1 kind: ReplicationController metadata: name: kube-dns-v ...

  5. Kubernetes DNS的配置

    Kubernetes集群机制通过DNS进行服务名和ip的映射,如果没有配置dns,你可以通过下面命令查询到集群ip kubectl get svc --namespace=kube-system 得到 ...

  6. kubernetes dns 初步理解和使用 dnsmasq dns服务器跟host机器同步

    1.安装DNS后,pod就可以通过dns来解析service,从而实现通信 2.创建一个dns测试工具pod apiVersion: extensions/v1beta1 kind: Deployme ...

  7. kubernetes入门之skydns

    部署kubernetes dns服务 kubernetes可以为pod提供dns内部域名解析服务.其主要作用是为pod提供可以直接通过service的名字解析为对应service的ip的功能. 部署k ...

  8. 理解Kubernetes(1):手工搭建Kubernetes测试环境

    系列文章: 1. 手工搭建环境 1. 基础环境准备 准备 3个Ubuntu节点,操作系统版本为 16.04,并做好以下配置: 系统升级 设置 /etc/hosts 文件,保持一致 设置从 0 节点上无 ...

  9. kubernetes实现用户自定义扩缩容

    本文章主要参考walkthrough,aggregation和auth.涉及custom metric API的注册认证以及API server aggregation的相关知识.walkthroug ...

  10. 手动部署 kubernetes HA 集群

    前言 关于kubernetes HA集群部署的方式有很多种(这里的HA指的是master apiserver的高可用),比如通过keepalived vip漂移的方式.haproxy/nginx负载均 ...

随机推荐

  1. Selenium2学习(十三)-- JS处理滚动条

    前言 selenium并不是万能的,有时候页面上操作无法实现的,这时候就需要借助JS来完成了. 常见场景: 当页面上的元素超过一屏后,想操作屏幕下方的元素,是不能直接定位到,会报元素不可见的. 这时候 ...

  2. Selenium2学习(五)-- SeleniumBuilder辅助定位元素

    前言 福利来了,对于用火狐浏览器的小伙伴们,你还在为定位元素而烦恼嘛? 上古神器Selenium Builder来啦,哪里不会点哪里,妈妈再也不用担心我的定位元素问题啦!(但是也不是万能,基本上都能覆 ...

  3. nginx http强制跳转https

    通过nginx的rewrite 进行301永久重定向,参考如下配置即可. server { listen  192.168.1.111:80; server_name test.com; rewrit ...

  4. 【Spring实战】—— 9 AOP环绕通知

    假如有这么一个场景,需要统计某个方法执行的时间,如何做呢? 典型的会想到在方法执行前记录时间,方法执行后再次记录,得出运行的时间. 如果采用Spring的AOP,仅仅使用前置和后置方法是无法做到的,因 ...

  5. 关于Java中截取字符串

    获取系统时间:to_char(sysdate,'yyyy-mm-dd')截取CREATETIME常量的前10位字符串:CREATETIME.substring(0,10)截取DESCRIPT常量的前2 ...

  6. struts2+extjs文件上传完整实现(攻克了上传中的各种问题)

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/shanhuhau/article/details/28617999 首先须要引入上传控件 <s ...

  7. springboot(服务端接口)获取URL请求参数的几种方法

    原文地址:http://www.cnblogs.com/xiaoxi/p/5695783.html 一.下面为7种服务端获取前端传过来的参数的方法  常用的方法为:@RequestParam和@Req ...

  8. [19/03/22-星期五] 异常(Exception)(二)_捕获异常

    一.概念 捕获异常是通过3个关键词来实现的:try-catch-finally.用try来执行一段程序,如果出现异常,系统抛出一个异常,可以通过它的类型来捕捉(catch)并处理它, 最后一步是通过f ...

  9. 架构师必须知道的26项PHP安全实践

    PHP是一种开源服务器端脚本语言,应用很广泛.Apache web服务器提供了这种便利:通过HTTP或HTTPS协议,访问文件和内容.配置不当的服务器端脚本语言会带来各种各样的问题.所以,使用php时 ...

  10. Spring 的AOP底层实现技术:JDK和CGLIB动态代理

    Spring 的AOP实现技术之JDK的动态代理技术实例: 接口:IUserService (Spring的AOP是动态AOP,实现技术:JDK提供的动态代理和cglib代理,cglib它可以为没有实 ...