1. 程式人生 > >為Kubernetes叢集裡的容器提供DNS服務,用於解析service名稱

為Kubernetes叢集裡的容器提供DNS服務,用於解析service名稱

部署DNS服務

kubedns負責從KUBERNETES_SERVICE_HOST收集service+namespace與clusterIP的對映關係;
dnsmasq根據kubedns收集的資訊,提供名稱解析服務。

下載映象到本地倉庫

kubedns-amd64:1.8
kube-dnsmasq-amd64:1.4
exechealthz-amd64:1.2
這三個映象無法從gcr.io下載的話,可從阿里雲提供的映象倉庫下載。
本地映象倉庫的搭建方法詳見之前的博文。

docker pull registry.cn-hangzhou.aliyuncs.com/google-containers
/exechealthz-amd64:1.2 docker tag registry.cn-hangzhou.aliyuncs.com/google-containers/exechealthz-amd64:1.2 centos-master:5000/exechealthz-amd64:1.2 docker rmi registry.cn-hangzhou.aliyuncs.com/google-containers/exechealthz-amd64:1.2 docker push centos-master:5000/exechealthz-amd64:1.2

部署服務

kube-dns服務的clusterIP明確指定為clusterIP可用值的第二個值10.254.0.2,第一個clusterIP值10.254.0.1留給了k8s自動建立的kubernetes.default服務。
執行如下命令,生成kube-dns的deployment和service。
dnsmasq的啟動引數裡增加了--address配置,讓dnsmasq順便提供一下自用的本地泛域名解析服務。

cat <<EOF | kubectl apply -f -
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: kube-dns
  namespace: kube-system
  labels:
    k8s-app: kube-dns
    version: v20
    kubernetes.io/cluster-service: "true"
spec:
  replicas: 1
  template:
    metadata:
      labels:
        k8s-app: kube-dns
        version: v20
      annotations:
        scheduler.alpha.kubernetes.io/critical-pod: ''
        scheduler.alpha.kubernetes.io/tolerations: '[{"key":"CriticalAddonsOnly", "operator":"Exists"}]'
    spec:
      containers:
      - name:
kubedns
image: centos-master:5000/kubedns-amd64:1.8 resources: limits: memory: 170Mi requests: cpu: 100m memory: 70Mi livenessProbe: httpGet: path: /healthz-kubedns port: 8080 scheme: HTTP initialDelaySeconds: 60 timeoutSeconds: 5 successThreshold: 1 failureThreshold: 5 readinessProbe: httpGet: path: /readiness port: 8081 scheme: HTTP initialDelaySeconds: 3 timeoutSeconds: 5 args: - --domain=cluster.local. - --dns-port=10053 ports: - containerPort: 10053 name: dns-local protocol: UDP - containerPort: 10053 name: dns-tcp-local protocol: TCP - name: dnsmasq image: centos-master:5000/kube-dnsmasq-amd64:1.4 livenessProbe: httpGet: path: /healthz-dnsmasq port: 8080 scheme: HTTP initialDelaySeconds: 60 timeoutSeconds: 5 successThreshold: 1 failureThreshold: 5 args: - --cache-size=1000 - --no-resolv - --server=127.0.0.1#10053 - --address=/wzp.local/192.168.137.75 - --log-facility=- ports: - containerPort: 53 name: dns protocol: UDP - containerPort: 53 name: dns-tcp protocol: TCP - name: healthz image: centos-master:5000/exechealthz-amd64:1.2 resources: limits: memory: 50Mi requests: cpu: 10m memory: 50Mi args: - --cmd=nslookup kubernetes.default.svc.cluster.local 127.0.0.1 >/dev/null - --url=/healthz-dnsmasq - --cmd=nslookup kubernetes.default.svc.cluster.local 127.0.0.1:10053 >/dev/null - --url=/healthz-kubedns - --port=8080 - --quiet ports: - containerPort: 8080 protocol: TCP dnsPolicy: Default --- apiVersion: v1 kind: Service metadata: name: kube-dns namespace: kube-system labels: k8s-app: kube-dns kubernetes.io/cluster-service: "true" kubernetes.io/name: "KubeDNS" spec: selector: k8s-app: kube-dns clusterIP: 10.254.0.2 ports: - name: dns port: 53 protocol: UDP - name: dns-tcp port: 53 protocol: TCP EOF

確認kubedns容器能正常從apiServer獲取service資訊

kubectl logs $(kubectl get pods --namespace=kube-system -l k8s-app=kube-dns -o name) -c kubedns -n kube-system

讓kubelet修改每個pod的預設DNS

修改kubelet引數

修改引數檔案/etc/kubernetes/kubelet

KUBELET_ARGS="--cluster_dns=10.254.0.2 --cluster_domain=cluster.local --kubeconfig=/etc/kubernetes/kube-admin-context.yaml --pod-infra-container-image=centos-master:5000/pause-amd64:3.0"

重啟node

停止node上的元件,清理node已有的iptables設定
重啟node上的元件,讓每個pod都用10.254.0.2作為預設DNS

for SERVICES in kube-proxy kubelet flanneld docker; do
    systemctl stop $SERVICES
done

iptables --flush
iptables -tnat --flush

for SERVICES in kube-proxy kubelet flanneld docker; do
    systemctl restart $SERVICES
    systemctl enable $SERVICES
    systemctl status $SERVICES
done

DNS查詢測試

登入一個容器,檢視預設的dns

kubectl exec -ti busybox -- cat /etc/resolv.conf

登入一個容器,進行dns查詢

kubectl exec -ti busybox -- nslookup kubernetes.default

相關推薦

Kubernetes叢集容器提供DNS服務用於解析service名稱

部署DNS服務 kubedns負責從KUBERNETES_SERVICE_HOST收集service+namespace與clusterIP的對映關係; dnsmasq根據kubedns收集的資訊,提供名稱解析服務。 下載映象到本地倉庫 k

搭建DNS服務正向解析和反向解析搭建DNS服務

系統 hat6 hat 16px roc 正向 進行 地址 服務器 搭建DNS服務器DNS系統在網絡中的作用:維護著一個地址數據庫,其中記錄了各種主機域名與IP地址的對於關系,以方便為客戶程序提供正向或反向的地址查詢服務,即正向解析與方向解析。正向解析:將指定的域名解析為相

搭建DNS服務正向解析域名

ESS 配置 spa win 功能 roc 授權 屬性 數據文件 搭建DNS服務,實現正向解析功能;根據域名查詢ip地址,即將指定的域名解析成相對應的ip,域名的正向解析是DNS服務器最基本的功能。配置文件:主配置文件:作用於服務器本身/etc/named.conf區域配置

搭建DNS服務反向解析ip

max 安裝 域名 mark fan 編輯 listen 火墻 完成 反向解析;根據ip地址解析為相對應的域名。域名的反向解析不是很常見,只在一些特殊場合使用,如垃圾郵件的驗證。配置文件:主配置文件:作用於服務器本身/etc/named.conf區域配置文件:作用於相關的域

Kubernetes叢集提供反向代理叢集外部通過標準http埠訪問kube-Dashboard等內部應用

安裝Ingress Controller Ingress Controller運行於k8s叢集的容器內,既讓每臺node監聽80和443埠,為來自叢集外部的請求提供反向代理,又能實時監聽叢集內Ingress配置,自動更新反向代理規則。 部署de

袁帥:客戶提供增值服務打破互“聯網+會議會展”盈利困局

互聯網+會議會展 互聯網+會議 互聯網+會務 互聯網+ 袁帥 當下,信息化、數字化科技技術正在促使會議、展會等市場品牌營銷活動進行著變革與升級!如果說若幹年前,“互聯網+會務”處於模式摸索階段,那經過這幾年的發展與校正,可以說模式已經逐漸明晰並歸於穩定。“互聯網+會務”主要通過兩個切口切入

使用kubectl檢視Kubernetes叢集的node節點資訊

使用命令列拿到當前Kubernetes叢集的所有節點: kubectl get nodes 檢視某個節點的明細: kubectl describe node shoot--k8s-train--shacw46-worker-l9qsr-z1-5869bb9948-4c

IBC評委獎授予撒哈拉以南非洲地區提供電視服務的Econet

其新技術平臺讓該地區的受眾可以訪問全球內容。 倫敦--(美國商業資訊)--各地的受眾都希望能夠在任何裝置上隨時隨地訪問他們感興趣的內容。服務於南部非洲的Econet Media實現了這一目標,並因此而成為IBC2018評委獎的獲得者。 Kwesé Play是一種可

在WIN7 64位上安裝bind提供DNS服務

bind下載地址:http://www.isc.org/downloads 參考文章: http://windcao.blog.51cto.com/414277/1269035 http://www.zytrax.com/books/dns/ch5/win2k.html

騰訊雲 Web 登入 Kubernetes 叢集容器功能實踐

以往一旦 Kubernetes 服務出現問題,使用者不得不先登入叢集 node,然後使用 docker exec 命令進入容器中檢視容器。這個過程費時費力,如果要在不同的容器間切換更是麻煩。 為此,騰訊雲率先推出了通過 Web 頁面直連 Kubernetes 叢集內容器功能,幫助使用者解決登入容器問題。 要

kubernetes 叢集內訪問k8s API服務

所有的 kubernetes 叢集中賬戶分為兩類,Kubernetes 管理的 serviceaccount(服務賬戶) 和 useraccount(使用者賬戶)。基於角色的訪問控制(“RBAC”)使用“rbac.authorization.k8s.io”API

【Azure 微服務】基於已經存在的虛擬網路(VNET)及子網建立新的Service Fabric並且所有節點配置自定義DNS服務

問題描述 建立新的Service Fabric叢集,可以通過門戶,Powershell命令,或者是ARM模板。但是通過門戶和PowerShell命令時,建立的SF叢集都會自動新建一個虛擬網路而無法使用以及存在的虛擬網路及子網來部署SF。 這對於已經存在的網路來說是一個不友好的方面。那是否可以通過ARM模板來

DNS服務之反向解析

分享圖片 strong water tro 模板 它的 pro 配置 tle DNS反向解析就是把IP地址轉換成域名。vim /etc/named.rfc1912.zones進入區域數據配置文件中修改它的反向解析配置文件如下圖所示修改完後復制剛才正向解析過的模板過來修改它的

DNS服務之正向解析

tps res 添加 indent p s 工作目錄 關閉 正向解析 9.png DNS解析服務之正向解析DNS(Domain Name System,域名系統),萬維網上作為域名和IP地址相互映射的一個分布式數據庫,能夠使用戶更方便的訪問互聯網,而不用去記住能夠被機器直接

DNS服務之分離解析

ado 是不是 png 添加 完成 51cto sim -o ifconfig 首先我們給Linux服務器添加一塊網卡選擇僅主機模式如下圖所示添加完重啟Linux服務器後進入系統用命令ifconfig查看是不是有2塊網卡,把eth1的MAC地址復制一下如下圖所示Cd到etc

搭建DNS服務構建主從域名服務

火墻 intern ont 域名服務器 mic 技術分享 軟件包 title 從域名服務器 主域名服務器通常架設在Internet環境中,提供某一個域或某幾個域內的主機名與ip地址的查詢服務。為了分擔域名查詢的壓力,提供區域數據的備份,有時還會另外架設一臺從服務器,與主服務

搭建DNS服務構建分離解析的域名服務器。

搭建 cto 指定 nts 求解 剪切 conf col tex 搭建DNS服務,構建分離解析的域名服務器。分離解析的域名服務器實際也還是主域名服務器,主要是根據不同的客戶端提供不同的域名解析記錄,來自不同地址的客戶端請求解析同 一域名時,提供不同的解析結果。實際應用中當D

Linux從DNS服務器反向解析配置

添加 角色 sla fff process 服務器角色 反向 .com 配置文件 1、配置指定區域的從服務器角色2、檢查從服務器配置文件是否有問題3、修改主服務器反向區域數據庫文件添加從服務器的反向解析地址4、檢查主服務器的配置文件和區域數據庫文件5、重載主從服務器的配置文

02: DNS服務基礎 特殊解析 DNS子域授權 快取DNS 總結和答疑

Top NSD SERVICES DAY02 案例1:搭建單區域DNS伺服器 案例2:特殊DNS解析 案例3:配置DNS子域授權 案例4:搭建並測試快取DNS 1 案例1:搭建單區域DNS伺服器 1.1 問題 本例要求要求為DNS區域tedu.c

docker容器開啟sshd服務模擬伺服器

docker容器開啟sshd服務,模擬伺服器 我們知道docker是可以用exec來直接訪問容器的,但是還不夠high,有時候要模擬伺服器的登入總不能用docker exec吧,來吧,老司機帶你飛! 以centos為例,需要幾步操作 1.安裝openssh-server 2.初始化r