真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Coredns1.2.6安裝部署

CoreDNS簡(jiǎn)介

CoreDNS 其實(shí)就是一個(gè) DNS 服務(wù),而 DNS 作為一種常見(jiàn)的服務(wù)發(fā)現(xiàn)手段,所以很多開(kāi)源項(xiàng)目以及工程師都會(huì)使用 CoreDNS 為集群提供服務(wù)發(fā)現(xiàn)的功能,Kubernetes 就在集群中使用 CoreDNS 解決服務(wù)發(fā)現(xiàn)的問(wèn)題。

創(chuàng)新互聯(lián)公司是一家專業(yè)提供臺(tái)江企業(yè)網(wǎng)站建設(shè),專注與成都做網(wǎng)站、成都網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè)HTML5建站、小程序制作等業(yè)務(wù)。10年已為臺(tái)江眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站設(shè)計(jì)公司優(yōu)惠進(jìn)行中。

如果想要在分布式系統(tǒng)實(shí)現(xiàn)服務(wù)發(fā)現(xiàn)的功能,CoreDNS 其實(shí)是一個(gè)非常好的選擇,CoreDNS作為一個(gè)已經(jīng)進(jìn)入CNCF并且在Kubernetes中作為DNS服務(wù)使用的應(yīng)用,其本身的穩(wěn)定性和可用性已經(jīng)得到了證明,同時(shí)它基于插件實(shí)現(xiàn)的方式非常輕量并且易于使用,插件鏈的使用也使得第三方插件的定義變得非常的方便。

Coredns 架構(gòu)

整個(gè) CoreDNS 服務(wù)都建立在一個(gè)使用 Go 編寫的 HTTP/2 Web 服務(wù)器 Caddy 。

集群信息介紹

Kubernetes
v1.13 
k8s-master
172.20.101.157 
172.20.101.165 
172.20.101.164 
CLUSTER_CIDR
10.254.0.0/16
CLUSTER_DNS
10.254.0.10

Coredns 項(xiàng)目下載

下載地址1:

wget https://github.com/coredns/deployment/archive/master.zip
unzip master.zip

下載地址2:
git clone https://github.com/coredns/deployment.git

安裝部署

確認(rèn)是否存在已運(yùn)行dns服務(wù)

kubectl  get pods -o wide -n=kube-system

#刪除命令
kubectl delete --namespace=kube-system deployment ****-dns
安裝主目錄
cd /workspace/
下載
git clone https://github.com/coredns/deployment.git
安裝目錄
cd /workspace/deployment/kubernetes
查看項(xiàng)目文件
[root@node01 kubernetes]# ll

CoreDNS-k8s_version.md
coredns.yaml.sed
deploy.sh
README.md
rollback.sh
Scaling_CoreDNS.md
Upgrading_CoreDNS.md
重要文件介紹

deploy.sh 是一個(gè)用于在已經(jīng)運(yùn)行kube-dns的集群中生成運(yùn)行CoreDNS部署文件(manifest)的工具腳本。它使用 coredns.yaml.sed文件作為模板,創(chuàng)建一個(gè)ConfigMap和CoreDNS的deployment,然后更新集群中已有的kube-dns 服務(wù)的selector使用CoreDNS的deployment。重用已有的服務(wù)并不會(huì)在服務(wù)的請(qǐng)求中發(fā)生沖突。

deploy 腳本使用方法

usage: ./deploy.sh [ -r REVERSE-CIDR ] [ -i DNS-IP ] [ -d CLUSTER-DOMAIN ] [ -t YAML-TEMPLATE ]

    -r : Define a reverse zone for the given CIDR. You may specifcy this option more
         than once to add multiple reverse zones. If no reverse CIDRs are defined,
         then the default is to handle all reverse zones (i.e. in-addr.arpa and ip6.arpa)
    -i : Specify the cluster DNS IP address. If not specificed, the IP address of
         the existing "kube-dns" service is used, if present.
    -s : Skips the translation of kube-dns configmap to the corresponding CoreDNS Corefile configuration.

Coredns 與 kubernetes 版本匹配:

參考地址:
https://github.com/coredns/deployment/blob/master/kubernetes/CoreDNS-k8s_version.md
Kubernetes  v1.14   ==> CoreDNS  v1.3.1
Kubernetes  v1.13   ==> CoreDNS  v1.2.6  <<===本環(huán)境使用版本

生成安裝配置文件

./deploy.sh -r 10.254.0.0/16 -i 10.254.0.10  -d cluster.local -t coredns.yaml.sed -s >coredns.yaml

驗(yàn)證配置文件核心配置

[root@node01 kubernetes]# more coredns.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  name: coredns
  namespace: kube-system
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: coredns
  namespace: kube-system
data:
  Corefile: |
    .:53 {
        errors
        health
        kubernetes cluster.local  10.254.0.0/16 {      《+====監(jiān)聽(tīng)域名和CIDR
          pods insecure
          upstream
          fallthrough in-addr.arpa ip6.arpa
        }
        prometheus :9153
        forward . /etc/resolv.conf
        cache 30
        loop
        reload
        loadbalance
    }
---
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
      containers:
      - name: coredns
        image: coredns/coredns:1.3.1   《===修改鏡像版本:image: coredns/coredns:1.2.6
        imagePullPolicy: IfNotPresent
        resources:
          limits:
            memory: 170Mi
          requests:
            cpu: 100m
            memory: 70Mi
        args: [ "-conf", "/etc/coredns/Corefile" ]
        volumeMounts:
  。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

執(zhí)行安裝:

kubectl apply -f coredns.yaml

serviceaccount/coredns unchanged
clusterrole.rbac.authorization.k8s.io/system:coredns unchanged
clusterrolebinding.rbac.authorization.k8s.io/system:coredns unchanged
configmap/coredns configured
deployment.apps/coredns configured
service/kube-dns created

直接安裝方法

首先要確定使用鏡像是對(duì)的,執(zhí)行方法如下:
./deploy.sh -r 10.254.0.0/16 -i 10.254.0.10  -t coredns.yaml  -d | kubectl apply -f -

驗(yàn)證服務(wù)

kubectl get svc -o wide -n=kube-system

NAME       TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)                  AGE   SELECTOR
kube-dns   ClusterIP   10.254.0.10           53/UDP,53/TCP,9153/TCP   84s   k8s-app=kube-dns

查看 coredns 詳細(xì)信息

kubectl  get pods -o wide -n=kube-system

NAME                      READY   STATUS    RESTARTS   AGE   IP             NODE             NOMINATED NODE   READINESS GATES
coredns-b97f7df6d-gwjzj   1/1     Running   0          15h   10.254.100.3   172.20.101.166              
coredns-b97f7df6d-jq7q6   1/1     Running   0          15h   10.254.87.3    172.20.101.160             

登陸node節(jié)點(diǎn)驗(yàn)證coredns 版本

[root@node04 ~]# docker logs 2076a98b7461 
.:53
2019-03-14T10:58:53.9Z [INFO] CoreDNS-1.2.6
2019-03-14T10:58:53.9Z [INFO] linux/amd64, go1.11.2, 756749c
CoreDNS-1.2.6
linux/amd64, go1.11.2, 756749c
 [INFO] plugin/reload: Running configuration MD5 = 2f886b3d3ac0d768123559b4705a7dbb

測(cè)試DNS解析

修改master節(jié)點(diǎn)和所有node節(jié)點(diǎn)的/etc/systemd/system/kube-kubelet.service,
修改內(nèi)容如紅色所注,與Corefile中的值對(duì)應(yīng)。

CLUSTER_CIDR
10.254.0.0/16
CLUSTER_DNS
10.254.0.10

修改 kubelet 啟動(dòng)配置文件

vi /k8s/kubnode/cfg/kubelet

KUBELET_OPTS="--logtostderr=true \
--v=4 \
--hostname-override=172.20.101.166 \
--kubeconfig=/k8s/kubnode/cfg/kubelet.kubeconfig \
--bootstrap-kubeconfig=/k8s/kubnode/cfg/bootstrap.kubeconfig \
--config=/k8s/kubnode/cfg/kubelet.config \
--cert-dir=/k8s/kubnode/ssl \
--pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/google-containers/pause-amd64:3.0"

#添加內(nèi)容如下
--cluster-dns=10.254.0.10 \
--cluster-domain=cluster.local.

#或者添加配置到 /etc/systemd/system/kube-kubelet.service

### 重啟 kubelet 服務(wù)
systemctl daemon-reload
systemctl enable kubelet
systemctl restart kubelet
systemctl status kubelet -l

啟動(dòng) nginx 測(cè)試服務(wù)

kubectl run nginx --replicas=2 --image=nginx:alpine --port=80   
kubectl expose deployment nginx --type=NodePort --name=example-service-nodeport
kubectl expose deployment nginx --name=example-service

啟動(dòng)一個(gè)工具鏡像

kubectl run  curl --image=radial/busyboxplus:curl   

驗(yàn)證服務(wù)啟動(dòng)成功

kubectl get pods -o wide  
NAME                     READY   STATUS    RESTARTS   AGE     IP             NODE             NOMINATED NODE   READINESS GATES
curl-66959f6557-879c6    1/1     Running   0          4m52s   10.254.87.4    172.20.101.160              
nginx-665764c8c9-dgjgv   1/1     Running   0          7m19s   10.254.100.2   172.20.101.166              
nginx-665764c8c9-z9rrm   1/1     Running   0          7m19s   10.254.87.2    172.20.101.160              
[root@node01 kubernetes]# 
kubectl get svc -o wide
NAME                       TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE    SELECTOR
example-service            ClusterIP   10.254.210.43           80/TCP         9s     run=nginx
example-service-nodeport   NodePort    10.254.204.43           80:36136/TCP   14s    run=nginx
kubernetes                 ClusterIP   10.254.0.1              443/TCP        105m   

登陸curl鏡像 (node節(jié)點(diǎn)執(zhí)行)

[root@node04 ~]# docker exec -it f18900873efe sh

驗(yàn)證外網(wǎng)解析

ping qq.com

PING qq.com (111.161.64.48): 56 data bytes
64 bytes from 111.161.64.48: seq=0 ttl=47 time=6.331 ms
64 bytes from 111.161.64.48: seq=1 ttl=47 time=6.293 ms

驗(yàn)證內(nèi)部解析:

[ root@curl-66959f6557-879c6:/ ]$ nslookup kubernetes
Server:    10.254.0.10
Address 1: 10.254.0.10 kube-dns.kube-system.svc.cluster.local

Name:      kubernetes
Address 1: 10.254.0.1 kubernetes.default.svc.cluster.local

使用 curl測(cè)試域名解析

[ root@curl-66959f6557-879c6:/ ]$
 curl example-service



Welcome to nginx!



Welcome to nginx!

...........................

Thank you for using nginx.

清理服務(wù)

刪除測(cè)試服務(wù)

    kubectl  get svc
    kubectl  delete svc example-service example-service-nodeport

刪除部署空間

kubectl get deployment
kubectl delete deploy nginx curl

如果想刪除 coredns執(zhí)行如下操作:

kubectl  delete svc  kube-dns  -n=kube-system    

curl 報(bào)錯(cuò) 排查解決

[root@node01 kubernetes]# 

curl example-service

curl: (6) Could not resolve host: example-service; Unknown error
[root@node01 kubernetes]# curl example-service

解決辦法:

修改 kubelet 啟動(dòng)配置文件 (node節(jié)點(diǎn))

vi /k8s/kubnode/cfg/kubelet

KUBELET_OPTS="--logtostderr=true \
--v=4 \
--hostname-override=172.20.101.166 \
--kubeconfig=/k8s/kubnode/cfg/kubelet.kubeconfig \
--bootstrap-kubeconfig=/k8s/kubnode/cfg/bootstrap.kubeconfig \
--config=/k8s/kubnode/cfg/kubelet.config \
--cert-dir=/k8s/kubnode/ssl \
--pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/google-containers/pause-amd64:3.0"

#添加內(nèi)容如下

--cluster-dns=10.3.0.10 \
--cluster-domain=cluster.local.

#或者添加配置到 /etc/systemd/system/kube-kubelet.service

重啟 kubelet 服務(wù)

systemctl daemon-reload
systemctl enable kubelet
systemctl restart kubelet
systemctl status kubelet -l

報(bào)錯(cuò)2:

[root@node01 coredns]# ./deploy.sh 10.254.0.0/16 cluster.local | kubectl apply -f -
Error from server (NotFound): services "kube-dns" not found
error: no objects passed to apply

報(bào)錯(cuò):
./deploy.sh: line 39: jq: command not found

解決辦法:

因?yàn)轫?xiàng)目使用了jq命令,需要安裝jq程序

yum -y install  jq conntrack-tools

參考資料:

https://juejin.im/post/5b45cea9f265da0f652370ce#heading-33
https://www.cnblogs.com/boshen-hzb/p/7511432.html
http://lizhe.name/node/326
https://github.com/minminmsn/k8s1.13/blob/master/kubernetes/kubernetes1.13.1%2Betcd3.3.10%2Bflanneld0.10%E9%9B%86%E7%BE%A4%E9%83%A8%E7%BD%B2.md


當(dāng)前題目:Coredns1.2.6安裝部署
文章起源:http://weahome.cn/article/ijgosd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部