1. 程式人生 > >kubernetes學習筆記(二):bashborad安裝配置

kubernetes學習筆記(二):bashborad安裝配置

tag log struct recommend ide col create part describe

官方推薦方法:

連接:https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/

運行推薦yaml:

kubectl create -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml

但是因為國內無法上google的原因,此辦法一般都會報錯。推薦以下辦法:

daocloude鏡像地址:https://dashboard.daocloud.io/packages

1、編寫yaml文件

dashboard.yaml

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
# Keep the name in sync with image version and
# gce/coreos/kube-manifests/addons/dashboard counterparts
  name: kubernetes-dashboard-latest
  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: daocloud.io/gfkchinanetquest/kubernetes-dashboard-amd64:v1.5.1 

#這裏使用daoclod的鏡像,默認鏡像為gcr.io/google_containers/kubernetes-dashboard-amd64:v1.5.1 resources: # keep request = limit to keep this container in guaranteed class limits: cpu: 100m memory: 50Mi requests: cpu: 100m memory: 50Mi ports: - containerPort: 9090 args: - --apiserver-host=http://192.168.50.131:8080 #這裏修改為自己環境master的地址
livenessProbe: httpGet: path: / port: 9090 initialDelaySeconds: 30 timeoutSeconds: 30

  dashboardsvc.yaml

apiVersion: v1
kind: Service
metadata:
  name: kubernetes-dashboard
  namespace: kube-system
  labels:
    k8s-app: kubernetes-dashboard
    kubernetes.io/cluster-service: "true"
spec:
  selector:
    k8s-app: kubernetes-dashboard
  ports:
  - port: 80
    targetPort: 9090

2、創建depolyment和service

正常情況下創建depolyment和service,

kubectl create -f dashboard.yaml

kubectl create -f dashboardsvc.yaml

3、驗證

master上執行

[root@test03 pods]# kubectl get deploy --namespace=kube-system
NAME                          DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
kubernetes-dashboard-latest   1         1         1            1           45m
[root@test03 pods]# kubectl get svc --namespace=kube-system
NAME                   CLUSTER-IP       EXTERNAL-IP   PORT(S)   AGE
kubernetes-dashboard   10.254.211.210   <none>        80/TCP    45m
[root@test03 pods]# kubectl get pod  -o wide  --all-namespaces
NAMESPACE     NAME                                          READY     STATUS    RESTARTS   AGE       IP            NODE
default       nginx01                                       1/1       Running   0          8d        172.30.42.2   node01
default       nginx03                                       1/1       Running   0          10h       172.30.53.2   node02
kube-system   kubernetes-dashboard-latest-713129511-8p8gn   1/1       Running   0          46m       172.30.53.3   node02

通過頁面訪問:http://192.168.50.131:8080/ui

ps:會跳轉到http://192.168.50.131:8080/api/v1/proxy/namespaces/kube-system/services/kubernetes-dashboard/#/workload?namespace=default

其實最終訪問的是:http://172.30.53.3:9090/ 及node上的pod

技術分享圖片

4、遇到的問題

就可以通過頁面http://192.168.50.131:8080/ui就可以訪問bashborad了。但是這裏有幾個坑

(1)國內無法訪問gcr.io的鏡像,所以在dashboard.yaml中我們使用daoclod的鏡像,可以現在node節點中docker pull一下,確認是否可以拉取鏡像。

我的環境不是很穩定,其中一個node02拉去成功,第二個node01拉取失敗,並且創建的pod正好在失敗的節點上。

[root@test03 pods]# kubectl get pod  -o wide  --all-namespaces
NAMESPACE     NAME                                           READY     STATUS             RESTARTS   AGE       IP            NODE
default       nginx01                                        1/1       Running            0          7d        172.30.42.2   node01
default       nginx03                                        1/1       Running            0          3h        172.30.53.2   node02
kube-system   kubernetes-dashboard-latest-2290711670-q5kzx   0/1       ImagePullBackOff   0          34m       172.30.42.3   node01

表示創建pod失敗,使用kubectl describe pods --namespace=kube-system,查看報錯日誌,一般都是鏡像拉取失敗

現在需要再node01中拉取鏡像,可以通過node02的鏡像load即可。

node02:

[root@test01 ~]# docker images
REPOSITORY                                                TAG                 IMAGE ID            CREATED             SIZE
docker.io/nginx                                           latest              e548f1a579cf        3 weeks ago         108.6 MB
registry.access.redhat.com/rhel7/pod-infrastructure       latest              99965fb98423        5 months ago        208.6 MB
daocloud.io/gfkchinanetquest/kubernetes-dashboard-amd64   v1.5.1              1180413103fd        14 months ago       103.6 MB
ansible/centos7-ansible-tag                               latest              688353a31fde        15 months ago       447.2 MB
ansible/centos7-ansible                                   latest              688353a31fde        15 months ago       447.2 MB
docker.io/kubernetes/pause                                latest              f9d5de079539        3 years ago         239.8 kB
gcr.io/google_containers/pause                            2.0                 f9d5de079539        3 years ago         239.8 kB
[root@test01 ~]# docker save daocloud.io/gfkchinanetquest/kubernetes-dashboard-amd64:v1.5.1 > bashborad.tar
[root@test01 ~]# ll
total 160592
-rw-------. 1 root root      1026 Feb  5 23:08 anaconda-ks.cfg
-rw-r--r--. 1 root root 103781888 Mar 15 00:20 bashborad.tar
-r--r--r--. 1 root root  60654199 Aug 27  2013 VMwareTools-9.6.0-1294478.tar.gz

 scp bashborad.tar到node01 執行load即可,docker image查看,發現鏡像已經導入

docker load < dashboard.tar
此時node上鏡像已經都已經拉取成功,需要銷毀重新創建deployment和service
master上執行
kubectl delete deployment kubernetes-dashboard-latest --namespace=kube-system
kubectl delete svc  kubernetes-dashboard --namespace=kube-system

創建:
kubectl create -f bashborad.yaml
kubectl create -f bashboradsvc.yaml

2、flannel網路問題,安裝成功,訪問頁面失敗

訪問http://192.168.50.131:8080/ui,沒有反應

訪問:http://192.168.50.131:8080/api/v1/proxy/namespaces/kube-system/services/kubernetes-dashboard/#/workload?namespace=default

報錯如下:

Error: ‘dial tcp 172.30.53.3:9090: getsockopt: connection timed out‘
Trying to reach: ‘http://172.30.53.3:9090/‘
根據提示能夠知道192.168.50.131無法訪問172.30.53.3:9090。ifconfig查看master上的網絡,發現沒有flanne網絡,可能之前忘記重啟了,systemctl restart flanneld
flannel.1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1450
        inet 172.30.10.0  netmask 255.255.255.255  broadcast 0.0.0.0
        inet6 fe80::e051:bfff:fefe:d009  prefixlen 64  scopeid 0x20<link>
        ether e2:51:bf:fe:d0:09  txqueuelen 0  (Ethernet)
        RX packets 1249  bytes 1625343 (1.5 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 481  bytes 42378 (41.3 KiB)
        TX errors 0  dropped 10 overruns 0  carrier 0  collisions 0

3、node節點上鏡像pull成功,但是還是安裝失敗

dashboard.yaml中

daocloud.io/gfkchinanetquest/kubernetes-dashboard-amd64:v1.5.1  
沒有選擇版本,如果為  daocloud.io/gfkchinanetquest/kubernetes-dashboard-amd64,則表示拉去lastest版本,即

daocloud.io/gfkchinanetquest/kubernetes-dashboard-amd64:lastest
但是因為我們是離線load的,並沒有lastest版本,所以會報錯。

4、不修改dashboard.yaml內容的方法
load鏡像後,tag鏡像為
gcr.io/google_containers/kubernetes-dashboard-amd64:v1.5.1即可。(後續補充)



kubernetes學習筆記(二):bashborad安裝配置