提示:添加默认backend需要等待default-backend创建完成controllers才能成功部署,新版本ingress不再推荐添加default backend。
确认验证
[root@master01 ingress]# kubectl get pods -n ingress-nginx -o wide
[root@master01 ingress]# kubectl get svc -n ingress-nginx -o wide
提示:参考文档:https://github.com/kubernetes/ingress-nginx/blob/master/docs/deploy/index.md。
Dashboard部署
dashboard是基于Web的Kubernetes用户界面。可以使用dashboard将容器化应用程序部署到Kubernetes集群,对容器化应用程序进行故障排除,以及管理集群资源。可以使用dashboard来概述群集上运行的应用程序,以及创建或修改单个Kubernetes资源(例如部署、任务、守护进程等)。
可以使用部署向导扩展部署,启动滚动更新,重新启动Pod或部署新应用程序。
dashboard还提供有关群集中Kubernetes资源状态以及可能发生的任何错误的信息。
设置标签
[root@master01 ~]# kubectl label nodes master0{1,2,3} dashboard=enable
提示:建议对于Kubernetes自身相关的应用(如dashboard),此类非业务应用部署在master节点。
创建证书
本实验已获取免费一年的证书,免费证书获取可参考:https://freessl.cn。
[root@master01 ~]# mkdir -p /root/dashboard/certs
[root@master01 ~]# cd /root/dashboard/certs
[root@master01 certs]# mv web.odocker.com.crt tls.crt
[root@master01 certs]# mv web.odocker.com.key tls.key
[root@master01 certs]# ll
total 8.0K
-rw-r--r-- 1 root root 1.9K Jun 8 11:46 tls.crt
-rw-r--r-- 1 root root 1.7K Jun 8 11:46 tls.ke
提示:也可手动如下操作创建自签证书:
[root@master01 ~]# openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout tls.key -out tls.crt -subj "/C=CN/ST=ZheJiang/L=HangZhou/O=Xianghy/OU=Xianghy/CN=web.odocker.com"
手动创建secret
[root@master01 ~]# kubectl create ns kubernetes-dashboard
#v2版本dashboard独立ns
[root@master01 ~]# kubectl create secret generic kubernetes-dashboard-certs --from-file=http://www.likecs.com/root/dashboard/certs/ -n kubernetes-dashboard
[root@master01 ~]# kubectl get secret kubernetes-dashboard-certs -n kubernetes-dashboard -o yaml #查看新证书`
下载yaml
[root@master01 ~]# cd /root/dashboard
[root@master01 dashboard]# wget
提示:官方参考:https://github.com/kubernetes/dashboard。
修改yaml
[root@master01 dashboard]# vi recommended.yaml
……
kind: Service
apiVersion: v1
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kubernetes-dashboard
spec:
type: NodePort
#新增
ports:
- port: 443
targetPort: 8443
nodePort: 30001
#新增
selector:
k8s-app: kubernetes-dashboard
---
……
#如下全部注释
#apiVersion: v1
#kind: Secret
#metadata:
# labels:
# k8s-app: kubernetes-dashboard
# name: kubernetes-dashboard-certs
# namespace: kubernetes-dashboard
#type: Opaque
……
kind: Deployment
……
replicas: 3
#适当调整为3副本
……
spec:
containers:
- name: kubernetes-dashboard
image: kubernetesui/dashboard:v2.2.0
imagePullPolicy: IfNotPresent
#修改镜像下载策略
ports:
- containerPort: 8443
protocol: TCP
args:
- --auto-generate-certificates
- --namespace=kubernetes-dashboard
- --tls-key-file=tls.key
- --tls-cert-file=tls.crt
- --token-ttl=3600
#追加如上args
……
nodeSelector:
#
"kubernetes.io/os": "linux"
"dashboard": enable
#部署在master节点
……
kind: Service
apiVersion: v1
metadata:
labels:
k8s-app: dashboard-metrics-scraper
name: dashboard-metrics-scraper
namespace: kubernetes-dashboard
spec:
type: NodePort
#新增
ports:
- port: 8000
targetPort: 8000
nodePort: 30000
#新增
selector:
k8s-app: dashboard-metrics-scraper
……
replicas: 3
#适当调整为3副本
……
nodeSelector:
#
"beta.kubernetes.io/os": linux
"dashboard": enable
#部署在master节点
……
正式部署
[root@master01 dashboard]# kubectl apply -f recommended.yaml
[root@master01 dashboard]# kubectl get deployment kubernetes-dashboard -n kubernetes-dashboard
[root@master01 dashboard]# kubectl get services -n kubernetes-dashboard
[root@master01 dashboard]# kubectl get pods -o wide -n kubernetes-dashboard
提示:master NodePort 30001/TCP映射到 dashboard pod 443 端口。
创建管理员账户