此文为学习《Kubernetes权威指南》和阿里云原生公开课的相关笔记
一、集群范围内的DNS服务:coreDNS
作为服务发现机制的基本功能,在集群内需要能够通过服务名对服务进行访问,这就需要一个进群范围内的DNS服务来完成从服务到ClusterIP的解析。DNS服务在K8s上经历3个阶段的发展,从SkyDNS到KubeDNS,从1.11版本开始来到了coreDNS。
CoreDNS作为K8s集群中的一个容器来提供服务,从K8s Master节点上获取服务信息,建立DNS记录,等待其他Pod查询服务名,解析出服务IP返回给Pod。
下面将尝试新建一个coreDNS服务并作为默认DNS服务器供集群其他Pod使用。
1、新建ConfigMap设置CoreDNS的主配置文件Corefile
apiVersion: v1
kind: ConfigMap
metadata:
name: coredns-test
namespace: kube-system
labels:
addonmanager.kubernetes.io/mode: EnsureExists
data: #Corefile配置内容
Corefile: |
cluster.local {
errors #对错误信息进行日志记录
health #对Endpoint进行健康检查#为域名 cluster.local设置插件
kubernetes cluster.local in-addr.arpa ip6.arpa {
pods insecure
upstream
fallthrough in-addr.arpa ip6.arpa
}
prometheus :9153 #为Prometheus系统提供彩金性能指标数据的URL
forward . /etc/resolv.conf
cache 30
loop #检测在DNS解析过程中出现的循环问题
reload #定时重新加载Corefile配置文件的内容
loadbalance #提供基于DNS的负载均衡功能
}
. {
cache 30
loadbalance
forward . /etc/resolv.conf
}
2、新建Deployment配置CoreDNS容器应用
apiVersion: apps/v1
kind: Deployment
metadata:
name: coredns-test
namespace: kube-system
labels:
k8s-app: kube-dns-test
kubernetes.io/cluster-service: "true"
addonmanager.kubernetes.io/mode: Reconcile
kubernetes.io/name: "CoreDns"
spec:
replicas: 1
selector:
matchLabels:
k8s-app: kube-dns-test
strategy: #滚动升级策略
type: RollingUpdate
rollingUpdate:
maxUnavailable: 1
template:
metadata: