1. 程式人生 > >CentOS7 K8S Docker私有倉庫搭建使用簡錄

CentOS7 K8S Docker私有倉庫搭建使用簡錄

簡單說明:

在搭建部署K8S時,需要從牆外的k8s.gcr.io、gcr.io和quay.io等映象倉庫下載映象
這個時候就需要科學上網了,但並不是所有的環境都能夠科學上網,這個時候就需要搭建私有映象倉庫
本博文首先介紹基於Harbor構建私有映象倉庫的步驟和簡單使用過程
官方文件: https://github.com/goharbor/harbor/blob/master/docs/installation_guide.md
其後介紹搭建一個專有的K8S私有映象庫

簡單搭建:

依據《CentOS7部署安裝Docker和Docker Compose工具簡錄》搭建部署CentOS7 Docker主機

# 下載離線安裝包,需要科學上網
cd /opt/
wget https://storage.googleapis.com/harbor-releases/harbor-offline-installer-v1.6.1.tgz
tar -xf harbor-offline-installer-v1.6.1.tgz
cd harbor
# 主配置檔案bug不少,建議只更改hostname為本機hostname
sed -i "s/^\(hostname = \).*$/\1$(hostname)/g" harbor.cfg

# 執行安裝指令碼進行安裝
./install.sh
# 簡單啟停
cd /opt/harbor
docker-compose stop
docker-compose start
# 日誌目錄:
cd /var/log/harbor # harbor以docker部署,會同時部署mysql和redis的docker,如果想要刪除,則: # docker ps -q|xargs docker stop # docker ps -a -q|xargs docker rm # 訪問http://IP:8080 使用 admin/Harbor12345 登陸驗證

映象上傳和下載:

克隆另外一臺實驗機,部署docker,在該機器上進行配置,模擬映象的上傳和下載

echo '192.168.1.90 localrepository'>>/etc/hosts
mkdir -p /etc/docker
echo
-e '{\n"insecure-registries":["localrepository"]\n}' > /etc/docker/daemon.json sed -i 's|^\[Service\]$|&\nEnvironmentFile=-/etc/docker/daemon.json|g' /lib/systemd/system/docker.service systemctl restart docker docker login localrepository docker login k8s.gcr.io docker login gcr.io docker login quay.io # 使用 admin/Harbor12345 登陸 # 認證資訊儲存在 ~/.docker/config.json 中,同步該檔案即可跳過認證步驟 docker pull busybox docker tag busybox localrepository/library/busybox:latest docker push localrepository/library/busybox:latest docker image rmi localrepository/library/busybox:latest docker pull localrepository/library/busybox:latest

配置K8S專用私有映象庫:

# 首先刪除掉搭建的harbor,或者可以使用其他主機進行部署實驗
cd /opt/harbor
docker-compose down
cd
rm -rf /opt/harbor

# 拉取構建私有映象倉庫的映象
# https://hub.docker.com/_/registry/
docker pull registry
docker run -d -p 80:5000 --restart always --name registry registry

# 網路尋找其他玩家儲存的K8S所需要的官方映象,安裝到本地
docker load -i k8s_image_1.12.1.tar
docker image ls

# 將安裝的這些映象推送到registry之上
echo "$(hostname -i) k8s.gcr.io quay.io gcr.io">>/etc/hosts
mkdir -p /etc/docker
echo -e '{\n"insecure-registries":["k8s.gcr.io", "quay.io", "gcr.io"]\n}' > /etc/docker/daemon.json
sed -i 's|^\[Service\]$|&\nEnvironmentFile=-/etc/docker/daemon.json|g' /lib/systemd/system/docker.service
systemctl restart docker

docker push k8s.gcr.io/coredns:1.2.2
docker push k8s.gcr.io/etcd:3.2.24
docker push k8s.gcr.io/kube-apiserver:v1.12.1
docker push k8s.gcr.io/kube-controller-manager:v1.12.1
docker push k8s.gcr.io/kube-proxy:v1.12.1
docker push k8s.gcr.io/kubernetes-dashboard-amd64:v1.8.3
docker push k8s.gcr.io/kube-scheduler:v1.12.1
docker push k8s.gcr.io/pause:3.1
docker push quay.io/coreos/flannel:v0.10.0-amd64

# 將image釋出到自建Registry之上之後
# 可以使用API進行驗證
# 參考: https://docs.docker.com/registry/spec/api/
yum -y install epel-release
yum -y install jq
JSON=$(curl k8s.gcr.io/v2/_catalog)
echo ${JSON} | jq .
curl k8s.gcr.io/v2/kube-apiserver/tags/list | jq .

# 在需要安裝K8S的主機上進行配置:
echo "192.168.1.90 k8s.gcr.io quay.io gcr.io">>/etc/hosts
mkdir -p /etc/docker
echo -e '{\n"insecure-registries":["k8s.gcr.io", "quay.io", "gcr.io"]\n}' > /etc/docker/daemon.json
sed -i 's|^\[Service\]$|&\nEnvironmentFile=-/etc/docker/daemon.json|g' /lib/systemd/system/docker.service
systemctl restart docker
# 拉取測試:
docker pull k8s.gcr.io/coredns:1.2.2
docker pull k8s.gcr.io/etcd-amd64:3.2.24
docker pull k8s.gcr.io/kube-apiserver:v1.12.1
docker pull k8s.gcr.io/kube-controller-manager:v1.12.1
docker pull k8s.gcr.io/kube-proxy:v1.12.1
docker pull k8s.gcr.io/kubernetes-dashboard-amd64:v1.8.3
docker pull k8s.gcr.io/kube-scheduler:v1.12.1
docker pull k8s.gcr.io/pause:3.1
docker pull quay.io/coreos/flannel:v0.10.0-amd64
# 在K8S叢集安裝中有一步就是從谷歌的k8s.gcr.io映象庫中拉取以上映象
# 至此,支援K8S叢集安裝的私有映象庫搭建完畢
# 其實更為簡單的方法是直接在安裝K8S的節點上使用load命令直接匯入所需的映象
# docker load -i k8s_image_1.12.1.tar

[TOC]