前言
因為眾所周知的原因,在使用Kubernetes和docker的時候會出現一些鏡像無法拉取或者速度較慢的情況,錯誤信息類似以下:
[ERROR ImagePull]: failed to pull image k8s.gcr.io/kube-proxy:v1.17.3: output: Error response from daemon ...
Failed to pull image "quay.io/coreos/flannel:v0.11.0-amd64": rpc error: code = Unknown desc = net/http: request canceled ...
之前一直使用的是Azure中國的鏡像,經讀者提醒,該鏡像站已經不能用了,中科大的也不是很穩定。
接下來記錄下使用阿里雲從海外構建鏡像的過程,雖然麻煩點,是能解決問題。
在阿里雲創建鏡像倉庫
首先進入阿里雲的容器鏡像服務
我這已經是開通過的界面了,沒開通過的什么樣已經忘了。
沒有創建命名空間的就創建一個,創建好了之后點擊“創建倉庫鏡像”。這里我們拿kube-apiserver做例子。
點擊下一步,選擇代碼源,作者這里用的是GitHub,已經綁定好了。記得勾選“海外機器構建”
准備github倉庫
這是我倉庫的地址:https://github.com/orccn/kube-dockerfile
倉庫的每個目錄下都有一個Dockerfile
├── README.md
├── coredns
│ └── Dockerfile
├── etcd
│ └── Dockerfile
├── kube-apiserver
│ └── Dockerfile
├── kube-controller-manager
│ └── Dockerfile
├── kube-proxy
│ └── Dockerfile
├── kube-scheduler
│ └── Dockerfile
└── pause
└── Dockerfile
kube-apiserver/Dockerfile 的內容只有一句話。
FROM k8s.gcr.io/kube-apiserver:v1.17.5
添加規則、構建
倉庫准備ok后,創建完成,然后點擊進入剛創建的倉庫,點擊左側“構建”,然后點擊右側“添加規則”
規則添加完后,點擊“立即構建”,可以看到下方的構建日志
到此時為止,一個鏡像就已經生成了。然后就是到你需要的地方 docker pull
,docker tag
。
$ docker pull registry.cn-hangzhou.aliyuncs.com/k6s/kube-apiserver:v1.17.5
v1.17.5: Pulling from k6s/kube-apiserver
597de8ba0c30: Pull complete
e13a88fa950c: Pull complete
Digest: sha256:5ddc5c77f52767f2f225a531a257259228d74b32d8aac9cfe087251f998c42f3
Status: Downloaded newer image for registry.cn-hangzhou.aliyuncs.com/k6s/kube-apiserver:v1.17.5
registry.cn-hangzhou.aliyuncs.com/k6s/kube-apiserver:v1.17.5
$ docker tag registry.cn-hangzhou.aliyuncs.com/k6s/kube-apiserver:v1.17.5 k8s.gcr.io/kube-apiserver:v1.17.5
其他的鏡像如法炮制。
在Docker配置文件中配置加速器
$ vi /etc/docker/daemon.json
//添加以下內容
{
"registry-mirrors": ["https://hub-mirror.c.163.com"]
}