快速上手k8s——minikube最小實(shí)現(xiàn)

前言

最近在研究k8s,就來寫一個關(guān)于k8s快速上手硝拧,并記錄采坑的點(diǎn)。
需要的前置知識點(diǎn):docker葛假、k8s的一些基本概念障陶,下面這個可能對你有幫助。
https://juejin.im/post/5d1b2a656fb9a07edc0b7058

什么是k8s

我們知道聊训,我們可以將項(xiàng)目制作成docker鏡像抱究,然后利用docker去部署我們的項(xiàng)目,這樣可以解決很多服務(wù)器環(huán)境所帶來的問題带斑;
但是容器多了媳维,容器與容器之間就需要訪問酿雪,之間就需要網(wǎng)絡(luò)配置等等,從而就有了docker-compose侄刽;
但是當(dāng)我們的服務(wù)進(jìn)行升級指黎,或者服務(wù)需要進(jìn)行調(diào)度,擴(kuò)容等等州丹,這個時(shí)候就需要一個大管家來管所有的東西醋安;
這個大管家就是 - Kubernetes

初學(xué)會遇到的問題

因?yàn)閗8s的東西太多了,所以學(xué)習(xí)成本現(xiàn)在越來越高墓毒,好在k8s已經(jīng)很多教程吓揪。我說一下現(xiàn)在學(xué)的時(shí)候肯定會遇到的大問題:

  • 國內(nèi)的問題(國內(nèi)環(huán)境很多鏡像拉不到)
  • 本地搭建環(huán)境(原來搭建k8s需要一些服務(wù)器)
  • 電腦環(huán)境的問題(windows和mac都有坑點(diǎn))

最小實(shí)現(xiàn)

現(xiàn)在我們就來在本機(jī)實(shí)現(xiàn)一個最小的k8s的實(shí)現(xiàn),給出一個hello-world
k8s提供了minikube所计,這個東西可以讓你本機(jī)一臺機(jī)器就可以搭建起這個環(huán)境柠辞。擁有和線上一樣的命令行操作和模式,但是不需要你再去創(chuàng)建很多虛擬機(jī)來搞事情了主胧。超級方便也叭首。
https://minikube.sigs.k8s.io/
我們就利用這個來實(shí)現(xiàn),下面來說說步驟:
我的本機(jī)環(huán)境:

  • macOS
  • minikube version: v1.5.2
  • Docker version 18.03.1-ce

安裝環(huán)境

大致步驟:https://minikube.sigs.k8s.io/docs/start/macos/

  • brew install minikube
  • brew install docker-machine-driver-vmware
  • minikube start --vm-driver=vmware --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers

成功之后:

  • minikube status 查看minikube的狀態(tài)
  • minikube ip 查看minikube的ip
  • minikube dashboard 打開dashboard展示k8s的狀態(tài)

安裝坑點(diǎn)

  • HyperKit最新版本可能存在問題踪栋,所以我使用VMware Fusion實(shí)現(xiàn)虛擬化的依賴
  • 國內(nèi)k8s.gcr.io的相關(guān)鏡像國內(nèi)拉取不到焙格,使用mirrorgooglecontainers也無法拉取到,所以使用阿里云的倉庫 https://github.com/kubernetes/minikube/issues/3860
  • 如果之前已經(jīng)使用過minikube start命令夷都,建議先minikube delete眷唉,并刪除rm -rf ~/.minikube/,然后重新start

進(jìn)行部署

首先描述一下部署要做的事情:linkinstar/mini-go:v1.0 是我已經(jīng)上傳到 docker-hub 里面的一個已經(jīng)做好的最簡單的項(xiàng)目囤官,會暴露一個8080端口的web服務(wù)冬阳;
最終的目標(biāo),在k8s創(chuàng)建一個pod党饮,pod中運(yùn)行一個我們的容器肝陪,最終我們在外部可以訪問到這個服務(wù)

首先創(chuàng)建兩個文件

# deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mini-go
  labels:
    app: mini-go
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mini-go
  template:
    metadata:
      labels:
        app: mini-go
    spec:
      containers:
      - name: mini-go
        image: linkinstar/mini-go:v1.0
        ports:
        - containerPort: 8080

# service.yaml
apiVersion: v1
kind: Service
metadata:
  name: mini-go-service
spec:
  selector:
    app: mini-go
  type: NodePort
  ports:
  - protocol: TCP
    port: 80
    targetPort: 8080
    nodePort: 30008

執(zhí)行

  • kubectl create -f service.yaml
  • kubectl create -f deploy.yaml

查看

執(zhí)行成功可以再dashboard中查看執(zhí)行狀態(tài)


image

image

最終訪問地址查看到服務(wù)是否正常:http://192.168.231.146:30008/
其中的ip是通過 minikube ip 命令查看的

服務(wù)操作

水平伸縮

在現(xiàn)實(shí)的業(yè)務(wù)環(huán)境中,當(dāng)用戶的訪問增多劫谅,我們需要擴(kuò)展我們的應(yīng)用,也就是水平的去多部署幾個容器嚷掠,有了k8s之后這件事就變得非常的容易了捏检。

  • 修改 deploy.yaml 文件中的 replicas: 2 改成2個
  • 使用命令:kubectl apply -f deploy.yaml 使配置生效

然后我們就可以看到,原來的一個pod變成了兩個不皆,而k8s會將我們的請求負(fù)載均衡到每個pod中贯城。整個過程可以說是非常的優(yōu)雅了。

image

同樣的霹娄,當(dāng)我們需要減少服務(wù)的數(shù)量時(shí)也是相同的道理

版本升級

對于應(yīng)用的版本升級也是同樣的道理

  • 修改 deploy.yaml 文件中的 image: linkinstar/mini-go:v2.0 改成2.0
  • 使用命令:kubectl apply -f deploy.yaml 使配置生效

版本回退

當(dāng)我們發(fā)現(xiàn)發(fā)布的服務(wù)問題能犯,想要進(jìn)行版本回退的時(shí)候鲫骗,就可以使用
kubectl rollout undo deployments/mini-go
進(jìn)行版本回退,下面是版本回退過程中

image

讓minikube的dashboard能外網(wǎng)訪問

當(dāng)我們使用minikube搭建一個k8s的環(huán)境時(shí)踩晶,如何使用的時(shí)候服務(wù)器并不是使用本機(jī)進(jìn)行搭建执泰,那么會遇到dashboard頁面沒有辦法被外部訪問的問題。解決方式如下:

啟動

首先使用minikube dashboard命令啟動

# minikube dashboard
??  Verifying dashboard health ...
??  Launching proxy ...
??  Verifying proxy health ...
http://127.0.0.1:42968/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/

然后記住最下面的訪問地址:http://127.0.0.1:42968/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/

設(shè)置代理

再打開一個sh窗口
使用 kubectl proxy --port=[需要暴露的端口號] --address='[服務(wù)器IP]' --accept-hosts='^[外部訪問服務(wù)器的IP]$' 添加k8s集群對外的訪問代理渡蜻。

# kubectl proxy --port=8887 --address='172.31.251.45' --accept-hosts='^.*'

這里的port是你后面通過外網(wǎng)訪問的端口术吝,如果使用云服務(wù)器記得設(shè)置防火墻規(guī)則,其中的address為服務(wù)器ip地址可以使用minikube ip命令獲得茸苇,我這里允許的是任意機(jī)器

瀏覽器訪問

http://192.168.1.101:8887/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/#/cronjob?namespace=default

  • 其中的ip為服務(wù)器的ip
  • 端口為代理設(shè)置的端口
  • 剩下的地址為dashboard啟動時(shí)顯示的地址

如果上述測試沒有問題使用 nohup 后臺啟動就可以了

總結(jié)

  • 使用minikube可以快速讓新手感受到k8s到底是如何使用的
  • 環(huán)境配置過程中會有很多問題排苍,需要你耐心解決
  • k8s在服務(wù)編排上面除了以上提到的用法以外還有很多牛逼的功能等著你去發(fā)現(xiàn)
  • 學(xué)習(xí)過程中需要保持一個原則,先用著看看 -> 搞清楚架構(gòu) -> 嘗試各種功能 -> 學(xué)習(xí)各個模塊的實(shí)現(xiàn) -> 最終實(shí)踐
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末学密,一起剝皮案震驚了整個濱河市淘衙,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌腻暮,老刑警劉巖彤守,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異西壮,居然都是意外死亡遗增,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進(jìn)店門款青,熙熙樓的掌柜王于貴愁眉苦臉地迎上來做修,“玉大人,你說我怎么就攤上這事抡草∈渭埃” “怎么了?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵康震,是天一觀的道長燎含。 經(jīng)常有香客問我,道長腿短,這世上最難降的妖魔是什么屏箍? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮橘忱,結(jié)果婚禮上赴魁,老公的妹妹穿的比我還像新娘。我一直安慰自己钝诚,他們只是感情好颖御,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著凝颇,像睡著了一般潘拱。 火紅的嫁衣襯著肌膚如雪疹鳄。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天芦岂,我揣著相機(jī)與錄音瘪弓,去河邊找鬼。 笑死盔腔,一個胖子當(dāng)著我的面吹牛杠茬,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播弛随,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼瓢喉,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了舀透?” 一聲冷哼從身側(cè)響起栓票,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎愕够,沒想到半個月后走贪,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡惑芭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年坠狡,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片遂跟。...
    茶點(diǎn)故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡逃沿,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出幻锁,到底是詐尸還是另有隱情凯亮,我是刑警寧澤,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布哄尔,位于F島的核電站假消,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏岭接。R本人自食惡果不足惜富拗,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望鸣戴。 院中可真熱鬧啃沪,春花似錦、人聲如沸葵擎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽酬滤。三九已至签餐,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間盯串,已是汗流浹背氯檐。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留体捏,地道東北人冠摄。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像几缭,于是被迫代替她去往敵國和親河泳。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 容器技術(shù)是微服務(wù)技術(shù)的核心技術(shù)之一年栓,并隨著微服務(wù)的流行而迅速成為主流拆挥。Docker是容器技術(shù)的先驅(qū)和奠基者,它出現(xiàn)...
    倚天碼農(nóng)閱讀 1,140評論 1 4
  • k8s容器編排 [TOC] 1:k8s集群的安裝 1.1 k8s的架構(gòu) 除了核心組件某抓,還有一些推薦的Add-ons...
    Zh_bd92閱讀 902評論 0 0
  • 公司給配的工作機(jī)器是Win10電腦纸兔,閑來無事想體驗(yàn)一下K8S的魔力,到處搜了攻略文章最終成功否副,記錄一下過程和中間遇...
    無式閱讀 6,701評論 0 7
  • 昨天半夜里小妹妹起來玩汉矿,我和媽媽都在旁邊守著。小妹妹被哄睡著了备禀,媽媽也睡著了洲拇,我沒睡著,一直熬到天亮才睡的覺...
    冷晨樂閱讀 67評論 0 0
  • 讀書是能用最小成本獲取最大價(jià)值的一件事痹届。 剛開始讀書要泛讀呻待,不是泛泛的讀,而是廣泛的讀队腐。讀的多了蚕捉,思維就更寬泛了,...
    我還是個孩子呢閱讀 111評論 0 0