kubernetes---dns服務搭建指南
參考自《kubernetes權威指南》
1.基本概念
作為服務發現機制的基本功能,在叢集內需要能夠通過服務名對服務進行訪問,這就需要一個叢集範圍的DNS服務來完成服務名到clusterIP的解析
kubernetes提供的虛擬DNS服務名為skydns,由4個元件組成
- etcd:DNS儲存
- kube2sky:將kubernetes master中的service註冊到etcd
- skyDNS:提供dns域名解析服務
- healthz:提供對skydns服務的健康檢查功能
2.實驗與操作
複製以下程式碼時,如果TAB長度不是八個空格,可能報檔案格式錯誤
1.建立skydns-rc.yaml的rc檔案
vim skydns-rc.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: kube-dns-v11
namespace: kube-system
labels:
k8s-app: kube-dns
version: v11
kubernetes.io/cluster-service: "true"
spec:
replicas: 1
selector:
k8s-app: kube-dns
version: v11
template:
metadata:
labels:
k8s-app: kube-dns
version: v11
kubernetes.io/cluster-service: "true"
spec:
containers:
- name: etcd
image: gcr.io/google_containers/etcd-amd64:2.2.1
resources:
limits:
cpu: 100m
memory: 50Mi
requests:
cpu: 100m
memory: 50Mi
command:
- /usr/local/bin/etcd
- -data-dir
- /tmp/data
- -listen-client-urls
- http://127.0.0.1:2379,http://127.0.0.1:4001
- -advertise-client-urls
- http://127.0.0.1:2379,http://127.0.0.1:4001
- -initial-cluster-token
- skydns-etcd
volumeMounts:
- name: etcd-storage
mountPath: /tmp/data
- name: kube2sky
image: gcr.io/google_containers/kube2sky-amd64:1.15
resources:
limits:
cpu: 100m
memory: 50Mi
requests:
cpu: 100m
memory: 50Mi
livenessProbe:
httpGet:
path: /healthz
port: 8080
scheme: HTTP
initialDelaySeconds: 60
timeoutSeconds: 5
successThreshold: 1
failureThreshold: 5
readinessProbe:
httpGet:
path: /readiness
port: 8081
scheme: HTTP
initialDelaySeconds: 30
timeoutSeconds: 5
args:
- --kube-master-url=http://192.168.56.102:8080
- --domain=cluster.local
- name: skydns
image: gcr.io/google_containers/skydns:2015-10-13-8c72f8c
resources:
limits:
cpu: 100m
memory: 50Mi
requests:
cpu: 100m
memory: 50Mi
args:
- -machines=http://127.0.0.1:4001
- -addr=0.0.0.0:53
- -ns-rotate=false
- -domain=cluster.local
ports:
- containerPort: 53
name: dns
protocol: UDP
- containerPort: 53
name: dns-tcp
protocol: TCP
- name: healthz
image: gcr.io/google_containers/exechealthz:1.0
resources:
limits:
cpu: 10m
memory: 20Mi
requests:
cpu: 10m
memory: 20Mi
args:
- -cmd=nslookup kubernetes.default.svc.cluster.local 127.0.0.1 > /de/null
- -port=8080
ports:
- containerPort: 8080
protocol: TCP
volumes:
- name: etcd-storage
emptyDir: {}
dnsPolicy: Default
2.建立skydns的svc檔案
vim skydns-svc.yaml
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: 169.169.0.100
ports:
- name: dns
port: 53
protocol: UDP
- name: dns-tcp
port: 53
protocol: TCP
如果無法訪問google , 需參考文章最後疑難解析修改映象名
3.修改每臺node上kubelet啟動引數,新增
–cluster_dns=169.169.0.100
–cluster_domain=cluser.local
4.建立資源
kubectl create -f skydns-rc.yaml
kubectl create -f skydns-svc.yaml
5.檢查資源是否正常
kubectl get rc –namespace=kube-system
kubectl get pods –namespace=kube-system
kubectl get svc –namespace=kube-system
6.為redis-master建立一個service
vim redis-master-service.yaml
apiVersion: v1
kind: Service
metadata:
name: redis-master
labels:
name: redis-master
spec:
ports:
- port: 6379
targetPort: 6379
selector:
name: redis-master
kubectl get services 檢查剛剛建立的redis-master服務是否正常
7.使用一個帶有nslookup工具的pod來驗證dns服務是否正常工作
vim busybox.yaml
apiVersion: v1
kind: Pod
metadata:
name: busybox
namespace: default
spec:
containers:
- name: busybox
image: busybox
command:
- sleep
- "3600"
kubectl create -f busybox.yaml
kubectl exec busybox – nslookup redis-master
實驗結果:無法解析redis-master
[[email protected] kubernetes]# kubectl exec kube-dns-v11-bh30c -c etcd –namespace=kube-system etcdctl ls /skydns/local/cluster
/skydns/local/cluster/svc
/skydns/local/cluster/pod
結果發現redis-master存在上述svc/default下,因此查詢需要修改為:
kubectl exec busybox -- nslookup redis-master.defualt.svc
[root@kube-master kubernetes]# kubectl exec kube-dns-v11-bh30c -c etcd --namespace=kube-system etcdctl -- ls --recursive /skydns/local/cluster/
/skydns/local/cluster/svc
/skydns/local/cluster/svc/default
/skydns/local/cluster/svc/default/kubernetes
/skydns/local/cluster/svc/default/kubernetes/430884aa
/skydns/local/cluster/svc/default/redis-master
/skydns/local/cluster/svc/default/redis-master/3896faab
/skydns/local/cluster/svc/kube-system
/skydns/local/cluster/svc/kube-system/kube-dns
/skydns/local/cluster/svc/kube-system/kube-dns/1c613ef2
/skydns/local/cluster/pod
/skydns/local/cluster/pod/kube-system
/skydns/local/cluster/pod/kube-system/172-17-0-2
/skydns/local/cluster/pod/kube-system/172-17-0-2/c6db276b
/skydns/local/cluster/pod/default
/skydns/local/cluster/pod/default/172-17-0-3
/skydns/local/cluster/pod/default/172-17-0-3/edc9142
3.疑難解決
1.如果無法訪問google , 無法獲取pause-amd則做如下處理
docker pull kubeguide/pause-amd64:3.0
在每臺node上為kubelet的啟動引數新增:
--pod-infra-container-image=kubeguide/pause-amd64:3.0
修改skydns-rc.yaml,修改image映象為如下
outrider/etcd-amd64
outrider/kube2sky
outrider/skydns
outrider/exechealthz
2.建立rc成功,卻沒有pod,kubectl describe rc mysql顯示No API token found for service account “default”
vim /etc/kubernetes/apiserver
將“–admission-control=NamespaceLifecycle,NamespaceExists, LimitRanger, SecurityContextDeny, ServiceAccount, ResourceQuota”
中的SecurityContextDeny, ServiceAccount刪掉並重啟kube-apiserver
3.no nodes,排程失敗,沒有可用的節點
node和master節點通訊故障,可以通過journalctl -u kubelet | tail -300分析日誌排錯
4.certificate is valid for kubernetes.default.svc, kubernetes.default, kubernetes, localhost, not kube-master 或者Get https://192.168.56.102:6443/api/v1/services?resourceVersion=0: x509: certificate is valid for 192.168.124.17, 169.169.0.1, not 192.168.56.102 , certificate signed by unknown authority。
建議不使用證書實驗,或者重新做證書
相關推薦
kubernetes---dns服務搭建指南
參考自《kubernetes權威指南》 1.基本概念 作為服務發現機制的基本功能,在叢集內需要能夠通過服務名對服務進行訪問,這就需要一個叢集範圍的DNS服務來完成服務名到clusterIP的解析 kubernetes提供的虛擬DNS服務名為skydns
Kubernetes DNS 服務安裝配置
docker kubernets skydns kube2sky Kubernetes的DNS服務是基於SkyDNS實現的,同時又需要和API Server緊密溝通,它的基本工作方式是通過API Server監視服務創建,一旦有新的服務創建就通知SkyDNS創建一條域名解析記錄。溝通AP
加密演算法與DNS服務搭建
1、 簡述常見加密演算法及常見加密演算法原理,最好使用圖例解說 常見加密演算法: 對稱加密:加密和解密使用同一個金鑰; DES:Data Encryption Standard; 3DES:Triple DES;AES:Advanced Encryption Standard; (128bit
加密算法與DNS服務搭建
net open cap 效應 end view 自己 some provide 1、 簡述常見加密算法及常見加密算法原理,最好使用圖例解說 常見加密算法: 對稱加密:加密和解密使用同一個密鑰; DES:Data Encryption Standard; 3DE
DNS服務搭建
主配置檔案:/etc/named.conf 區檔案模板檔案:/var/named/named.loaclhost 注意:如果安裝了chroot,配置檔案的路徑就會變為: 主:/var/named/chr
ltp server服務搭建指南
前言 最近想了解下nlp相關的技術,就找了ltp開始上手。 ltp是哈工大開發的中文自然語言處理套件,現在也對外提供雲服務,不過對於介面呼叫頻率和次數做了一定的限制 : http://www.ltp-cloud.com/ ltp server允許使用者在本地啟動一個nlp
seafile私有云檔案管理系統系統服務搭建指南
Seafile是一個開源、專業、可靠的雲端儲存平臺;解決檔案集中儲存、共享和跨平臺訪問等問題,由北京海文互知網路有限公司開發,釋出於2012年10月;除了一般網盤所提供的雲端儲存以及共享功能外,Seafile還提供訊息通訊、群組討論等輔助功能,幫助更好的圍繞檔案展開協同工作
附011.Kubernetes-DNS及搭建
一 Kubernetes DNS介紹 1.1 Kubernetes DNS發展 作為服務發現機制的基本功能,在叢集內需要能夠通過服務名對服務進行訪問,因此需要一個叢集範圍內的DNS服務來完成從服務名到ClusterIP的解析。 DNS服務在Kubernetes的發展過程中經歷了3個階段,SkyDNS ----
在 CentOS7.0 上搭建 Chroot 的 Bind DNS 服務器
n) 地址 授權 dns 部分 soa 自啟 named 就會 BIND(Berkeley internet Name Daemon)也叫做NAMED,是現今互聯網上使用最為廣泛的DNS 服務器程序。這篇文章將要講述如何在 chroot 監牢中運行 BIND,這樣它就無法訪
主從DNS服務器的搭建
tar 搭建 sta not www 切換 tle add 解析 一.DNS主從的理解 主從服務器,在一開始的理解中,以為是主的dns服務器掛掉後,(dns服務自動轉向輔助dns服務器),客戶端還能繼續解析。事實貌似不是這樣的。當我把主dns停掉的時候,客戶端只設一個d
Linux學習之服務器搭建——DNS服務器
環境 back 文件 -a etc http 區域 輸入 正向 DNS服務器其實是域名解析系統,需要的前提條件只是,兩臺虛擬機可以ping同即可,因此可以在基礎網絡配置下單獨聯系,也可以跟著DHCP服務器一起練習,只是我們以前ping的是IP地址,現在變成ping域名(例:
詳解linux搭建DNS服務器器
詳解 linux 搭建 整個hteret大家庭中連接了數以億計的服務器個人主機,其中大部分的網站,部件等服務器都使用了域名形式的地址,如www.google.com.mail 163.com 等。很顯然這種地址形式要比使月01231317202103 7A 的戶地址形式更加直觀而且更容易被用戶記住
dnsmasq搭建簡易dns服務器
dnsmasq系統:centos6.8_x64本機IP:172.17.41.243為了簡便直接使用yum安裝dnsmasqyum install -y dnsmasq安裝後編輯配置文件/etc/dnsmasql.cofcp /etc/dnsmasq.conf /etc/dnsmasq.conf.ori >
DNS(BIND)服務搭建
查詢 1-1 left conf con 設置 install ima 修改 一、DNS 1.負責將域名解析為IP(正向解析);將IP解析為域名(反向解析) 2.DNS查詢過程 如客戶端訪問www.baidu.com 1)客戶端查看本地是否存有DNS緩存 2)客戶端查看本地
搭建一個簡易的DNS服務
dns 簡易 服務器 今天給大家介紹如何搭建一個DNS服務,以下圖為例,當一個小區客戶端去訪問www.jiabing.com時,DNS需要如何去搭建。 搭建前需要先把每臺服務器的防火墻和SELINUX關閉。關閉防火墻:iptables -F查看SELINUX是否關閉:gete
使用Bind搭建DNS服務
fresh one master 主程 維護 n-1 找到 table systemctl DNS域名解析服務(Domain Name System)是用於解析域名與IP地址對應關系的服務,功能上可以實現正向解析與反向解析: 正向解析:根據主機名(域名)查找對應的IP
CentOS 7.3 搭建DNS服務器
centos dns 域名解析 一、DNS服務簡介1. DNS服務簡介DNS(Domain Name System)域名系統。目前提供網絡服務的應用使用唯一的32位的IP地址來標識,但是由於數字比較復雜、難以記憶,因此產生了域名系統(DNS),通過域名系統,可以使用易於理解和形象的字符串名稱來標識
CentOS7搭建BIND9 DNS服務器過程
bind dns linux ns 域名解析 一、系統環境CentOS7 BIND 9.9二、安裝bind#yum -y install bind三、配置安裝1、修改任何人都可以通過該DNS進行查詢#vim /etc/named.conf ## listen-on port 53 { 1
Linux—CentOS7.4-DNS一(搭建DNS服務器)
查看 運行 roo -- direct rfc ins resolv .com 相關概念:正向解析:將域名解析成IP地址反向解析:將IP地址解析成域名環境:linux服務器一臺,IP地址:192.168.80.10 第一步:準備工作[root@localhost ~]# y
Linux—CentOS7.4-DNS二(搭建分離解析的DNS服務器)
host ems med 顯示 ces win7 域名 firewall dns服務 環境:Linux服務器一臺(雙網卡)內網IP:192.168.80.180 外網IP:192.168.90.180 Linux客戶端一臺,IP地址:192.16