前提條件:
1.安裝K8S,參考:使用kubeadm安裝kubernetes_v1.18.x
2.安裝了NFS服務器:參考: 搭建NFS Server
- 配置好docker本地私有倉庫,假設當前的docker私倉地址為192.168.10.240:8050
# 可直接通過 docker-compose 創建一個本地私有倉庫
# 將此文件命名為 registry.yaml 運行 docker-compose -f registry.yaml up 啟動
# 啟動完成后,將生成的auth/passwd文件內容改成如下文本,去掉#號,即聲明賬號和密碼為 docker 和 123456
# docker:$2y$05$9lG7QFC/hSCj/s.c4769K.4mSsqWF5OwTPv2UP6.itFGlWCV/HwVS
version: '2.1'
services:
registry:
image: registry
container_name: my_registry
volumes:
- ./registry:/var/lib/registry
- ./auth:/auth
environment:
- REGISTRY_AUTH=htpasswd
- REGISTRY_AUTH_HTPASSWD_REALM=Registry_Realm
- REGISTRY_AUTH_HTPASSWD_PATH=/auth/passwd
restart: always
privileged: true
ports:
- "8050:5000"
然后將私倉的地址配置到docker的daemon配置文件中.Linux環境叫daemon.json,docker安裝后默認沒有daemon.json這個配置文件,需要進行手動創建。配置文件的默認路徑:/etc/docker/daemon.json。windows配置如下:
image.png
- 下載demo應用程序JAR包 鏈接:https://pan.baidu.com/s/1eG1qXjPhOYqK80k65LX8Aw
提取碼:kmcb - 下載相關配置文件,https://github.com/sun449036002/k8s-springboot-springcloud-consul.git,并把之前下載的兩個jar包,復制到此項目中的根目錄(k8s-springboot-springcloud-consul目錄)
打包鏡像并上傳到本地私有倉庫
- 先登錄本地倉庫,按提示輸入賬號和密碼
docker login 192.168.10.240:8050
- 在根目錄,根據Dockerfile build 鏡像,打上標簽并push到私有倉庫, 注意build時末尾的點號
docker build -t shop-api .
docker tag shop-api 192.168.10.240:8050/sym/shop-api
docker push 192.168.10.240:8050/sym/shop-api
docker build -t shop-user-center -f Dockerfile4UserCenter .
docker tag shop-user-center 192.168.10.240:8050/sym/shop-user-center
docker push 192.168.10.240:8050/sym/shop-user-center
- 創建k8s中docker pull 時需要使用到的認證名稱,賬號密碼換成自己的搭建時設置的值
kubectl create secret docker-registry regsecret --docker-server=192.168.10.240:8050 --docker-username=docker --docker-password=123456 --docker-email=5566@qq.com
k8s.yaml配置文件描述:
-
user api 配置說明:image.png
-
mysql、redis 配置說明
mysql的數據內容直接映射到主機的本地硬盤中
mysql的配置文件通過將數據映射到掛載在本地的NFS對應的目錄中,
image.png
程序中通過K8S配置的Service名稱來連接mysql,故這里的服務名稱不能變,同理,redis類似。
image.png
image.png -
consul 配置說明image.png
啟動應用
進入到 k8s-springboot-springcloud-consul目錄,執行啟動各服務
kubectl apply -f k8s.yaml
執行后,查看運行狀態,
kubectl get svc,pod -o wide
image.png
通過上面的端口加本機IP訪問 consul后臺UI界面
image.png
若都是Running說明啟動成功, 若有沒有在Running狀態的,可執行以下命令查看錯誤原因及日志
kubectl describe pod/user-api-55f444446c-mmlf6
image.png
# 或者查看 pod中的日志,看是否有具體的報錯信息
kubectl logs pod/user-api-55f444446c-mmlf6
image.png
當查看 pod/user-center-xxxxx的log日志時,發現shop數據庫沒有創建時,可通過mysql工具連接到mysql,創建名為shop的數據,并導入項目根目錄中sql.sql中的數據,
# 連接數據的信息
host: 127.0.0.1
port: 31233
user:root
password:123456
并重啟pod即可,通過kubuctl delete 刪除pod,使控制器自動啟動一個新的pod
#刪除容器,使之重啟一個
kubectl delete pod/user-center-xxxxxx
后續數據準備,并驗證接口
- 先通過映射出來的端口,連接redis 并往redis插入一條數據token對應的openid oIBgo45C6N1kW8u2ZF1,假如指定token為abvdefg
# 連接redis信息
# host: 127.0.0.1
# port: 31238
# password:123456
SET user:openid:abvdefg "oIBgo45C6N1kW8u2ZF1"
- postman post 請求updateuserinfo接口存入redis,或者直接命令行中curl請求
curl --location --request POST 'http://127.0.0.1:31234/updateInfo?token=abvdefg' \
--form 'nickName=abc' \
--form 'avatarUrl=abc123456789' \
--form 'city=上海' \
--form 'gener=1' \
--form 'country=中國' \
--form 'province=上海' \
--form 'language=1'
image.png
3.最后訪問接口查看是否正常獲取到用戶信息
http://127.0.0.1:31234/user/detail?token=abvdefg
image.png
本人學習時網上搜羅記錄以此, 歡迎騷擾、留言、and 噴我
外加效果圖 (微信小程序,掃碼查看):
image.png