K8S--docker--搭建私有倉庫


一、環境准備(可以不做)

  1、禁用swap分區 

vim  /etc/fstab   
# 將下面的內容注釋掉
#/dev/mapper/centos-swap swap  

  2、修改主機名及時間同步

# 設置主機名
hostnamectl set-hostname harbor

# 時間同步
yum -y install ntp
systemctl enable ntpd
systemctl start ntpd
ntpdate -u cn.pool.ntp.org
hwclock --systohc
timedatectl set-timezone Asia/Shanghai

  3、關閉防火牆及升級內核

# 關閉防火牆 Selinux
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config
 
# 升級內核
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
yum --enablerepo=elrepo-kernel install kernel-ml -y&&sed -i s/saved/0/g /etc/default/grub&&grub2-mkconfig -o /boot/grub2/grub.cfg && reboot

  

二、安裝Docker、Docker-compose

  1、安裝Docker和Docker Compose

yum -y install yum-utils device-mapper-persistent-data lvm2
#緊接着配置一個穩定(stable)的倉庫、倉庫配置會保存到/etc/yum.repos.d/docker-ce.repo文件中
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 更新yum安裝的相關Docker軟件包&安裝docker: 
yum update -y && yum install docker-ce 
#查看docker版本: 
docker -v 
# 安裝docker-compose到 /usr/local/bin目錄(在該目錄下不需要配置環境變量) 
curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose 
# 賦權 
chmod 755 /usr/local/bin/docker-compose 
# 查看docker-compose版本 
docker-compose -v

  2、設置開機啟動並替換docker配置

# 設置開機啟動並啟動docker
systemctl enable docker 
systemctl start docker 

  3、追加私有倉庫域名到各個服務器

echo "192.168.124.22 hub.menglong.com" >> /etc/hosts
# 驗證是否追加成功
cat /etc/host

  4、將集群的各個node節點的映射也配置到各個服務器(K8S集群+鏡像倉庫)的hosts中

# 加載hostname:
hostnamectl set-hostname hub.menglong.com
# 驗證:
hostname

  這里在本機上(windows)也設置一下域名,否則瀏覽器訪問時就只能使用IP訪問。

  5、配置daemon.json

vi /etc/docker/daemon.json
{"exec-opts": ["native.cgroupdriver=systemd"],"log-driver": "json-file","log-opts": {"max-size": "100m"},"insecure-registries": ["https://hub.menglong.com"]}

三、安裝Harbor

  1、下載Harbor

wget https://storage.googleapis.com/harbor-releases/harbor-offline-installer-v1.2.0.tgz
# 移動到 /usr/local/src/
mv harbor-offline-installer-v1.2.0.tgz /usr/local/src/
tar xf harbor-offline-installer-v1.5.0.tgz

  2、修改harbor配置文件harbor.cfg

  修改以下內容

# 可以是IP或着域名,但是不能使用127.0.0.1和localhost
hostname = hub.menglong.com # 協議用https ui_url_protocol = https

  3、根據harbor.cfg中配置的證書存放目錄(ssl_cert配置的目錄):mkdir -p /data/cert/

  進入存放證書目錄,開始創建證書(偽證書):

#首先生成證書私鑰(這里會讓輸入key,直接輸入即可,我輸入的是menglong)
openssl genrsa -des3 -out server.key 2048 #證書的服務 openssl req -new -key server.key -out server.csr #備份私鑰 cp server.key server.key.org #轉換為證書 openssl rsa -in server.key.org -out server.key #給證書簽名 openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

  4、給所有的證書授權:

chmod 755 *

  5、給K8S集群的每個節點配置鏡像倉庫地址(vi /etc/docker/daemon.json),添加如下內容

"insecure-registries": ["https://hub.menglong.com"]

    

   6、重啟K8S集群docker

systemctl daemon-reload && systemctl restart docker

四、訪問Harbor及Harbor配置

  直接訪問IP即可,默認為80端口,如果要修改端口,可以修改docker-compose.yaml對應服務的映射

  管理員用戶名為admin,密碼為harbor.cfg配置文件中配置的密碼

      

  1、創建用戶:

         

   2、新建項目:

        

   3、鏡像打包命令和上傳

    在項目可以新增人員,可以查看鏡像打包命令和上傳命令

       

     打包和上傳樣例:

# 在K8S中登錄鏡像倉庫:
docker login https://hub.menglong.com
# 打鏡像:
docker tag lcl-galaxy-k8s:v2.0 hub.menglong.com/lcl-galaxy/lcl-galaxy-k8s:1.0
# 推送鏡像:
docker push hub.menglong.com/lcl-galaxy/lcl-galaxy-k8s:1.0

    鏡像已經上傳,可以將本地打包的鏡像(hub.menglong.com/lcl-galaxy/lcl-galaxy-k8s:1.0)刪除

docker rmi -f c2d136b74fdd

   4、拉取鏡像

     以剛才上傳的鏡像為例

docker pull hub.menglong.com/lcl-galaxy/lcl-galaxy-k8s:1.0

  說明:如果打開harbor不能訪問,可以使用以下步驟排查:

# 1、查看harbor是否都處於up狀態
docker-compose ps
# 2、如果存在狀態不是UP的,使用下面命令重啟
coker-compose sown
docker-compose up
# 3如果還不能訪問,有可能是證書設置的問題,可以刪除harbor及其文件重新生成證書並重新配置harbor
rm -rf harbor
rm -rf /data/*

五、使用dockerfile創建鏡像並上傳

  1、新建一個springboot項目,然后打包,並將jar包上傳至服務器

   創建dockerfile文件:vi dockerfile

FROM java:8
VOLUME /tmp
ADD lcl-galaxy-k8s-0.0.1-SNAPSHOT.jar /lcl-galaxy-k8s.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/lcl-galaxy-k8s.jar"]

  說明:ADD前的是上傳的jar包,后面的是要生成的鏡像名稱,ENTRYPOINT中第一個參數是用來標識前端項目還是后端項目的

  2、生成鏡像

# 生成鏡像 -t后面是鏡像的名稱
docker build -t lcl-galaxy-k8s .
# 查看鏡像
docker images

  3、上傳私有倉庫

# 打鏡像:
docker tag lcl-galaxy-k8s:v2.0 hub.menglong.com/lcl-galaxy/lcl-galaxy-k8s:1.0 # 推送鏡像: docker push hub.menglong.com/lcl-galaxy/lcl-galaxy-k8s:1.0

   說明:實際生產上是在項目中添加dockerfile配置文件,然后使用jenkins進行部署。

六、驗證使用鏡像倉庫部署Pod

  從私服中拉取鏡像運行一個pod:

kubectl run lcl-galaxy-k8s --image=hub.menglong.com/lcl-galaxy/lcl-galaxy-k8s:1.0 --port=8080

  獲取pod詳細信息:

kubectl get pod -o wide

      

訪問pod:curl 10.244.2.26:8080/k8s/test1

      

       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM