分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 技术分享

kubernetes 中DNS的安装部署测试

发布时间:2023-09-06 02:00责任编辑:傅花花关键词:kubernetes
[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/v1beta1kind: Deploymentmetadata: ?name: curl ?namespace: kube-systemspec: ?replicas: 1 ?template: ???metadata: ?????labels: ???????app: curl ???spec: ?????containers: ?????- name: curl ???????image: appropriate/curl ???????command: ["sleep"] ???????args: ["5000"]---apiVersion: v1kind: Servicemetadata: ?name: curl ?namespace: kube-system ?labels: ???app: curlspec: ?type: ClusterIP ?selector: ???app: curl ?ports: ?- port: 80 ???targetPort: 80 ???name: http ???protocol: TCP

2.2 创建一个dns测试工具pod

apiVersion: extensions/v1beta1kind: Deploymentmetadata: ?name: tools-dns ?namespace: defaultspec: ?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.12、如果发现"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 ?

kubernetes 中DNS的安装部署测试

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

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved