學(xué)習(xí)日志21-12-14 K8s入門 - 無狀態(tài)服務(wù)
K8s入門 - 無狀態(tài)服務(wù)
=====================
# 目標(biāo)
- 搭建無狀態(tài)服務(wù)集群
- 創(chuàng)建pod
- 部署應(yīng)用
- 登錄pod 監(jiān)控應(yīng)用
- 創(chuàng)建服務(wù)
- 監(jiān)控服務(wù)等k8s資源
# 檢查集群狀態(tài)
## 啟動(dòng)minikube
- 注意MINIKUBE_HOME決定了.minikube目錄的位置
- 即minikube所占用的磁盤等資源的位置
- 設(shè)置MINIKUBE_HOME=E:\minikube
`$env:MINIKUBE_HOME="E:\minikube"`
- 執(zhí)行 minikube.exe start
### Q&A
- Q: 報(bào)c:/users ... 下文件已存在
- A: 環(huán)境變量沒生效, 沒有在E盤下創(chuàng)建
? - 使用windows的環(huán)境變量設(shè)置語句
? - 設(shè)置 如上
? - 校驗(yàn) 直接執(zhí)行 `$env:MINIKUBE_HOME`
? - 結(jié)果 `E:\minikube` 表示成功
## 校驗(yàn)minikube 和 k8s 狀態(tài)
- `.\minikube.exe version` 查看minikube的版本
- `.\minikube.exe kubectl version` 查看kubectl版本
? - 可以看到兩個(gè)版本號(hào), 即Client Version 和 Server Version
? - 表示k8s客戶端和服務(wù)端都已經(jīng)正常運(yùn)行
- `.\minikube.exe kubectl cluster-info` 查看k8s集群狀態(tài)
? - 有兩項(xiàng)數(shù)據(jù) Kubernetes control plan 和 CoreDNS
- `.\minikube.exe kubectl get nodes` 獲取所有nodes的信息
# 部署應(yīng)用
## 創(chuàng)建部署
- `kubectl create deployment kubernetes-bootcamp --image=gcr.io/google-samples/kubernetes-bootcamp:v1`
? - gcr.azk8s.cn/google-samples/kubernetes-bootcamp
? ```
? gcr.io/namespace/image_name:image_tag
? # 等價(jià)于
? anjia0532/namespace.image_name:image_tag
? k8s.gcr.io/{image}/{tag} <==> gcr.io/google-containers/{image}/{tag} <==> anjia0532/google-containers.{image}/{tag}
? create deployment kubernetes-bootcamp --image=anjia0532/google-samples.kubernetes-bootcamp:v1
? ```
? - create = 動(dòng)作
? - deployment = 資源類型
? - kubernetes-bootcamp = 資源名 (任意)
? - `--xxx` 后面的部分是參數(shù)細(xì)節(jié)
- 安裝kubectl
? - minikube start成功后, 會(huì)創(chuàng)建~/.kube/config 指示kubectl客戶端如何連接到k8s集群
? - minikube還操控hyper-v打通了網(wǎng)絡(luò) 可以ping k8s集群的內(nèi)部ip了
- 使用kubectl proxy 打通restful管理服務(wù)api(以下簡稱api)
? `kubectl proxy`
- 通過api查看k8s服務(wù)信息
? `http://localhost:8001/version`
- 查看pod名字
? `kubectl get pods`
- 通過api查看pod信息
? `http://localhost:8001/api/v1/namespaces/default/pods/kubernetes-bootcamp-57978f5f5d-k58bg`
? - 看看有價(jià)值的信息有哪些
? - 主要都是管理信息 涉及pod image規(guī)范
? - namespace是default 有啥用?
- 刪除deployment (可選 后續(xù)文檔基于沒有執(zhí)行刪除的情況)
? - `delete deployment kubernetes-bootcamp`
? - 還是4部分: 操作, 資源類型, 資源名, 細(xì)節(jié)參數(shù)
? - 這次沒有細(xì)節(jié)參數(shù)
### Q&A
- Q: 使用`.\minikube.exe kubectl xxx --xx`的命令格式
? `--xx` 被識(shí)別為minikube.exe的參數(shù) 而不是kubectl的參數(shù)
- A: 虛擬機(jī)外, 本地環(huán)境安裝kubectl
? https://kubernetes.io/docs/tasks/tools/install-kubectl-windows/
- Q: get deployment READY一直是0/1
- A: 通過 get pods 看到 STATUS 是 ImagePullBackOff
? 嘗試直接下載 gcr.io/google-samples/kubernetes-bootcamp
? 發(fā)現(xiàn)使用的是 google cloud 由于某種原因網(wǎng)絡(luò)不通
? 先刪除deployment 之后找個(gè)網(wǎng)絡(luò)能通的鏡像源代替
? - 參考 https://cloud.tencent.com/developer/article/1353088
? - 鏡像地址替換為 anjia0532/google-samples.kubernetes-bootcamp:v1
# 登錄pod
- TODO