1.容器鏡像是什么?
1.容器鏡像(Container Image)是最終運行的軟體;
2.容器鏡像(最初為Docker鏡像,現在叫OCI鏡像更合適)是將軟體打包的形式,但是容器鏡像還可以攜帶額外的設定和命令: 環境變數、啟動命令、用戶名等,
3.容器鏡像是由容器運行時解釋和執行,Docker守護行程是最著名的,后來又出現了Runc和Containerd,當然現在還有其他實作,比如CRI-O、gVisor、Kata、Firecracker和Project Pacific,這些都是獨立的實作,可以創建相同的運行時行為,通常還具有其他所需的功能,
2. 容器鏡像拉取的兩種策略;
2.1ImagePullPolicy
在指定容器鏡像時,必須要提供鏡像值(Image Value)這是一個供容器運行時(如Containerd)從鏡像倉庫拉取鏡像的地址;
關鍵配置: ImagePullPolicy和ImagePullSecrets這兩個都是供容器運行時使用的;
imagePullPolicy設定的是kubernetes節點拉取鏡像策略,這個設定很重要,它有三個值可以設定,Always、Never、IfNotPresent;
2.2ImgaePullSecrets
1.ImagePullSecrets的設定是kubernetes機制的另一亮點,習慣于直接使用Docker Pull來拉取公共鏡像,但非所有容器鏡像都是公開的,此外,并不是所有的鏡像倉庫都允許匿名拉取,也就是說需要身份認證;
kubernetes有一個secret記錄型別,可用于配置鏡像登陸憑證,與所有kubernetes記錄一樣,Secrets通過名稱被其他資源參考,此處是通過ImagePullSecrets來參考Secret的;
2.官方檔案: https://kubernetes.io/zh-cn/docs/concepts/configuration/secret/#using-imagepullsecrets
3.ImagePullSecret參考;
3.1創建Secrets資源;
[root@kn-server-master01-13 knative]# kubectl create secret docker-registry \
> aliyun-haitang-registry \
> --docker-server=registry.cn-hangzhou.aliyuncs.com \
> --docker-username=xxxxxxx\
> --docker-password=xxxxxx
secret/aliyun-haitang-registry created
3.1.2查看Secrets
[root@kn-server-master01-13 knative]# kubectl get secrets
NAME TYPE DATA AGE
aliyun-haitang-registry kubernetes.io/dockerconfigjson 1 2m46s
3.2Pod參考Secret資源;
3.2.1imagePullSecret在spec欄位中;和container是平級的;
[root@kn-server-master01-13 knative]# kubectl explain pod.spec.imagePullSecrets
KIND: Pod
VERSION: v1
RESOURCE: imagePullSecrets <[]Object>
DESCRIPTION:
ImagePullSecrets is an optional list of references to secrets in the same
namespace to use for pulling any of the images used by this PodSpec. If
specified, these secrets will be passed to individual puller
implementations for them to use. For example, in the case of docker, only
DockerConfig type secrets are honored. More info:
https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod
LocalObjectReference contains enough information to let you locate the
referenced object inside the same namespace.
FIELDS:
name <string>
Name of the referent. More info:
https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
3.2.引入imagePullSecrets
[root@kn-server-master01-13 knative]# vim knative-httpd.yaml
apiVersion: serving.knative.dev/v1
kind: Configuration
metadata:
name: knative-httpd
spec:
template:
spec:
containers:
- image: registry.cn-hangzhou.aliyuncs.com/lengyuye/httpd:alpine3.14
imagePullSecrets:
- name: aliyun-haitang-registry
[root@kn-server-master01-13 knative]# kubectl apply -f knative-httpd.yaml
configuration.serving.knative.dev/knative-httpd created
3.2.3describe查看詳情;
可以看到鏡像確實來自于我們認證的阿里云倉庫;
[root@kn-server-master01-13 knative]# kn revision describe knative-httpd-00001
Name: knative-httpd-00001
Namespace: default
Age: 3m
Image: registry.cn-hangzhou.aliyuncs.com/lengyuye/httpd:alpine3.14 (at 0e0805)
我們一直奔跑在進步的旅途
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/502523.html
標籤:其他
