kubernetes 中DNS的安装部署测试

[toc]

安装DNS后,pod就可以通过dns来解析service,从而实现通信

kubernetes 版本:

kubectl version   

我当前的版本是1.9.0

1、kubectl dns 的安装

1.1 在官网下载配置文件

https://github.com/kubernetes/kubernetes

具体路径是cluster/addons/dns/kube-dns  

可能版本不一样,路径略有不同

该路径下有三个相似的配置文件:  

kube-dns.yaml.base
kube-dns.yaml.in
kube-dns.yaml.sed  

在此,我们使用kube-dns.yaml.sed配置文件作为模板;

1.2 需要修改其中的两个属性

  • $DNS_SERVER_IP 指定的是k8s dns的ip, 默认是apiserver ip
  • $DNS_DOMAIN,替换为cluster.local(与kube-apiserver定义的一致)

1.3 具体修改命令,可以使用sed命令

将kube-dns.yaml.sed配置文件,拷贝到k8s集群所在的某个服务器中

  • 对配置文件重命名

    • move kube-dns.yaml.sed kube-dns.yaml
  • 批量修改属性
    • sed -i ‘s/$DNS_SERVER_IP/10.10.10.2/g‘ kube-dns.yaml
    • sed -i ‘s/$DNS_DOMAIN/cluster.local/g‘ kube-dns.yaml

1.4 启动dns服务

kubectl create -f kube-dns.yaml  

2 测试dns服务

2.1 创建一个pod和service

配置文件curl.yaml

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: curl
  namespace: kube-system
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: curl
    spec:
      containers:
      - name: curl
        image: appropriate/curl
        command: ["sleep"]
        args: ["5000"]

---

apiVersion: v1
kind: Service
metadata:
  name: curl
  namespace: kube-system
  labels:
    app: curl
spec:
  type: ClusterIP
  selector:
    app: curl
  ports:
  - port: 80
    targetPort: 80
    name: http
    protocol: TCP

2.2 创建一个dns测试工具pod

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: tools-dns
  namespace: default
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: tools-dns
    spec:
      containers:
      - name: tools-dns
        image: tutum/dnsutils:latest
        command: ["sleep"]
        args: ["5000"]

2.3 查看刚才创建测试pod, tools-dns

kubectl get pod 

2.4 进入容器后,使用下面的命令来进行查询

kubectl exec -it tools-dns-5665d49688-8jrnw /bin/bash
  • 查看A记录(就是地址记录IPv4)

    • nslookup -query=a _http._tcp.curl.kube-system
  • 查看srv记录(一个域名系统(DNS)资源记录,用于标识承载特定服务的计算机)
    • nslookup -query=srv _http._tcp.curl.kube-system
      (说明:service = 10(优先级) 100(比重) 80(端口) curl.kube-system.svc.cluster.local(主机名).)

2.5 测试中发现的问题:

1、 如果发现镜像有问题的话,需要更新镜像,
如“k8s.gcr.io/k8s-dns-dnsmasq-nanny-amd64:1.14.10” 改成“ index.tenxcloud.com/jimmy/k8s-dns-dnsmasq-nanny-amd64:1.14.1”
将"k8s.gcr.io/k8s-dns-sidecar-amd64:1.14.10" 改成"index.tenxcloud.com/jimmy/k8s-dns-sidecar-amd64:1.14.1"
将" k8s.gcr.io/k8s-dns-kube-dns-amd64:1.14.10" 替换为"index.tenxcloud.com/jimmy/k8s-dns-kube-dns-amd64:1.14.1

2、如果发现"Liveness probe failed: Get http://172.17.97.2:10054/healthcheck/kubedns: dial tcp 172.17.97.2:10054: getsockopt: connection refused"问题,需要将"SRV"改成"A"

参考文献:
https://blog.csdn.net/kozazyh/article/details/79443852

原文地址:http://blog.51cto.com/xingej/2130490

时间: 2024-08-30 14:26:54

kubernetes 中DNS的安装部署测试的相关文章

kubernetes系列03—kubeadm安装部署K8S集群

1.kubernetes安装介绍 1.1 K8S架构图 1.2 K8S搭建安装示意图 1.3 安装kubernetes方法 1.3.1 方法1:使用kubeadm 安装kubernetes(本文演示的就是此方法) 优点:你只要安装kubeadm即可:kubeadm会帮你自动部署安装K8S集群:如:初始化K8S集群.配置各个插件的证书认证.部署集群网络等.安装简易. 缺点:不是自己一步一步安装,可能对K8S的理解不会那么深:并且有那一部分有问题,自己不好修正. 1.3.2 方法2:二进制安装部署k

K8s(Kubernetes)简介及安装部署

前言: k8s是Kubernetes的简称,因为K和S之间有8个字母,所以才会被称为k8s. k8s最初是在Google公司内部使用了10多年的技术,它的前身是叫做Borg(博格),直到2015年才被Google公司捐赠为开源项目. 如果之前我们有接触过OpenStack,那么应该知道管理VM虚拟机资源可以用OpenStack.那么管理容器所对应的开源平台是什么呢?k8s就是其中之一,在k8s之前也有很多容器管理平台,有docker自身的docker swarm,也有apache推出的Mesos

kubernetes 集群的安装部署

本文来自我的github pages博客http://galengao.github.io/ 即www.gaohuirong.cn 摘要: 首先kubernetes得官方文档我自己看着很乱,信息很少,所以结合了很多博客搭建的 其次因为既然用到docker,当然离不开kubernetes管理,还有swarm,前者管理复杂,但功能齐全 这里仅仅是安装部署,还未使用,具体使用出现问题后续更新 前提条件 系统时centos7上 关闭防火墙 systemctl stop firewalld.service

Kubernetes(K8s)安装部署过程(三)--创建高可用etcd集群

这里的etcd集群复用我们测试的3个节点,3个node都要安装并启动,注意修改配置文件 1.TLS认证文件分发:etcd集群认证用,除了本机有,分发到其他node节点 scp ca.pem kubernetes-key.pem kubernetes.pem [email protected]10.10.90.106:/etc/kubernetes/ssl scp ca.pem kubernetes-key.pem kubernetes.pem [email protected]10.10.90.

Hadoop2.3、 Hbase0.98、 Hive0.13架构中Hive的安装部署配置以及数据测试

简介: Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行. 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析. 1, 适用场景 Hive 构建在基于静态批处理的Hadoop 之上,Hadoop 通常都有较高的延迟并且在作业提交和调度的时候需要大量的开销.因此,Hive 并不能够在大规模

Kubernetes(K8s)安装部署过程(六)--node节点部署

hi,everybody,我回来了,之前安装到flannel之后,文章一直没有更新,甚至不少小伙伴都来加qq询问是否继续更新了, 这里说明下原因,我在部署1.91node的时候的确出现了各种各样的问题,导致节点启动后哦,master总是看不到,遇到的问题大概有 1.虚拟机时间同步不一致问题,导致etcd创建资源不成功 2.node节点无法自动创建kubelet.kubeconfig问题,这个是最严重的问题,原因是config文件没有拷贝到node的/etc/kubernetes文件夹内,因为ku

elasticsearch在kubernetes中持久化集群部署

背景 Javashop电商系统的商品索引是使用的elasticsearch,对于高可用的要求有两个重要的考量: 1.集群化 2.可扩容 3.冗灾 冗灾就要实现es的持久化,要考虑到es宕机的情况,当es因不可抗因素挂掉了,当我们再恢复了es的运行后,商品索引也要随之 一起恢复. 本文着重讨论elasticsearch的持久化部署方案,当然提供在方案也支持了集群及扩容. 思路 1.数据的存储 在k8s中的持久化部署不可避免的要用到持久卷,我们采用nfs方式的持久卷来存储es数据. 持久卷的详细介绍

rabbitmq在kubernetes中持久化集群部署

背景 Javashop电商系统的消息总线使用的事rabbitmq,在订单创建.静态页生成.索引生成等等业务中大量采用异步消息系统,这个对于mq高可用的要求有两个重要的考量: 1.集群化 2.可扩容 3.冗灾 冗灾就要实现rabbitmq的持久化,要考虑到rabbitmq宕机的情况,当rabbitmq因不可抗因素挂掉了,这时有一些消息还没来得及被消费,当我们再恢复了rabbitmq的运行后,这些消息应该同时被恢复,可以再次被消费. 本文着重讨论rabbitmq的k8s的持久化部署方案,当然提供在方

麒麟开源堡垒机安装部署测试及优缺点总结

近期出于管理和检查需要,单位领导要求上堡垒机系统,测试了几个商业堡垒机,因为价格超过预算等原因都未购买,又测试了三个开源的堡垒机,感觉麒麟开源堡垒机功能最全,基本上和商业堡垒机一样,唯一的问题就是图形部分不开源,但因为我们的服务器基本上全是LINUX环境,TELNET.SSH.FTP.SFTP已经足够了因此将这套堡垒机已经用于生产环境. 现在市场商业堡垒机价格太高,基本上都要到10万左右,我结合在公司部署开源堡垒机的经验,将过程写成文档与大家分享. 我测试的其它开源堡垒机基本上还是半成品,麒麟堡