本篇將會講解k8s是什麼?本機k8s環境搭建,部署一個pod並演示幾個kubectl命令,k8s dashboard安裝。html
k8s是kubernetes的簡寫,它是一個全新的基於容器技術的分佈式架構領先方案。它是谷歌內部使用的大規模集羣管理系統Borg的一個開源版本。這個項目在谷歌內部使用多年,因爲員工簽署了保密協議,因此外界對這個項目一無所知。直到kubernetes的開源一舉成名,你們才得以瞭解。Kubernetes是一個開放的開發平臺,並不限制特定的編程語言,任何語言編寫的服務均可以被映射爲Kubernetes的Service(服務),並經過標準的TCP通訊協議進行交互。你在處理分佈式系統所須要用到的能力,在kubernetes中都支持,好比服務發現、故障發現和自我修復、滾動升級、擴容等。總之,Kubernetes是一個分佈式解決方案、是一個一站式的完備的分佈式系統開發和支撐平臺。k8s+docker使得小規模團隊甚至是我的hold住大型項目成爲可能。node
若是以前沒有接觸過k8s的話,也許聽完上面的解釋,並非很清楚。而在軟件技術的學習中,實操十分重要,搭建好環境,實際操做幾回就不會以爲那麼陌生了。在本機搭建k8s環境,咱們有兩種方式:git
本例將使用第一種方式,在mac電腦上搭建k8s環境。這種方式相對簡單,能夠快速的搭建起來實驗看看效果。以Mac爲例,當咱們按照上一篇文章的步驟配置好了docker環境以後,點擊docker小圖標,打開菜單,找到「Preferences..」,在彈出的配窗口中,能夠看到Kubernetes,界面以下:
github
當咱們安裝好docker desktop for mac/windows以後,默認狀況下,「Enable kubernetes」 是沒勾選的。咱們須要先進行下面的操做,而後過來勾選這個以啓動k8s。docker
爲了使得下載某些鏡像更快,咱們須要配置一下鏡像加速器。爲了使用阿里雲的鏡像加速器,你須要先註冊一個阿里雲帳號(進入aliyun.com註冊便可)。登陸阿里雲的控制檯以後,進入「容器鏡像服務」,在左側的菜單中展開「鏡像中心」,點擊「鏡像加速器」,能夠看到你的專屬鏡像加速器地址,大概是這樣子:shell
https://xxxxx.mirror.aliyuncs.com
若是你註冊阿里雲帳號還真,找不到這個頁面,能夠直接從這個連接進入:編程
https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
獲得加速器地址以後,把他配置到docker裏邊去,docker->Preferences->Daemon->Registry Mirrods 點加號,貼入地址,重啓以後就生效了。windows
這個過程徹底參考阿里雲的一個倉庫:https://github.com/AliyunContainerService/k8s-for-docker-desktop
api
首先clone一下這個倉庫:瀏覽器
git clone https://github.com/AliyunContainerService/k8s-for-docker-desktop.git
clone好倉庫以後,進入能夠看到裏邊有一個文件:load_images.sh。咱們先保持在這個目錄,一回兒須要執行這個腳本
可是執行以前,須要在About Docker中查看kubernetes的版本,個人版本是:
Kubernetes: v1.14.8
能夠看到是v1.14.8
下面咱們來切換一下上面所clone的代碼的分支:
git checkout v1.14.8
OK,下面能夠執行腳本了./load_images.sh
這個腳本執行過程當中,將會從阿里雲下載Kubernetes 所須要的鏡像,這個過程大概須要兩三分鐘。這個命令執行完了以後,咱們就能夠開啓k8s了。Docker - > Preference -> kubernetes -> 勾選Enable kubernetes, apply and restart 。等待幾分鐘以後,咱們點開docker小圖標,能夠看到:
docker is running Kubernetes is runing
上面咱們已經配置好了k8s環境,下面咱們來驗證一下。kuberctl是一個命令行工具,在配置好k8s環境以後,這個命令就有了。咱們輸入:kubectl cluster-info
$ kubectl cluster-info Kubernetes master is running at https://kubernetes.docker.internal:6443 KubeDNS is running at https://kubernetes.docker.internal:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
能夠看到 kubernetes master is running, KubeDNS is running。說啓動正常,再看一個命令:kubectl get nodes
$ kubectl get nodes NAME STATUS ROLES AGE VERSION docker-desktop Ready master 32d v1.14.8
再看一個命令:kubectl get pods
$ kubectl get pods NAME READY STATUS RESTARTS AGE my-first-demo 1/1 Running 2 6d1h
能夠看到我部署了一個my-first-demo
應用正在運行。下一篇將會講解如何部署應用到k8s。
若是咱們想更直觀的看kubernetes內的應用狀況,咱們能夠部署Kubernetes控制檯,即Kubernetes dashboard。還記得上面步驟中中clone的倉庫吧(k8s-for-docker-desktop.git)。咱們再次進入這個目錄
cd your/path/to/k8s-for-docker-desktop
這個目錄中有一個kubernetes-dashboard.yaml
文件(注意看下分支,須要是你本機k8s的版本,例如v1.14.8)執行這個命令:
kubectl create -f kubernetes-dashboard.yaml
這個命令將會啓動Kubernetes dashboard,使用這個命令查看啓動情況:
$ kubectl get pod -n kube-system NAME READY STATUS RESTARTS AGE etcd-docker-desktop 1/1 Running 4 32d kubernetes-dashboard-5d9599dc98-g6czk 1/1 Running 7 32d
能夠看到下面有個kubernetes-dashboard-5d9599dc98-g6czk
,說明k8s控制檯的pod啓動成功。下面執行以下命令:
$ kubectl proxy Starting to serve on 127.0.0.1:8001
而後再瀏覽器訪問:
http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/#!/login
打開以後,能夠看到一個登錄界面:
咱們選擇「令牌」方式登錄,這裏須要令牌,得到令牌須要在命令行輸入以下命令:
TOKEN=$(kubectl -n kube-system describe secret default| awk '$1=="token:"{print $2}') kubectl config set-credentials docker-for-desktop --token="${TOKEN}" echo $TOKEN
這串命令比較長,複製完整,粘貼執行便可。會獲得一長串的字符串,複製貼到面板的令牌輸入框點擊登錄。你將會看到一個這樣的界面:
界面中,咱們能夠看到負載狀態,容器組信息等。操做過阿里雲k8s環境的同窗確定不陌生,阿里雲的容器dashboard就是這個,只是顏色不同而已。
至此,本文簡單介紹了一下k8s是什麼,並咱們配置好了本機的k8s環境,並演示了幾個kubectl
命令以查看k8s運行狀況。至此,準備工做算是作完了。下一篇將講如何部署應用到k8s。
Docker & k8s 系列一:快速上手docker
Docker & k8s 系列三:在k8s中部署單個服務實例
Docker & Kubenetes 系列四:集羣,擴容,升級,回滾