
鏡像下載下傳、域名解析、時間同步請點選
阿裡巴巴開源鏡像站操作方法
Kubernetes叢集支援使用私有鏡像編排容器。首先需建立密鑰用于編排容器,并且可實作無密鑰編排。
一、使用密鑰編排容器
1、使用kubectl連接配接Kubernetes叢集的Master節點,詳情請參見
通過kubectl連接配接Kubernetes叢集。
2、執行如下指令,建立拉取私有鏡像的密鑰。
kubectl create secret docker-registry [$Reg_Secret] --docker-server=[$Registry] --docker-username=[$Username] --docker-password=[$Password] --docker-email=[$Email]
注:
- [$Reg_Secret]為密鑰的鍵名稱,可自行定義。
- [$Registry]為Docker倉庫位址。
- [$Username]為登入Docker倉庫的使用者名。
- [$Password]為登入Docker倉庫的密碼。
- [$Email]為郵件位址,該配置項可選填。
3、在編排的YAML檔案中加入密鑰相關配置項,完成後YAML檔案類似如下。
containers:
- name: foo
image: [$Registry]/abc/test:1.0
imagePullSecrets:
- name: [$Reg_Secret]
配置為在聲明拉取鏡像時指定的密鑰。
imagePullSecrets
- 詳情資訊參見官方文檔 使用私有倉庫
二、實作無密鑰編排
為了避免每次使用私有鏡像部署時,都需要引用密鑰,您可将secret添加到namespace的default service account中,參見
Add ImagePullSecrets to a service account本例中采用手動配置的方式,修改命名空間的預設服務帳戶default,進而将此secret作為imagePullSecret。
1、執行如下指令,檢視之前建立的密鑰。
kubectl get secret [$Reg_Secret]
系統顯示類似如下:
NAME TYPE DATA AGE
[$Reg_Secret] kubernetes.io/dockerconfigjson 1 13m
2、依次執行如下指令,将服務賬号default的配置導出到sa.yaml檔案并檢視該檔案。
kubectl get serviceaccounts default -o yaml > ./sa.yaml
cat sa.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
creationTimestamp: 2015-08-07T22:02:39Z
name: default
namespace: default
resourceVersion: "243024" ##注意該項
selfLink: /api/v1/namespaces/default/serviceaccounts/default
uid: 052fb0f4-3d50-11e5-b066-42010af0d7b6
secrets:
- name: default-token-uudge
3、編輯sa.yaml檔案,删除原resourceVersion配置項,增加拉取鏡像的密鑰配置項imagePullSecrets。修改後的配置如下所示:
apiVersion: v1
kind: ServiceAccount
metadata:
creationTimestamp: 2015-08-07T22:02:39Z
name: default
namespace: default
selfLink: /api/v1/namespaces/default/serviceaccounts/default
uid: 052fb0f4-3d50-11e5-b066-42010af0d7b6
secrets:
- name: default-token-uudge
imagePullSecrets: ##增加該項
- name: regsecret
4、執行如下指令,用sa.yaml配置檔案更新default服務賬号。
kubectl replace serviceaccount default -f ./sa.yaml
serviceaccount "default" replaced
5、本文以編排tomcat為例,執行
kubectl create -f
指令建立Pod。該配置檔案如下所示。
apiVersion: apps/v1beta2 # for versions before 1.8.0 use apps/v1beta1
kind: Deployment
metadata:
name: tomcat-deployment
labels:
app: tomcat
spec:
replicas: 1
selector:
matchLabels:
app: tomcat
template:
metadata:
labels:
app: tomcat
spec:
containers:
- name: tomcat
image: [$Registry]/abc/test:1.0
ports:
- containerPort: 8080
6、若配置正确,Pod會啟動成功。執行如下指令,檢視配置項。
kubectl get pod tomcat-XXX -o yaml
系統顯示類似如下,确認無密鑰編排成功。
spec:
imagePullSecrets:
- nameregsecretey
“ 提供全面,高效和穩定的系統鏡像、應用軟體下載下傳、域名解析和時間同步服務。”