kubernetes使用本地倉庫


k8s與docker的安裝

我參考的是

https://kuboard.cn/install/install-k8s.html#%E6%96%87%E6%A1%A3%E7%89%B9%E7%82%B9

我搭建的服務器有三台,一台master、兩台worker。master會直接使用docker相關命令創建鏡像、並直接在docker里運行和測試容器。以下我將在master上建立本地倉庫。

自建本地倉庫

我參考的是

https://www.cnblogs.com/justmine/p/8666907.html
https://www.cnblogs.com/justmine/p/8678758.html

kubernetes我裝的是1.16.3的版本,倉庫源必須來自使用https的服務器。所以自建的本地倉庫也必須要有SSL證書。有兩個辦法解決證書問題

使用通用域名的證書

如果在運營中的域名購買過通用域名證書,那就好辦了。如購買的證書是*.mydomain.com,那么我們只需要想辦法將一個二級域名解釋為本地的IP地址,舉例,使用localdocker.mydomain.com指向本地IP192.168.100.100。為此需要修改master機與work機的/etc/hosts文件,增加以下內容

192.168.100.100  localdocker.mydomain.com

  

運行本地倉庫。注意其中的/opt/data/registry是master放本地倉庫的實質文件的目錄,請自行創建目錄。

docker run -d  --restart=always  --name registry  \
-v /opt/data/registry:/var/lib/registry \
-e REGISTRY_HTTP_ADDR=0.0.0.0:443 \
-p 443:443 registry:2

  

你可能想,這是不是跑一個鏡像嗎?沒錯,本地倉庫在容器里跑。

使用自制證書

如果沒有買過證書,或沒有通用域名證書。可以自己做一個。我的docker版本是18.9,過程簡述如下

創建證書,在master上錄入以下命令,我將使用安裝k8s時腳本創建的master的本地名稱“apiService.demo”來創建,在安裝k8s時各大服務器的/etc/hosts已加入該條目指向master,master也是我的本地倉庫服務器。

openssl req -newkey rsa:4096 -nodes -sha256 -keyout domain.key -x509 -days 365 -out domain.crt 

  命令會提示你需要錄入幾個要素,看到hostname時,需要錄入“apiService.demo”

將當前目錄的拷貝到 /opt/certs目錄下,以下命令會用到

運行本地倉庫

docker run -d \
  --restart=always \
  --name apiService.demo \
  -v /opt/data/registry:/var/lib/registry \
  -v /opt/certs:/certs \
  -e REGISTRY_HTTP_ADDR=0.0.0.0:443 \
  -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \
  -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \
  -p 443:443 registry:2

  

因為是自制的證書,所在需要自己手工分發到各大本地的服務器。因為只在docker里使用,master 下執行以下命令

mkdir -p /etc/docker/certs.d/apiService.demo
cp /opt/certs/domain.crt /etc/docker/certs.d/apiService.demo/ca.crt

  

其他服務器就想辦法拷貝該master服務器上生成的domain.crt為各服務器自己的/etc/docker/certs.d/apiService.demo/ca.crt。

以此docker准備好了,如何上傳到本地倉庫?需要兩個命令

docker tag kevin2y/site-d-p apiserver.demo/site-d-p
docker push apiserver.demo/site-d-p

  

Kubernetes的准備工作

1.創建命名空間

kubectl create namespace localdocker-apps

  

2.創建Secret

kubectl -n localdocker-apps create secret docker-registry registry-key \
--docker-server=apiService.demo \
--docker-username=<your-docker-name> \
--docker-password=<your-docker=password> \
--docker-email=<you-docker-email>

  注意上面三個your-docker開頭的內容需要使用自己在docker上注冊的相關信息錄入

修改yaml定義,從本地倉庫下載鏡像

 注意增加方框的內容,並調整箭頭所指的地址。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM