k8s部署dashboard
dashboard就是k8s的图形管理工具,可以查看node、pod、namespace等各种资源
1.准备镜像并上传至私有仓库
[root@k8s-master dashboard]# docker load -i kubernetes-dashboard-amd64_v1.4.1.tar.gz
[root@k8s-master dashboard]# docker tag index.tenxcloud.com/google_containers/kubernetes-dashboard-amd64:v1.4.1 192.168.81.240/k8s/kubernetes-dashboard-amd64:v1.4.1
[root@k8s-master dashboard]# docker push 192.168.81.240/k8s/kubernetes-dashboard-amd64:v1.4.1
The push refers to a repository [192.168.81.240/k8s/kubernetes-dashboard-amd64]
5f70bf18a086: Mounted from k8s/tomcat-app
2e350fa8cbdf: Pushed
v1.4.1: digest: sha256:e446d645ff6e6b3147205c58258c2fb431105dc46998e4d742957623bf028014 size: 1147
2.准备dashboard-deployment yaml文件
[root@k8s
-master ~
]
[root@k8s
-master dashboard
]
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: kubernetes
-dashboard
-latest
-deploy
namespace: kube
-system
spec:
replicas: 1
template:
metadata:
labels:
k8s-app: kubernetes
-dashboard
version: latest
kubernetes.io/cluster-service: "true"
spec:
containers:
- name: kubernetes
-dashboard
image: 192.168.81.240/k8s/kubernetes
-dashboard
-amd64
:v1.4.1
resources:
limits:
cpu: 100m
memory: 50Mi
requests:
cpu: 100m
memory: 50Mi
ports:
- containerPort: 9090
args:
- --apiserver
-host=http
://192.168.81.210
:8080
livenessProbe:
httpGet:
path: /
port: 9090
initialDelaySeconds: 30
timeoutSeconds: 30
3.准备dashboard-svc yaml文件
[root@k8s
-master dashboard
]
apiVersion: v1
kind: Service
metadata:
name: kubernetes
-dashboard
-svc
namespace: kube
-system
labels:
k8s-app: kubernetes
-dashboard
kubernetes.io/cluster-service: "true"
spec:
selector:
k8s-app: kubernetes
-dashboard
ports:
- port: 80
targetPort: 9090
4.创建dashoard组件
由于yaml文件中定义了名称空间,因此这里要指定名称空间才能查看对应的资源
真实企业环境也是不同资源对应不同的名称空间
1)创建deployment资源
[root@k8s-master dashboard]# kubectl create -f dashboard.yaml
deployment "kubernetes-dashboard-latest-deploy" created
2)创建svc资源
[root@k8s-master dashboard]# kubectl create -f dashboard_svc.yaml
service "kubernetes-dashboard" created
3)查看资源状态
[root@k8s-master dashboard]# kubectl get all --namespace=kube-system -o wide
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
deploy/kubernetes-dashboard-latest-deploy 1 1 1 1 19s
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
svc/kubernetes-dashboard 10.254.72.0 <none> 80/TCP 14s k8s-app=kubernetes-dashboard
NAME DESIRED CURRENT READY AGE CONTAINER(S) IMAGE(S) SELECTOR
rs/kubernetes-dashboard-latest-deploy-3050469117 1 1 1 19s kubernetes-dashboard 192.168.81.240/k8s/kubernetes-dashboard-amd64:v1.4.1 k8s-app=kubernetes-dashboard,kubernetes.io/cluster-service=true,pod-template-hash=3050469117,version=latest
NAME READY STATUS RESTARTS AGE IP NODE
po/kubernetes-dashboard-latest-deploy-3050469117-5mknc 1/1 Running 0 19s 172.16.54.2 192.168.81.230
kubectl get pod --namespace=kube-system -o wide
kubectl get svc --namespace=kube-system -o wide
kubectl get deployment --namespace=kube-system -o wide
5.页面访问
浏览器输入http://192.168.81.210:8080/ui
6.dashboard操作
创建资源
workloads—deployment—create
默认创建为rc
7.反向代理service
反向代理service就是用master地址去访问pod
不配置nodeport默认是clusterip类型,不配置nodeport就可以用matser地址加上名称空间资源名即可访问到站点内容,即使配置了nodeport也可以使用以上方式来访问
http://master地址:端口/api/v1/proxy/namespaces/命名空间/名称/资源类型/资源名
7.1.准备反向代理目录
[root@k8s-master fxdl]# mkdir /k8s/fxdl
7.2.准备deployment资源yaml文件
[root@k8s
-master fxdl
]
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginx
-proxy
spec:
replicas: 3
template:
metadata:
labels:
app: nginx
-proxy
spec:
containers:
- name: nginx
image: 192.168.81.240/k8s/nginx
:1.13
ports:
- containerPort: 80
7.3.准备svc资源yaml文件
[root@k8s
-master fxdl
]
apiVersion: v1
kind: Service
metadata:
name: nginx
-proxy
-svc
spec:
selector:
app: nginx
-proxy
ports:
- port: 888
targetPort: 80
7.4.创建资源
[root@k8s-master fxdl]# kubectl create -f proxy_deploy.yaml
deployment "nginx-proxy" created
[root@k8s-master fxdl]# kubectl create -f proxy_svc.yaml
service "nginx-proxy-svc" created
7.5.查看资源状态
[root@k8s-master fxdl]# kubectl get all -o wide
deployment管理rs,rs管理pod,hpa管理deployment
7.6.用master访问资源
浏览器访问:http://192.168.81.210:8080/api/v1/proxy/namespaces/default/services/nginx-proxy-svc/
http://192.168.81.210:8080/api/v1/proxy/namespaces/kube-system/services/kubernetes-dashboard
dashboard用的namespace是kube-system
链接目录含义
http://192.168.81.210:8080k8s maste api地址/apiapi服务/v1api的版本/proxy表示代理的意思/namespaces使用的namespace是什么/default使用的namespace是默认的default/services资源类型是service/nginx-proxy-svcsvc资源的名称