天天看点

(十)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
           

继续阅读