k8s组件coredns以及dashboard
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了k8s组件coredns以及dashboard相关的知识,希望对你有一定的参考价值。
参考技术A 我们创建的service并不存在coredns里面 而是存在了etcd中 当我们请求某个域名的时候 会把请求发给coredns coredns再把请求发给apiserver apiserver 再去etcd中拿取数据返回给dns dns返回给客户端nginx想要请求后端的tomcat 首先nginx会把tomcat的service地址发送给coredns coredns发给apiserver apiserver去etcd中拿取对应的解析地址返回给coredns nginx从coredns中拿到tomcat的ip地址后就会把客户端请求转发给tomcat
当pod需要访问k8s集群外的域名时 pod还是会把解析请求发给coredns 我们会在coredns里面配置forward转发到我们公司内部的域名服务器(bind) 如果域名是公司内部使用的 bind就会解析此域名并把ip返回给coredns
如果此域名为外部互联网域名 我们还会在bind中配置forward转发到公网dns中进行解析
我们配置service地址段的时候 此地址段的第一个IP默认分发给apiserver 第二个IP默认分发给dns
在kubenetes的安装包中包含了许多组件的yaml模板 我们可以通过模板来安装coredns
打开github搜索kubernetes 选择右下角的release 选择k8s相应版本
https://github.com/kubernetes/kubernetes
查看_ DNS__DOMAIN _的值 此值为/etc/kubeasz/clusters/qijia01/hosts里面CLUSTER_DNS_DOMAIN的值
查看一下coredns的地址
替换coredns中的k8s.gcr.io/coredns/coredns:v1.8.0镜像为coredns/coredns:1.8.0 应为k8s.gcr.io/coredns/coredns:v1.8.0镜像是谷歌的在国外法拉取成功
完整的yaml文件,修改了dns_doman地址 dns_forward地址 coredns镜像 dns地址 内存大小
创建成功
验证域名解析成功
实时修改coredns的副本数,把replicas修改为2
可以看到第二个pod正在启动
node级别 localdns-cache (需要每个node节点都缓存一份,node过多不建议使用)
pod级别 dnsmasq (需要每个pod都缓存一份,pod过多不建议使用)
coredns 延长coredns缓存的时间(最优但是需要消耗内存)
添加一个forword,假如我有一个域名为myserver.online是公司内部使用的测试域名,当k8s中的pod访问这个后缀的域名时 我希望他把解析请求交给内部的bind服务器(172.16.16.16:53)
在核心文件Corefile最下面加上forward
删掉再重新创建 也可以直接用apply
使用nslookup测试dns解析,前提是你的 net-test1要有nslookup没有的话需要安装bind-utils
先看一下k8s的版本,然后选择兼容版本的dashboard
https://github.com/kubernetes/dashboard/releases
dashboard-2.4.0支持k8s1.21
github上面提供了dashboard的镜像还有yaml文件
创建dashboard的pod
查看dashboard的service是否创建成功
我们发现kubernetes-dashboard这个service默认使用的是 ClusterIP ,并没有把443端口给映射到宿主机,所以此端口只能在集群内部使用,我们并没有办法通过浏览器访问
解决方法:在dashboard.yaml中找到kubernetes-dashboard 这个service的配置信息并将service的类型改为nodeport,默认是ClusterIP
重新部署后发现service已经把443端口暴露出来了
3004会监听在任意一个宿主机上面(master和node) 因为这些宿主机都是通过apiserver从etcd统一拿取的数据
此时我们可以通过任意一个master或者node的ip加上30004通过https协议来访问dashboard
此时我们需要创建一个登录的账号并且授予权限
查看新建用户的token
以上是关于k8s组件coredns以及dashboard的主要内容,如果未能解决你的问题,请参考以下文章