在之前的文檔中,我們部署了.net core web在k8s環境下,達成了集群管理項目的目的。但是,由於是本地部署,需要在所有的node節點都拉取好鏡像,這是非常麻煩的,為了只維護一份代碼,同步更新。我們將使用docker鏡像拉取,但是,由於GitHub倉庫的push和pull太慢,經常失敗,因此,本地簡單部署一個私有倉庫。記錄下過程。
一、准備工作
1、兩台或以上的虛擬機,2cpu
192.168.3.181 k8s-master
192.168.2.156 k8s-node
2、docker最新版
3、k8s環境,不會配的看看其他文檔
二、本地倉庫
本地倉庫會用到官方鏡像,registry
docker pull registry
這一步你可能因為網絡問題拉取不下來,解決方法:
dig @114.114.114.114 docker.io
使用該命令獲取到可用ip,編輯hosts
vim /etc/hosts
2、docker images查看該鏡像
3、運行容器
docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry
4、查看倉庫里的鏡像
curl http://192.168.1.197:5000/v2/_catalog
當然,現在是空的,沒什么好看的
三、上傳&拉取鏡像
1、編輯tag
首先,你需要有一個鏡像,比如我這里用的test
執行命令修改tag
docker tag test 192.168.3.181:5000/test:v1
格式是: docker tag 鏡像名 ip:端口/鏡像名:版本(版本是為了k8s項目更新)
2、推送鏡像(push)
docker push 192.168.3.181:5000/test:v1
一般情況下,這時候你會遇到一個錯誤
你需要執行:vim /etc/docker/daemon.json 進行編輯
當然了,ip地址和端口記得改成自己的,然后再次push,就能正常了
3、上傳成功后,可以刪除本地鏡像,從倉庫拉取
docker rmi 192.168.3.181:5000/test:v1 docker pull 192.168.3.181:5000/test:v1
4、在局域網的其他機器拉取鏡像
在局域網的其他機器拉取鏡像,需要同樣的,編輯vim /etc/docker/daemon.json
內容跟上面也一樣,不贅述
四、項目部署
1、修改.yaml文件
參考本地部署文檔里面的.yaml文件,https://www.cnblogs.com/CoderLinkf/p/12408589.html
這里改動兩個地方,第一個,images:改為192.168.3.181:5000/test:v1
拉取策略:imagePullPolicy:IfNotPresent(如果本地沒有就從倉庫拉取)
2、執行apply命令
kubectl apply -f 你的文件名.yaml
這里要注意的一點是,如果你的項目還沒運行過,那么,不要直接用apply命令,請先使用create命令
kubectl create -f 你的文件名.yaml
3、kubectl get pods 即可查看狀態,running狀態就成功了