iT邦幫忙

2022 iThome 鐵人賽

DAY 29
1
DevOps

30天準備CKA考試系列 第 29

Day 29:Images

  • 分享至 

  • xImage
  •  

我們都知道Kubernetes會去Registry裡面抓Image來製作成Container,預設會去Docker官方的Registry下載,那如果要去我們自己私人的Docker-registry下載呢?

命名規則

Image的名稱通常可以分為三段:Registry / User Account / Image Repository

舉例來說: docker.io/nginx/nginx

對應到我們的命名規則:

  • Registry:docker.io
    • 這邊就是Registry的網址,也可以帶Port,像是 192.168.0.1:5000
  • User Account:nginx
    • 這是使用者的帳號,如果在Docker官方的Registry的話,省略這一段會被帶入Library。
  • Image Repository:nginx
    • 這邊還可以再帶入Tag來當版號,像是nginx:1.22.0-alpine,而 :latest會自動抓最新版的,如果沒有特別指定Tag,也會預設選最新版。

Image Pull Policy

我們抓取Image時有三種策略:

  • IfNotPresent:當前這個Node不存在這個Image才下載。
  • Always:每次建立Container時,都會先去目標的Registry找到這個Image,再回來確認是否存在,如果不存在才會下載。
  • Never:會使用本地的Image,如果不存在就會報錯。

Private Repository

如果我們想要使用私人Registry內的Image,我們可以有三種方向:

  • 讓Node可以訪問Private Registry:可以先登入或在Node上設置,或是有些公有雲可以讓Node產生的時候就擁有權限。
  • 事先準備好Image
  • 在Pod設置imagePullSecrets

imagePullSecrets

要使用這個方法,我們要先建立type為docker-registry的Secrets:

kubectl create secret docker-registry <name> --docker-server=DOCKER_REGISTRY_SERVER --docker-username=DOCKER_USER --docker-password=DOCKER_PASSWORD --docker-email=DOCKER_EMAIL

現在我們可以用這個secret來建立Pod:

apiVersion: v1
kind: Pod
metadata:
  name: foo
  namespace: awesomeapps
spec:
  containers:
    - name: foo
      image: janedoe/awesomeapp:v1
  imagePullSecrets:
    - name: myregistrykey

這樣我們就可以在我們的Registry使用自己準備的Image來部署我們的服務了~

參考資料

镜像


上一篇
Day 28:Service Account
下一篇
Day 30:Security Context & 結語
系列文
30天準備CKA考試30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言