天天看點

(十)kubernetes叢集搭建(二進制方式)之--coredns部署

DNS 是 Kubernetes 的核心功能之一,通過CoreDNS 作為叢集的必備擴充來提供命名服務。

在安裝kube-apiserver的時候kubernetes-server-linux-amd64.tar.gz解壓後,有一kubernetes-src.tar.gz包我們需要的coredns.yaml檔案就是在這個裡面生成的

# 進入server二進制包中,解壓kubernetes-src.tar.gz
tar fx kubernetes-src.tar.gz -C ./kubernetes-src
# 進入生成coredns的目錄
cd kubernetes-src/cluster/addons/dns/coredns/
# 看到如下檔案
coredns.yaml.base  coredns.yaml.in  coredns.yaml.sed  Makefile  transforms2salt.sed  transforms2sed.sed

           

下面編輯transforms2sed.sed

[[email protected] coredns]# cat transforms2sed.sed 
s/__PILLAR__DNS__SERVER__/$DNS_SERVER_IP/g
s/__PILLAR__DNS__DOMAIN__/$DNS_DOMAIN/g
s/__PILLAR__CLUSTER_CIDR__/$SERVICE_CLUSTER_IP_RANGE/g
s/__PILLAR__DNS__MEMORY__LIMIT__/$DNS_MEMORY_LIMIT/g
s/__MACHINE_GENERATED_WARNING__/Warning: This is a file generated from the base underscore template file: __SOURCE_FILENAME__/g
           

将$DNS_SERVER_IP和$DNS_DOMAIN 進行替換,那麼替換這兩個值,這兩個值在哪裡找呢,在node節點的kubelet-config.yaml裡。

[[email protected] cfg]# cat kubelet-config.yml 
kind: KubeletConfiguration
apiVersion: kubelet.config.k8s.io/v1beta1
address: 0.0.0.0
port: 10250
readOnlyPort: 10255
cgroupDriver: cgroupfs
clusterDNS:
- 10.0.0.2 # **這個替換\$DNS_SERVER_IP**
clusterDomain: cluster.local.  # 這個替換\$DNS_DOMAIN
failSwapOn: false
authentication:
  anonymous:
    enabled: false
  webhook:
    cacheTTL: 2m0s
    enabled: true
  x509:
    clientCAFile: /data/kubernetes/ssl/ca.pem
authorization:
  mode: Webhook
  webhook:
    cacheAuthorizedTTL: 5m0s
    cacheUnauthorizedTTL: 30s
evictionHard:
imagefs.available: 15%
memory.available: 100Mi
nodefs.available: 10%
nodefs.inodesFree: 5%
maxOpenFiles: 1000000
maxPods: 110

           

替換後的樣子

[[email protected] coredns]# cat transforms2sed.sed 
s/__PILLAR__DNS__SERVER__/10.0.0.2/g
s/__PILLAR__DNS__DOMAIN__/cluster.local./g
s/__PILLAR__CLUSTER_CIDR__/$SERVICE_CLUSTER_IP_RANGE/g
s/__PILLAR__DNS__MEMORY__LIMIT__/$DNS_MEMORY_LIMIT/g
s/__MACHINE_GENERATED_WARNING__/Warning: This is a file generated from the base underscore template file: __SOURCE_FILENAME__/g
           

下面執行一條sed指令生成coredns.yaml檔案

sed -f transforms2sed.sed coredns.yaml.base > coredns.yaml
           

然後編輯coredns.yaml

(十)kubernetes叢集搭建(二進制方式)之--coredns部署

然後就部署dns了

# 部署dns
kubectl apply -f coredns.yaml
# 檢視運作的pod狀态
[[email protected] coredns]# kubectl get pods -n kube-system
NAME                       READY   STATUS    RESTARTS   AGE
coredns-664847c9cc-g6swn   1/1     Running   0          3d21h

           

部署完了

驗證下:

部屬個busybox

kubectl run -it --image=busybox --rm --restart=Never sh
           

執行以下指令:

有以下說明成功

[ [email protected]:/ ]$ nslookup javatest-s
Server:    10.0.0.2
Address 1: 10.0.0.2 kube-dns.kube-system.svc.cluster.local

Name:      javatest-s
Address 1: 10.244.0.65 10-244-0-65.javatest-s.production.svc.cluster.local
[ [email protected]:/ ]$ nslookup nginx
Server:    10.0.0.2
Address 1: 10.0.0.2 kube-dns.kube-system.svc.cluster.local

Name:      nginx
Address 1: 10.0.0.247 nginx.production.svc.cluster.local
           

繼續閱讀