最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

學習日志 21-12-16 K8s入門 - 制作Java鏡像并部署

2021-12-16 17:24 作者:mayoiwill  | 我要投稿

K8s入門 - 制作Java鏡像并部署
===========================

# 參考
- https://dockerize.io/guides/docker-spring-boot-guide

# spring-boot 原版打包
- 用了start.spring.io做的spring boot 初始工程
- 用了web starter
- 加了個controller 處理對web根路徑的請求
- 直接使用mvn clean package打包
- 結(jié)果
?- 在target目錄獲得了一個可執(zhí)行jar包
?- 類似`springbootdemo-0.0.1-SNAPSHOT.jar`
?- 該jar包可以不依賴其它任何jar包, 只靠自己就可以提供8080端口上的web服務了
- 下一步做docker image 目標
?- 提供java的可執(zhí)行環(huán)境 + 上述jar包

# Docker化
- Dockerfile
?- base image - openjdk:11-jre-slim
? ?- slim linux + openjdk 11
? ?- os級
?- WORKDIR - /app
?- COPY 看本機 到 鏡像 的橋梁
? ?- 源 可掃行java文件 本機 windows系統(tǒng) 或 編譯機
? ?- 目標 image 上的目標路徑
?- EXPOSE - 8080
? ?- 打開 8080 端口
? ?- 待驗證 k8s 可以根據(jù)這個指示打開對應的端口
?- CMD - `["java", "-jar", "springbootdemo-0.0.1-SNAPSHOT.jar"]`
? ?- 啟動docker主進程的指令
? ?- 待驗證 k8s logs 指令會監(jiān)聽該進程的標準輸出
- 改參考 另一篇文檔
?- https://cloud.tencent.com/developer/article/1580841
?- 原因之前文檔是采用docker命令調(diào)用docker 客戶端打包
?- 我們希望 使用mvn 插件調(diào)用docker 客戶端打包
- 安裝docker客戶端
?- 這里會自動安裝一個docker的服務端集群 但我們其實并不需要這個
?- 我們只需要docker客戶端的打包能力
- 修改pom, 增加dockerfile plugin
- 執(zhí)行`mvn dockerfile:build`
- 結(jié)果
?- 生成了 `target\springbootdemo-0.0.1-SNAPSHOT-docker-info.jar`
- 總結(jié)
?- 安裝docker客戶端 可以使用docker命令行針對Dockerfile生成鏡像
?- 也可以使用maven插件調(diào)用docker客戶端完成相同的過程
? ?- dockerfile:build
? ?- dockerfile:push
?- docker打包和maven打包很相似, 從以下方面講
? ?- 都有個客戶端
? ? ?- apache-maven
? ? ?- docker desktop
? ? ?- 客戶端都負責構(gòu)建(build)
? ?- 都是根據(jù)一個關(guān)鍵文件進行構(gòu)建
? ? ?- maven是通過pom.xml文件進行構(gòu)建
? ? ?- docker是通過Dockerfile文件進行構(gòu)建
? ? ?- 構(gòu)建都會產(chǎn)生一個結(jié)果
? ? ?- maven的構(gòu)建結(jié)果一般是一個jar包
? ? ?- docker的構(gòu)建結(jié)果是image
? ?- 都有本地 和 遠程 的概念
? ? ?- docker本地庫 通過docker客戶端可以查看
? ? ?- maven 本地庫 一般在 ~/.m2
? ? ?- docker 遠程中心庫 dockerhub
? ? ?- maven 遠程中心庫 maven central
? ? ?- 通過push命令可以把本地的結(jié)果推到遠程中心庫上
? ?- 都有全局定位符的概念
? ? ?- maven的全局定位符是 GroupId ArtifactId version
? ? ?- docker的全局定位符是 name tag
? ?- 都有一個配置文件指示用哪個中心庫之類的
? ? ?- .m2/settings.xml
? ? ?- .docker/config.json

# 搭建一個私有docker registry
- https://www.linuxtechi.com/setup-private-docker-registry-kubernetes/

## 登錄node 創(chuàng)建證書
- win10下用hyper-v建的minikube集群, 其master node的直接連接登錄 用戶名/密碼
?- https://www.jppinto.com/2020/01/username-and-password-for-minikube-virtual-machine/
?- The default login is, username: “docker“, password: “tcuser“.
- 目的
?- 私有registry應該是走https協(xié)議 需要證書
?- 原文檔使用NFS在多個nodes中共享證書
? ?- 通過k8s yaml要求node把證書所在的目錄開放給pod
?- 我們的做法是假設(shè)只有minikube一個node, 那么僅在該node上創(chuàng)建證書即可
- 使用默認密碼, 走hyper-v直連minikube這個node
?- 創(chuàng)建證書的過程參考 上述文檔

## 創(chuàng)建deployment 和 service
- 參考 上述文檔中 private-registry.yaml 部分
- `kubectl apply -f ` 部署pod
- 校驗 略
- 復制證書給worker node 我們沒有worder node 略
- 參考 上述文檔中 private-registry-svc.yaml 部分
- `kubectl apply -f` 部署service
- 改windows的etc/hosts 域名解析記錄
?- minikube ip 是 類似 172.26.81.175
?- 自己想個域名 k8s-master
?- 修改 `C:\Windows\System32\drivers\etc\hosts`
?- 新增 172.26.81.175 k8s-master
?- ping k8s-master 校驗hosts修改結(jié)果
- 嘗試使用這個私有registry
?- `docker images` 查看本地鏡像
?- 使用tag重命名鏡像, 帶host前綴, 指示使用私有的k8s-master 庫
? ?- 參考 文檔
?- `docker push`

### Q&A
- Q: certificate is not valid for any names, but wanted to match k8s-master
- A: 當時創(chuàng)建證書時沒填 common name 字段
?- 直接上minikube node重新生成證書 同時參考下一個問題 使用SANs
? ?- 參考 文檔
?- 重啟deployment
? ?- kubectl rollout restart deployments/<deployment-name>
- Q: certificate relies on legacy Common Name field xxx
- A: 設(shè)法用SANs簽名方式 再生成一次證書
?```
?sudo openssl req -newkey rsa:4096 -nodes -sha256 \
? -keyout ./certs/registry.key -x509 -days 3650 \
? -out ./certs/registry.crt -subj "/CN=k8s-master" \
? -addext "subjectAltName = DNS:k8s-master"
?```
- Q: certificate signed by unknown authority
- A: 參考 https://stackoverflow.com/questions/36041648/docker-ssl-cert-for-windows
?- 從minikube的node上把證書下載下來
? ?- 可以ssh 到 minicube_ip 用戶名密碼見上述minikube node默認用戶名密碼
? ?- docker/tcuser
? ?- 直接cat證書內(nèi)容, 復制出來即可
?- windows 版的docker客戶端新增信任證書 ?
? ?- 根據(jù)上述貼子的另一個回復, docker win10新版會直接采用windows已安裝的證書
? ?- 因此只需要雙擊剛復制出來的證書, 通過win10界面安裝該證書即可
? ?- 重啟docker客戶端(不知道是不是必須)
? ?- 重新docker push 成功!

# 國內(nèi)常用docker registry
- alibaba
?- 要注冊 略

學習日志 21-12-16 K8s入門 - 制作Java鏡像并部署的評論 (共 條)

分享到微博請遵守國家法律
定陶县| 达孜县| 衡阳县| 大竹县| 积石山| 保德县| 安阳县| 米脂县| 乐安县| 黑河市| 绍兴县| 桦南县| 寿光市| 通化市| 阆中市| 逊克县| 镇巴县| 石门县| 岳阳市| 莱西市| 建宁县| 衡阳市| 邵东县| 桂林市| 天长市| 茂名市| 新营市| 武平县| 滨海县| 广丰县| 河北区| 鲁甸县| 奈曼旗| 怀安县| 二连浩特市| 昌都县| 乐昌市| 新龙县| 四平市| 乐亭县| 临猗县|