coreDNS

 1.概述

        coreDNS的作用主要是作为DNS服务器,在集群内提供服务发现功能,也就是服务之间的互相定位的过程。他监听集群中service和pod的创建和销毁事件,当serivice或者pod被创建时,记录对应的解析记录。当其他pod通过域名来访问集群中的service或pod时,会向coreDNS服务查询解析记录,然后访问解析到的IP地址

coreDNS:就是将svc资源的名称解析成ClusterIP

coreDNS效率高、资源占用率少,已经替换kube-dns,成为了kubernetes集群的默认DNS服务

kubeadm部署的k8s集群自带coreDNS组件,二进制部署需要自己手动部署

k8s系统中安装了coreDNS组件后,会有一个coreDNS开头的pod资源

 

 ·查看k8s集群的coreDNS的IP地址

[root@master job]# cat /var/lib/kubelet/config.yaml

[root@master job]# kubectl get svc -A
NAMESPACE     NAME         TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)                  AGE
default       kubernetes   ClusterIP   10.200.0.1    <none>        443/TCP                  91m
kube-system   kube-dns     ClusterIP   10.200.0.10   <none>        53/UDP,53/TCP,9153/TCP   23d

查看k8s集群中DNS的svc的详细信息,可以看到,里面解析了coreDNS的地址在endpoint列表中

[root@master job]# kubectl describe -n kube-system svc kube-dns 
Name:              kube-dns
Namespace:         kube-system
Labels:            k8s-app=kube-dns
                   kubernetes.io/cluster-service=true
                   kubernetes.io/name=CoreDNS
Annotations:       prometheus.io/port: 9153
                   prometheus.io/scrape: true
Selector:          k8s-app=kube-dns
Type:              ClusterIP
IP Family Policy:  SingleStack
IP Families:       IPv4
IP:                10.200.0.10
IPs:               10.200.0.10
Port:              dns  53/UDP
TargetPort:        53/UDP
Endpoints:         10.100.0.2:53,10.100.0.3:53
Port:              dns-tcp  53/TCP
TargetPort:        53/TCP
Endpoints:         10.100.0.2:53,10.100.0.3:53
Port:              metrics  9153/TCP
TargetPort:        9153/TCP
Endpoints:         10.100.0.2:9153,10.100.0.3:9153
Session Affinity:  None
Events:            <none>

2.coreDNS组件是否正常

·第一种方式验证

1.利用之前的wordpress案例

[root@master job]# cat deploy.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: dm-wordpress
spec:
  replicas: 1
  selector:
    matchLabels:
      k8s: k8s
  template:
    metadata:
      labels:
        k8s: k8s
    spec:
      containers:
      - name: wp-c
        image: wordpress:latest
        ports:
        - name: wp-port
          containerPort: 80
        env:
        - name: WORDPRESS_DB_HOST
          value: 10.200.200.200:3306
        - name: WORDPRESS_DB_USER
          value: wordpress
        - name: WORDPRESS_DB_PASSWORD
          value: wordpress
        - name: WORDPRESS_DB_NAME
          value: wordpress
[root@master job]# cat db.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: wordpress-db
spec:
  replicas: 1
  selector:
    matchLabels:
      k8s: db
  template:
    metadata:
      labels:
        k8s: db
    spec:
      containers:
      - name: db-c
        image: mysql:8.0
        ports:
        - name: db-port
          containerPort: 3306
        env:
        - name: MYSQL_DATABASE
          value: wordpress
        - name: MYSQL_USER
          value: wordpress
        - name: MYSQL_PASSWORD
          value: wordpress
        - name: MYSQL_ROOT_PASSWORD
          value: wordpress
[root@master job]# cat svc.yaml 
apiVersion: v1
kind: Service
metadata:
  name: svc-db
spec:
  type: NodePort
  clusterIP: 10.200.200.200
  selector:
    k8s: db
  ports:
    - protocol: TCP
      port: 3306
      targetPort: 3306
      nodePort: 30001
---
apiVersion: v1
kind: Service
metadata:
  name: svc-wp
spec:
  type: NodePort
  selector:
    k8s: k8s
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
      nodePort: 31000

 2.创建查看资源

[root@master job]# kubectl apply -f deploy.yaml 
deployment.apps/dm-wordpress created
[root@master job]# kubectl apply -f db.yaml 
deployment.apps/wordpress-db created
[root@master job]# kubectl apply -f svc.yaml 
service/svc-db created
service/svc-wp created
[root@master job]# kubectl get svc
NAME         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
kubernetes   ClusterIP   10.200.0.1       <none>        443/TCP          101m
svc-db       NodePort    10.200.200.200   <none>        3306:30001/TCP   11s
svc-wp       NodePort    10.200.34.64     <none>        80:31000/TCP     11s

3.响应式创建一个pod容器 

[root@master ~]#  kubectl run demo-dns --rm -it --image=alpine:latest -- sh
If you don't see a command prompt, try pressing enter.
/ # ping svc-wp
PING svc-wp (10.200.34.64): 56 data bytes

·第二种方式验证

1.dig一个svc名称

[root@master ~]# dig @10.200.0.10 svc-wp.default.svc.test.com +short
10.200.34.64

3.使用coreDNS

·将wordpress指向数据库svc的IP换成名称

[root@master job]# cat deploy.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: dm-wordpress
spec:
  replicas: 1
  selector:
    matchLabels:
      k8s: k8s
  template:
    metadata:
      labels:
        k8s: k8s
    spec:
      containers:
      - name: wp-c
        image: wordpress:latest
        ports:
        - name: wp-port
          containerPort: 80
        env:
        - name: WORDPRESS_DB_HOST
          #value: 10.200.200.200:3306
          #将IP改成svc的名字
          value: svc-db:3306
        - name: WORDPRESS_DB_USER
          value: wordpress
        - name: WORDPRESS_DB_PASSWORD
          value: wordpress
        - name: WORDPRESS_DB_NAME
          value: wordpress

·浏览器访问验证

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值