部署k8s组件(13):core-dns的作用和配置的方法

一、介绍

在Kubernetes 1.11中,CoreDNS已经实现了基于DNS的服务发现的GA,可作为kube-dns插件的替代品。这意味着CoreDNS将作为各种安装工具未来发布版本中的一个选项来提供。事实上,kubeadm团队选择将其作为Kubernetes 1.11的默认选项。

使用kube-dns集群插件,基于DNS的服务发现已成为Kubernetes的一部分。这通常很有效,但是对于实施的可靠性、灵活性和安全性存在一些担忧。

CoreDNS是一个通用的、权威的DNS服务器,提供与Kubernetes后向兼容但可扩展的集成。它解决了kube-dns所遇到的问题,并提供了许多独特的功能,可以解决各种各样的用例。

在本文中,你将了解kube-dns和CoreDNS的实施差异,以及CoreDNS提供的一些有用的扩展。

二、实施差异

在kube-dns中,一个pod内使用了数个容器:kubedns、dnsmasq和sidecar。 kubedns容器监视Kubernetes API并基于Kubernetes DNS规范提供DNS记录,dnsmasq提供缓存和存根域支持,sidecar提供指标和健康检查。

此设置会导致一些问题随着时间的推移而出现。首先,dnsmasq中的安全漏洞导致过去需要发布Kubernetes安全补丁。此外,由于dnsmasq处理存根域,但kubedns处理External Services,因此你无法在外部服务中使用存根域,这非常限制该功能。

在CoreDNS中,所有这些功能都在一个容器中完成——该容器运行用Go编写的进程。启用的不同插件来复制(并增强)kube-dns中的功能。

三、安装core-dns

github中下载安装包:https://github.com/coredns/coredns
在这里插入图片描述

1、将$DNS_SERVER_IP和$DNS_DOMAIN替换成kubelet配置的内容
	[root@k8s-node1 cfg]# cat kubelet.config 
		kind: KubeletConfiguration
		apiVersion: kubelet.config.k8s.io/v1beta1
		address: 192.168.100.30
		port: 10250
		readOnlyPort: 10255
		cgroupDriver: cgroupfs
		clusterDNS:
		- 10.0.0.2 
		clusterDomain: cluster.local.
		failSwapOn: false
		authentication:
		  anonymous:
		    enabled: true
2、这里将$DNS_SERVER_IP替换成10.0.0.2,将$DNS_DOMAIN替换成cluster.local.
	[root@k8s-master1 coredns]# vim ./transforms2sed.sed 
		s/__PILLAR__DNS__SERVER__/10.0.0.2/g
		s/__PILLAR__DNS__DOMAIN__/cluster.local./g
		s/__PILLAR__CLUSTER_CIDR__/$SERVICE_CLUSTER_IP_RANGE/g
		s/__PILLAR__DNS__MEMORY__LIMIT__/$DNS_MEMORY_LIMIT/g
		s/__MACHINE_GENERATED_WARNING__/Warning: This is a file generated from the base underscore template file: __SOURCE_FILENAME__/g
3、执行下面的命令,生成部署coreDNS所需的coredns.yaml文件
	[root@k8s-master1 dns]# cd cluster/addons/dns/coredns
	[root@k8s-master1 coredns]# ls
		coredns.yaml.base  coredns.yaml.sed  transforms2salt.sed
		coredns.yaml.in    Makefile          transforms2sed.sed
	[root@k8s-master1 coredns]# sed -f transforms2sed.sed coredns.yaml.base > coredns.yaml
4、替换镜像,将k8s.gcr.io/coredns:1.2.6替换成coredns/coredns:1.2.6
	[root@k8s-master1 coredns]# vim coredns.yaml
		118       - name: coredns
		119         image: coredns/coredns:1.2.6 #替换
		120         imagePullPolicy: IfNotPresent
		121         resources:
		122           limits:
		123             memory: 100Mi 			#修改
		124           requests:
		125             cpu: 100m
		126             memory: 70Mi
	[root@k8s-master1 coredns]# kubectl  create  -f coredns.yaml
5、修改各个节点的dns
	[root@k8s-node1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens32 
		DNS2=10.0.0.2
	[root@k8s-node1 ~]# systemctl restart network
	[root@k8s-node1 ~]# nslookup mydb.default.svc.cluster.local
		;; Got SERVFAIL reply from 192.168.100.55, trying next server
		Server:		10.0.0.2
		Address:	10.0.0.2#53

		Name:	mydb.default.svc.cluster.local
		Address: 10.0.0.12
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

H . C . Y

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值