您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關docker kubernetes dashboard如何安裝部署的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
1. 環境說明:
1). 架構:
注: 本次實驗服務器環境均采用centos 7. 服務安裝均采用yum install.
192.168.3.7 master
192.168.3.16 node
2).使用的軟件包:
master: docker kubernetes-master etcd flannel
nodes: docker kubernetes-node flannel
3). 軟件版本:
docker: 1.10.3
kubernetes*: 1.2.0
etcd: 2.3.7
4). 軟件包說明:
docker: 主角,不用說了
kubernetes-master: kubernetes 服務端
kubernetes-node: kubernetes 客戶端
etcd: 服務器發現的鍵值存儲
flannel: 打通多臺服務器上的docker容器之間的網絡互通
2. 環境初始化:
你都搞docker了,初始化該做些什么,我就不教你了.
備份現有的yum源文件,搞一個阿里云的yum源,epel源.
地址: http://mirrors.aliyun.com
3. 安裝配置docker:
注: docker采用net模式. 確保device-mapper軟件包已經安裝,否則docker無法啟動.
1). 安裝 # yum install docker -y 2). 配置 # cat /etc/sysconfig/docker|egrep -v "^#|^$" OPTIONS='' DOCKER_CERT_PATH=/etc/docker
4. 配置master
1). 安裝軟件包. # yum install kubernetes-master etcd flannel-y 2). 配置etcd. # cat /etc/etcd/etcd.conf |egrep -v "^#|^$" ETCD_NAME=default ETCD_DATA_DIR="/var/lib/etcd/default.etcd" ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379" ## 監聽地址端口 ETCD_ADVERTISE_CLIENT_URLS="http://192.168.3.7:2379" ## etcd集群配置;多個etcd服務器,直接在后面加url
##啟動etcd服務
# systemctl start etcd
3). 配置kubernetes.
在/etc/kubernetes 目錄中有以下幾個文件:
apiserver: kubernetes api 配置文件
config: kubernetes 主配置文件
controller-manager: kubernetes 集群管理配置文件
scheduler: kubernetes scheduler配置文件
# cd /etc/kubernetes KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0" ## kube啟動時綁定的地址 KUBE_ETCD_SERVERS="--etcd-servers=http://192.168.3.7:2379" ## kube調用etcd的url KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=172.17.0.0/16" ## 此地址是docker容器的地址段 KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota" KUBE_API_ARGS="" 注意KUBE_ADMISSION_CONTROL這一行的配置: 移除ServiceAccount 項目,否則在后期中會報出沒有認證錯誤. # cat config |egrep -v "^#|^$" KUBE_LOGTOSTDERR="--logtostderr=true" KUBE_LOG_LEVEL="--v=0" KUBE_ALLOW_PRIV="--allow-privileged=false" KUBE_MASTER="--master=http://192.168.3.7:8080" ## kube master api url
controller-manager scheduler 兩個文件采用默認配置即可.
5. 配置nodes
1). 安裝軟件包.
# yum install kubernetes-node flannel -y
2). 配置kubernetes node
安裝完軟件包之后,會在/etc/kubernetes目錄下出現以下文件:
config: kubernetes 主配置文件
kubelet: kubelet node配置文件
proxy: kubernetes proxy 配置文件
# cd /etc/kubernetes # cat config |egrep -v "^#|^$" KUBE_LOGTOSTDERR="--logtostderr=true" KUBE_LOG_LEVEL="--v=0" KUBE_ALLOW_PRIV="--allow-privileged=false" KUBE_MASTER="--master=http://192.168.3.7:8080" ## kube master api url # cat kubelet |egrep -v "^#|^$" KUBELET_ADDRESS="--address=0.0.0.0" ## kubelet 啟動后綁定的地址 KUBELET_PORT="--port=10250" ## kubelet 端口 KUBELET_HOSTNAME="--hostname-override=192.168.3.16" ##kubelet的hostname,在master執行kubectl get nodes顯示的名字 KUBELET_API_SERVER="--api-servers=http://192.168.3.7:8080" ## kube master api url KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure:latest" KUBELET_ARGS=""
proxy 配置默認即可.
6. 網絡配置:
master和node均已經安裝flannel
master配置:
# cat /etc/sysconfig/flanneld |egrep -v "^#|^$" FLANNEL_ETCD="http://192.168.3.7:2379" FLANNEL_ETCD_KEY="/kube/network" # etcdctl mk /kube/network/config '{"Network":"172.17.0.0/16"}' ## 注意此處的ip和上文中出現的ip地址保持一致.
node配置:
# cat /etc/sysconfig/flanneld |egrep -v "^#|^$" FLANNEL_ETCD="http://192.168.3.7:2379" FLANNEL_ETCD_KEY="/kube/network"
7. 啟動服務.
1). 啟動docker服務.
# systemctl start docker
# ps aux|grep docker ## 確認下服務是否正常啟動.如果沒有啟動請移步/var/log/message看問題
2). 啟動etcd服務
# systemctl start etcd
3). 啟動master 和node上的flanneld服務
# systemctl start flanneld
查看ip,會出現flannel0的網絡接口設備,該地址和docker0地址是一致的,如果不一致請確認以上服務是否正常啟動
4). 啟動運行在master上的k8s服務.
啟動順序:kube-apiserver居首.
# systemctl start kube-apiserver
# systemctl start kube-controller-manager
# systemctl start kube-scheduler
請確認以上服務是否都有正常啟動.
5). 啟動運行在node上的k8s服務.
# systemctl start kube-proxy
# systemctl start kubelet
請確認以上服務是否都有正常啟動.
6). 訪問http://kube-apiserver:port
http://192.168.3.7:8080 查看所有請求url
http://192.168.3.7:8080/healthz/ping 查看健康狀況
8. 開啟k8s dashboard:
1). 在master上驗證服務. # kubectl get nodes ## 獲取k8s客戶端. NAME STATUS AGE 192.168.3.16 Ready 6h # kubectl get namespace ## 獲取k8s所有命名空間 NAME STATUS AGE default Active 17h 2). 在master上新建kube-system的namespace # cd /usr/local/src/docker # cat kube-namespace.yaml { "kind": "Namespace", "apiVersion": "v1", "metadata": { "name": "kube-system" } } # kubectl create -f kube-namespace.yaml namespace "kube-system" created # kubectl get namespace ## 獲取k8s所有命名空間 NAME STATUS AGE default Active 17h kube-system Active 17h
3). 在master上新建kube-dashboard.yaml
wget http://docs.minunix.com/docker/kubernetes-dashboard.yaml -O /usr/local/src/docker/kube-dashboard.yaml
請將文件中apiserver-host修改為自己的kebu-apiserver
創建pod:
# kubectl create -f kube-dashboard.yaml
deployment "kubernetes-dashboard" created
You have exposed your service on an external port on all nodes in your
cluster. If you want to expose this service to the external internet, you may
need to set up firewall rules for the service port(s) (tcp:31576) to serve traffic.
See http://releases.k8s.io/release-1.2/docs/user-guide/services-firewalls.md for more details.
service "kubernetes-dashboard" created
驗證:
# kubectl get pods --namespace=kube-system
NAME READY STATUS RESTARTS AGE
kubernetes-dashboard-3138400848-grtfm 1/1 ContainerCreating 0 27s
查看該容器的詳細過程:
# kubectl describe pods kubernetes-dashboard-3138400848-grtfm --namespace=kube-system
當有多個node,可以用該命令中看到容器被分配到哪個node上,啟動后分配的ip地址等信息.
如果在結果中看到"State: Running"時,請移步到node查看容器運行狀態,應該也是up的狀態.
4). 此時可以通過http://kube-apiserver:port/ui訪問
http://192.168.3.7:8080/ui
開始盡情使用docker吧!
9. 注意點&遇到的問題:
1). 注意服務的啟動順序,特別是master,在確保etcd啟動的情況下,先啟動apiserver
2). 注意yaml文件的格式縮進.
3). 如果發現剛創建的pod的status是depening,原因可能有幾點:其一,客戶端配置有listen 127.0.0.1的服務,master無法與其建立連接;其二,環境初始化沒有做好;其三,移步node,使用docker logs 查看日志
4). kubernetes-dashboard.yaml文件中的containers images地址目前為公開的,09月30日會關閉.
5). 如果自己有國外vps,可在服務器上創建docker registry;先pull下google的k8s dashboard,然后push到自己的registry,自己修改下yaml中的image即可.
感謝各位的閱讀!關于“docker kubernetes dashboard如何安裝部署”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。