Windows安裝Kubernetes

環(huán)境依賴

  • 需要事先正確安裝Docker Desktop
  • 筆記本最好不低于16G內(nèi)存

背景說明

學(xué)習(xí)Kubernetes的第一步就需要搭建一個(gè)可用的Kubernetes環(huán)境,這里針對(duì)Windows的安裝過程做簡(jiǎn)要記錄

解決方案

事先安裝Docker Desktop

image.png

日志目錄

安裝過程中可能會(huì)出現(xiàn)錯(cuò)誤需要我們及時(shí)查看日志來排查問題蛹含,日志目錄:C:\ProgramData\DockerDesktop


image.png

版本確認(rèn)

首先確認(rèn)當(dāng)前需要安裝的版本毅厚,從下圖中可以看到需要安裝的版本為v1.22.4


image.png

鏡像配置

確認(rèn)鏡像源配置為阿里云鏡像加速


image.png

安裝鏡像

由于國(guó)內(nèi)的網(wǎng)絡(luò)問題,直接啟用Kubernetes會(huì)無(wú)法正常啟動(dòng)浦箱,如下圖所示

image.png

此時(shí)在github開源庫(kù)中提供了鏡像的阿里云方案https://github.com/AliyunContainerService/k8s-for-docker-desktop
image.png

進(jìn)行分支切換
image.png

找到對(duì)應(yīng)需要安裝的分支吸耿,并下載文件
image.png

文件下載后并解壓
image.png

執(zhí)行鏡像下載命令
image.png

查看已有鏡像
image.png

網(wǎng)絡(luò)配置

進(jìn)入目錄C:\Windows\System32\drivers\etc編輯文件hosts添加一行

# Kubernetes
127.0.0.1 kubernetes.docker.internal
image.png

否則執(zhí)行命令會(huì)出現(xiàn)如下錯(cuò)誤

PS D:\> kubectl.exe cluster-info
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
Unable to connect to the server: dial tcp: lookup kubernetes.docker.internal: no such host

服務(wù)啟用

把勾勾上,等待一段時(shí)間酷窥,就會(huì)發(fā)現(xiàn)下發(fā)那個(gè)kubernetes的點(diǎn)變綠了咽安,代表kubernetes啟動(dòng)成功


image.png

由于啟動(dòng)較慢,這里可以通過命令查看容器的啟動(dòng)狀態(tài)


image.png

命令驗(yàn)證

PS D:\> kubectl.exe  cluster-info
Kubernetes control plane is running at https://kubernetes.docker.internal:6443
CoreDNS is running at https://kubernetes.docker.internal:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

此時(shí)即可以說明環(huán)境安裝正常

安裝看板

應(yīng)用配置

PS D:\k8s-for-docker-desktop-1.22.4> kubectl.exe apply -f  .\kubernetes-dashboard.yaml
namespace/kubernetes-dashboard created
serviceaccount/kubernetes-dashboard created
service/kubernetes-dashboard created
secret/kubernetes-dashboard-certs created
secret/kubernetes-dashboard-key-holder created
role.rbac.authorization.k8s.io/kubernetes-dashboard created
rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
deployment.apps/kubernetes-dashboard created
deployment.apps/dashboard-metrics-scraper created

安裝進(jìn)度

PS D:\k8s-for-docker-desktop-1.22.4> kubectl get pod -n kubernetes-dashboard
NAME                                        READY   STATUS              RESTARTS   AGE
kubernetes-dashboard-576cb95f94-kx4xb       1/1     Running             0          50s
PS D:\k8s-for-docker-desktop-1.22.4> kubectl get pod -n kubernetes-dashboard
NAME                                        READY   STATUS              RESTARTS   AGE
dashboard-metrics-scraper-c45b7869d-m5xvs   0/1     ContainerCreating   0          53s
kubernetes-dashboard-576cb95f94-kx4xb       1/1     Running             0          53s
PS D:\k8s-for-docker-desktop-1.22.4> kubectl get pod -n kubernetes-dashboard
NAME                                        READY   STATUS              RESTARTS   AGE
dashboard-metrics-scraper-c45b7869d-m5xvs   0/1     ContainerCreating   0          54s
kubernetes-dashboard-576cb95f94-kx4xb       1/1     Running             0          54s
PS D:\k8s-for-docker-desktop-1.22.4> kubectl get pod -n kubernetes-dashboard
NAME                                        READY   STATUS    RESTARTS   AGE
dashboard-metrics-scraper-c45b7869d-m5xvs   1/1     Running   0          2m24s
kubernetes-dashboard-576cb95f94-kx4xb       1/1     Running   0          2m24s

訪問Token

PS C:\Users\86183> $TOKEN=((kubectl -n kube-system describe secret default | Select-String "token:") -split " +")[1]
PS C:\Users\86183> kubectl config set-credentials docker-desktop --token="${TOKEN}"
User "docker-desktop" set.
PS C:\Users\86183> echo $TOKEN
eyJhbGciOiJSUzI1NiIsImtpZCI6InJ5WXh2Y0RTUXR0Tm95dDlxdVA0SS1XX01iNWhQbmZqa1pSOTRjZGpRTEEifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkZWZhdWx0LXRva2VuLXBiNnFiIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImRlZmF1bHQiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiJkYzY2YWExYS1jZWIzLTRlNTctYjU5NC0yNWI3OTY2ZjlhOTYiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06ZGVmYXVsdCJ9.xUByTlmquRcGd2BQBWyAMtHA0p0PbXfUaSFLhsHNjpJ7fnqmd35H7c_ydKXDnwIoC1L1HP2mNiRvnyOaOz3ivCSkgdcpirHes5C0t3Y4GQF0Avdx2J3ASI3iULh0jBwYtUUrc8YUMqCwEnhvqoiGDfjjiRl-qVlN_FejSWeSWohdleBVMihfZj205YqwQJXMCD5IhC3n8-H5Sb1dcIY6Uo7OS-1wtfFT_sRJuOMCakQH1WjEZQ5ViZeCUBRAd1ZMfwG4ul5X1aVbB0p_wM95uTUOpM7xDsCGUkKOpioQabvsZmQJmYPlxepLt56rdx0x7o6MlM_aWOzQq6klUiydhw

訪問看板

使用kubectl proxy命令訪問

PS D:\k8s-for-docker-desktop-1.22.4> kubectl proxy
Starting to serve on 127.0.0.1:8001
E0103 21:26:27.189764   18436 proxy_server.go:147] Error while proxying request: context canceled
E0103 21:26:27.189764   18436 proxy_server.go:147] Error while proxying request: context canceled
E0103 21:26:27.190290   18436 proxy_server.go:147] Error while proxying request: context canceled
E0103 21:26:27.190290   18436 proxy_server.go:147] Error while proxying request: context canceled

注意命令行窗口不要關(guān)閉

打開瀏覽器訪問網(wǎng)址

http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy
image.png

填入Token并信息登錄


image.png

進(jìn)入后可以看到如下頁(yè)面


image.png

此時(shí)可以看到這里只有一個(gè)默認(rèn)的命名空間蓬推,且右側(cè)有錯(cuò)誤通知消息
image.png

訪問權(quán)限

清理舊提權(quán)

PS C:\Users\86183> kubectl delete clusterrolebinding serviceaccount-cluster-admin
Error from server (NotFound): clusterrolebindings.rbac.authorization.k8s.io "serviceaccount-cluster-admin" not found

創(chuàng)建集群用戶

PS C:\Users\86183> kubectl create clusterrolebinding serviceaccount-cluster-admin   --clusterrole=cluster-admin   --user=system:serviceaccount:kubernetes-dashboard:kubernetes-dashboard
clusterrolebinding.rbac.authorization.k8s.io/serviceaccount-cluster-admin created

查token用于登錄

PS C:\Users\86183> kubectl   describe  secrets  -n kubernetes-dashboard
Name:         default-token-64tln
Namespace:    kubernetes-dashboard
Labels:       <none>
Annotations:  kubernetes.io/service-account.name: default
              kubernetes.io/service-account.uid: e59829ab-b670-41ef-a336-00576bc0a50c

Type:  kubernetes.io/service-account-token

Data
====
ca.crt:     1099 bytes
namespace:  20 bytes
token:      eyJhbGciOiJSUzI1NiIsImtpZCI6InJ5WXh2Y0RTUXR0Tm95dDlxdVA0SS1XX01iNWhQbmZqa1pSOTRjZGpRTEEifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkZWZhdWx0LXRva2VuLTY0dGxuIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImRlZmF1bHQiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiJlNTk4MjlhYi1iNjcwLTQxZWYtYTMzNi0wMDU3NmJjMGE1MGMiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZXJuZXRlcy1kYXNoYm9hcmQ6ZGVmYXVsdCJ9.uP2MZLTxP9upIM80rkRtGe9WQ447XWKLq3ohc78R_oAwNGMxntSiXjckibkfv8Sez5zBzvWlaP5MwkWRR10gJOnM7fL8_en3vMIjRZ7Mc-xXF7q9cT2K81FuvmPOyUkbDpk4PWGKwihfVo-wWgx1KduRVJAhWxakjbLpVKA91Ntqs3Cy2F-pXC65pkjZqzmq815z0lS62raoZczn_z0fWYenKBEfdEgLaBfoteX6cvQvdo-aYy7qKwD9FBWuy-1xxmT1BFBEqRFKgbSgvmE1yJilTfhuaq_fA1TAzB4LxbaEYtwGGdsawUDIIM7ccz1A4Ue01oJx7N8Jc-PixkOQpA


Name:         kubernetes-dashboard-certs
Namespace:    kubernetes-dashboard
Labels:       k8s-app=kubernetes-dashboard
Annotations:  <none>

Type:  Opaque

Data
====


Name:         kubernetes-dashboard-csrf
Namespace:    kubernetes-dashboard
Labels:       k8s-app=kubernetes-dashboard
Annotations:  <none>

Type:  Opaque

Data
====
csrf:  256 bytes


Name:         kubernetes-dashboard-key-holder
Namespace:    kubernetes-dashboard
Type:  Opaque
Data
priv:  1679 bytes


Name:         kubernetes-dashboard-token-gk6s8
Namespace:    kubernetes-dashboard
Labels:       <none>
Annotations:  kubernetes.io/service-account.name: kubernetes-dashboard
              kubernetes.io/service-account.uid: 6f6c9deb-5638-4827-a9bb-765a93a3364a

Type:  kubernetes.io/service-account-token

Data
====
ca.crt:     1099 bytes
namespace:  20 bytes
token:      eyJhbGciOiJSUzI1NiIsImtpZCI6InJ5WXh2Y0RTUXR0Tm95dDlxdVA0SS1XX01iNWhQbmZqa1pSOTRjZGpRTEEifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJrdWJlcm5ldGVzLWRhc2hib2FyZC10b2tlbi1nazZzOCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6IjZmNmM5ZGViLTU2MzgtNDgyNy1hOWJiLTc2NWE5M2EzMzY0YSIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlcm5ldGVzLWRhc2hib2FyZDprdWJlcm5ldGVzLWRhc2hib2FyZCJ9.l54H6keE_5nswbim--I-HM9uSw27XAwHCavXr1D2wiLVEbSUrvfUyrn5RoPCOxSopCIRV8y4jbB76kmoE2ZdGhhoolGy-mSMEXX9SXrN3aiXzdfCF-OJ-C1KLCPXPFFiiMur9xLD9317OfCZZ9S6VJ6tUxJ4OPu2Zve5x-3_ZchlxlJ3fZNh6-r7vFN67W0RyFSfYj4nHTQD2e1CEyNEiapbybJyTi2o0CdnJKXRzMomZVVHW_e7K8mehJimygTBpNGbF1BoO6jdMJ2HE5OIwGs4GY-yo9nwdMgA9gFLYcAOtwjED2I1GCLDIN6VWoafOueZR9-oq6rRxCBRrSlF9g

登錄看板


image.png

image.png

此時(shí)這里可以看到多有的命令空間妆棒,且右側(cè)不會(huì)再有報(bào)錯(cuò)通知消息

保證kubeproxy處于啟動(dòng)狀態(tài)

創(chuàng)建應(yīng)用

image.png

此時(shí)查看Pod等待正常運(yùn)行即可


image.png

image.png

訪問應(yīng)用

打開瀏覽器訪問http://localhost:8080/

image.png

參考文檔

https://blog.csdn.net/qq_38836770/article/details/108801300
https://wayneshao.com/posts/10324.html
https://github.com/AliyunContainerService/k8s-for-docker-desktop/issues/180
https://blog.csdn.net/zhangbaoxiang/article/details/106559533

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市沸伏,隨后出現(xiàn)的幾起案子糕珊,更是在濱河造成了極大的恐慌,老刑警劉巖毅糟,帶你破解...
    沈念sama閱讀 218,858評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件红选,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡姆另,警方通過查閱死者的電腦和手機(jī)喇肋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門坟乾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蝶防,你說我怎么就攤上這事糊渊。” “怎么了慧脱?”我有些...
    開封第一講書人閱讀 165,282評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵渺绒,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我菱鸥,道長(zhǎng)宗兼,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,842評(píng)論 1 295
  • 正文 為了忘掉前任氮采,我火速辦了婚禮殷绍,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘鹊漠。我一直安慰自己主到,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評(píng)論 6 392
  • 文/花漫 我一把揭開白布躯概。 她就那樣靜靜地躺著登钥,像睡著了一般。 火紅的嫁衣襯著肌膚如雪娶靡。 梳的紋絲不亂的頭發(fā)上牧牢,一...
    開封第一講書人閱讀 51,679評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音姿锭,去河邊找鬼塔鳍。 笑死,一個(gè)胖子當(dāng)著我的面吹牛呻此,可吹牛的內(nèi)容都是我干的轮纫。 我是一名探鬼主播,決...
    沈念sama閱讀 40,406評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼焚鲜,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼掌唾!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起恃泪,我...
    開封第一講書人閱讀 39,311評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤郑兴,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后贝乎,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體情连,經(jīng)...
    沈念sama閱讀 45,767評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年览效,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了却舀。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片虫几。...
    茶點(diǎn)故事閱讀 40,090評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖挽拔,靈堂內(nèi)的尸體忽然破棺而出辆脸,到底是詐尸還是另有隱情,我是刑警寧澤螃诅,帶...
    沈念sama閱讀 35,785評(píng)論 5 346
  • 正文 年R本政府宣布啡氢,位于F島的核電站,受9級(jí)特大地震影響术裸,放射性物質(zhì)發(fā)生泄漏倘是。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評(píng)論 3 331
  • 文/蒙蒙 一袭艺、第九天 我趴在偏房一處隱蔽的房頂上張望搀崭。 院中可真熱鬧,春花似錦猾编、人聲如沸瘤睹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)轰传。三九已至,卻和暖如春苇羡,著一層夾襖步出監(jiān)牢的瞬間绸吸,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評(píng)論 1 271
  • 我被黑心中介騙來泰國(guó)打工设江, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人攘轩。 一個(gè)月前我還...
    沈念sama閱讀 48,298評(píng)論 3 372
  • 正文 我出身青樓叉存,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親度帮。 傳聞我的和親對(duì)象是個(gè)殘疾皇子歼捏,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評(píng)論 2 355

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