文章目录
1、部署 coredns
1.1 下载Dashboard的yaml文件
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta8/aio/deploy/recommended.yaml
默认Dashboard只能集群内部访问,修改Service为NodePort类型,暴露到外部:
vim recommended.yaml
kind: Service
apiVersion: v1
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kubernetes-dashboard
spec:
ports:
- port: 443
targetPort: 8443
nodePort: 30001
type: NodePort
selector:
k8s-app: kubernetes-dashboard
1.2 部署Dashboard服务
# kubectl apply -f recommended.yaml
# kubectl get pods,svc -n kubernetes-dashboard
NAME READY STATUS RESTARTS AGE
pod/dashboard-metrics-scraper-694557449d-pzjvv 1/1 Running 0 20s
pod/kubernetes-dashboard-9774cc786-8mprh 1/1 Running 0 20s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/dashboard-metrics-scraper ClusterIP 10.0.0.230 <none> 8000/TCP 20s
service/kubernetes-dashboard NodePort 10.0.0.24 <none> 443:30001/TCP 20s
访问地址:https://NodeIP:30001
1.3 创建service account并绑定默认cluster-admin管理员集群角色
# kubectl create serviceaccount dashboard-admin -n kube-system
# kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
# kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')
使用输出的token登录Dashboard。
2、 部署CoreDNS
2.1 CoreDNS用于集群内部Service名称解析。
2.1 生成CoreDNS的yaml文件
mkdir /opt/tools/coredns && cd /opt/tools/coredns/
wget https://raw.githubusercontent.com/coredns/deployment/master/kubernetes/coredns.yaml.sed
wget https://raw.githubusercontent.com/coredns/deployment/master/kubernetes/deploy.sh
chmod +x deploy.sh
./deploy.sh -i 10.0.0.2 > coredns.yml
注:10.0.0.2应该是k8s集群中pod地址段中的IP
注:生成CoreDNS的yaml文件需要jq命令
CentOS7安装 jq
#安装EPEL源:
yum install epel-release
#安装jq:
yum install jq
2.2 部署coredns服务
kubectl apply -f coredns.yml
查看coredns服务是否成功创建
# kubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE
coredns-6fdfb45d56-qv8hl 1/1 Running 0 2m7s
kube-flannel-ds-amd64-bnbrf 1/1 Running 3 43h
kube-flannel-ds-amd64-mtn2f 1/1 Running 2 44h
2.3 DNS解析测试
# kubectl run -it --rm dns-test --image=busybox:1.28.4 sh
If you don't see a command prompt, try pressing enter.
/ # nslookup kubernetes
Server: 10.0.0.2
Address 1: 10.0.0.2 kube-dns.kube-system.svc.cluster.local
Name: kubernetes
Address 1: 10.0.0.1 kubernetes.default.svc.cluster.local
解析没问题。