开发环境为了能部署服务到microk8s,我们开启了一个本地私库,地址为:http://localhost:5000,那么如何在microk8s中能拉取本地私库中的镜像呢?
直接部署的话,microk8s会用https协议去拉取镜像,所以必须要配置一下才行。
microk8s是每个registry一个配置文件的,你需要先创建一个配置文件,执行如下命令:
sudo mkdir -p /var/snap/microk8s/current/args/certs.d/ibm-johnny-z13:5000
这里的ibm-johnny-z13是你主机名,你还得到/etc/hosts中修改一下,不能让主机名的IP为127.0.0.1,否则microk8s的节点解析到的就是127.0.0.1,那么,那么它就会访问节点机器,所有就访问不到,同理localhost也不行。例如我的:
cat /etc/hosts
# generateHosts = false
127.0.0.1 localhost
172.22.164.46 ibm-johnny-z13
# 127.0.1.1 IBM-JOHNNY-Z13. IBM-JOHNNY-Z13
185.199.110.133 raw.githubusercontent.com
由于我是WSL的ubuntu所以IP是172开头的。
复制一个配置文件:
cp /var/snap/microk8s/current/args/certs.d/localhost\:32000/hosts.toml /var/snap/microk8s/current/args/certs.d/ibm-johnny-z13\:5000/
然后修改配置文件内容:
sudo vi /var/snap/microk8s/current/args/certs.d/ibm-johnny-z13\:5000/hosts.toml
内容如下:
server = "http://ibm-johnny-z13:5000"
[host."http://ibm-johnny-z13:5000"]
capabilities = ["pull", "resolve"]
然后再重启microk8s:
microk8s stop && microk8s start
这样就可以使用内部私有库了。