从零开始搭建 k8s 集群环境系列笔记:
- 从零开始搭建 k8s 集群环境 (一)—— 搭建镜像存储服和镜像服
- 从零开始搭建 k8s 集群环境 (二)—— 构建 Kubernetes 安装包
- 从零开始搭建 k8s 集群环境 (三)—— 搭建 Master 节点
- 从零开始搭建 k8s 集群环境 (四)—— 添加 Node 节点
- 从零开始搭建 k8s 集群环境 (五)—— 安装 Pod 网络
- 从零开始搭建 k8s 集群环境 (六)—— 部署 Dashboard UI
- 从零开始搭建 k8s 集群环境 (七)—— 部署 Ingress 服务
- 从零开始搭建 k8s 集群环境 (番外)—— 纯手动部署全套
标题很绕,镜像存储服和镜像服是两个概念:
- 镜像存储服:
docker registry
,用来存(push
)取(pull
)自己的image的服务器 - 镜像服:
docker mirror
,用来加速Docker pull
镜像文件的服务器
为什么一来就先搭建 Docker
镜像服务器呢,这么说吧:如果你也在几天时间经过无数次搭建、重置K8s环境的体验,然后感受到国内镜像下载的龟速速度之后,你也会先搭一个本地的镜像服务器的。
- 镜像存储服使用的是:VMware大厂的Harbor, 这里使用的是离线安装版,我已经受尽下载失败带来的羞辱了!!!另外,目前最新的 Harbor-v1.5.0 有一个巨大的不能忍的BUG,所以这里就用 Harbor-v1.4.0 做例子。
- 镜像服使用的是:Registry,虽然 Harbor 内部也是 Registry,但由于 Harbor 部署为mirror模式就是去了 push 能力,所以 Mirror 单独起容器部署。
注:由于目前
Harbor
如果配置其内置的Registry
为镜像模式,Harbor
会丧失push
能力,所以目前只能分开配置存储服和镜像服。
硬件环境说明:
- Master:VBox虚拟机/Centos_7.5-1804/192.168.56.100
- Images:VBox虚拟机/Centos_7.5-1804/192.168.56.101
- Node01:VBox虚拟机/Centos_7.5-1804/192.168.56.102
软件环境说明:
- docker-ce-17.03.2
- kubernetes-v1.9.0
- harbor-v1.4.0
这里主要操作 Images
机器。
一、安装相关依赖
1、安装Docker
Docker 使用离线版 docker-ce-17.03.2.ce-1.el7.centos.x86_64.rpm
下载地址: https://download.docker.com/linux/centos/7/x86_64/stable/Packages/
wget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-17.03.2.ce-1.el7.centos.x86_64.rpm
wget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch.rpm
# 将安装 Docker 和依赖包
yum install -y docker-ce-*.rpm
启动docker
systemctl enable docker
systemctl restart docker
查看docker版本
$ docker version
Client:
Version: 17.03.2-ce
API version: 1.27
Go version: go1.7.5
Git commit: f5ec1e2
Built: Tue Jun 27 02:21:36 2017
OS/Arch: linux/amd64
Server:
Version: 17.03.2-ce
API version: 1.27 (minimum version 1.12)
Go version: go1.7.5
Git commit: f5ec1e2
Built: Tue Jun 27 02:21:36 2017
OS/Arch: linux/amd64
Experimental: false
2、安装docker-compose
直接下载
curl -L https://github.com/docker/compose/releases/download/1.8.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
python-pip安装
# 安装python-pip
yum -y install epel-release
yum -y install python-pip
# 安装docker-compose
pip install docker-compose
源码安装
wget https://github.com/docker/compose/archive/master.zip
unzip master.zip
cd compose-master
python setup.py install
查看docker-compose版本
$ docker-compose version
docker-compose version 1.13.0dev, build unknown
docker-py version: 2.2.1
CPython version: 2.7.5
OpenSSL version: OpenSSL 1.0.1e-fips 11 Feb 2013
二、部署镜像私服Harbor
Harbor官方网址: https://github.com/vmware/harbor
1、下载Harbor离线安装包
wget https://storage.googleapis.com/harbor-releases/release-1.4.0/harbor-offline-installer-v1.4.0.tgz
官方镜像站:http://harbor.orientsoft.cn/
2、解压
tar zxvf harbor-offline-installer-v1.4.0.tgz
3、修改配置文件
cd harbor
vi harbor.cfg
配置文件参数说明(转自:http://www.cnblogs.com/jicki/p/5737369.html)
## Configuration file of Harbor
# hostname 设置访问地址,支持IP,域名,主机名,禁止设置127.0.0.1
hostname = reg.mydomain.com
# 访问协议,可设置 http,https
ui_url_protocol = http
# 邮件通知, 配置邮件通知。
email_server = smtp.mydomain.com
email_server_port = 25
email_username = sample_admin@mydomain.com
email_password = abc
email_from = admin <sample_admin@mydomain.com>
email_ssl = false
# harbor WEB UI登陆使用的密码
harbor_admin_password = Harbor12345
# 认证方式,这里支持多种认证方式,默认是 db_auth ,既mysql数据库存储认证。
# 这里还支持 ldap 以及 本地文件存储方式。
auth_mode = db_auth
# ldap 服务器访问地址。
ldap_url = ldaps://ldap.mydomain.com
ldap_basedn = uid=%s,ou=people,dc=mydomain,dc=com
# mysql root 账户的 密码
db_password = root123
self_registration = on
use_compressed_js = on
max_job_workers = 3
verify_remote_cert = on
customize_crt = on
# 一些显示的设置.
crt_country = CN
crt_state = State
crt_location = CN
crt_organization = organization
crt_organizationalunit = organizational unit
crt_commonname = example.com
crt_email = example@example.com
此处我们只修改 hostname=192.168.56.101
(私有仓库主机ip)
4、更新生成相关配置文件
./prepare
5、安装
# 启动 Docker
systemctl restart docker
# 执行安装脚本
./install.sh
完成完成之后就可以在浏览器中输入:http://192.168.56.101 进入Harbor
的 Web管理后台
(80
是 docker-compose.yml
配置文件中nginx容器的默认端口),默认的帐号密码是admin
, Harbor12345
(如果你没有修改harbor.cfg
中的 harbor_admin_password
)
查看 compose
状态
docker-compose ps
没意外的话,应该全部状态都是UP
需要修改web访问端口的话,先在 harbor.cfg
中hostname=192.168.56.101:5000
,再把 docker-compose.yml
中的 80
端口改为 5000
,如下(只贴修改部分)
proxy:
image: vmware/nginx:1.11.5-patched
container_name: nginx
restart: always
volumes:
- ./common/config/nginx:/etc/nginx:z
networks:
- harbor
ports:
- 5000:80
- 443:443
- 4443:4443
更多关于 docker-compose
命令相关参数选项可 查看官网
6、上传镜像到私有仓库
因为是本地环境,所以基本都是使用 HTTP
协议;哪台主机需要上传镜像到刚搭建的私有仓库,就需要更改 docker
进程启动的相关参数
A、修改docker守护进程启动参数
参数新增 --insecure-registry 192.168.56.101
vi /etc/sysconfig/docker
OPTIONS='--selinux-enabled \
--log-driver=journald \
--signature-verification=false \
--registry-mirror=https://olzwzeg2.mirror.aliyuncs.com \
--insecure-registry 192.168.56.101'
注意:
--registry-mirror=https://olzwzeg2.mirror.aliyuncs.com
是用于 docker
镜像下载加速,如何设置镜像加速
B、重启docker进程
重启进程前应先停掉所有在运行的容器
systemctl restart docker
C、修改docker镜像tag标签
格式为: ip/项目名/image名字:版本号
(项目名为 harbor
中的项目名)
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/busybox latest 00f017a8c2a6 5 weeks ago 1.11 MB
$ docker tag docker.io/busybox:latest 192.168.56.101/library/busybox:latest
D、登陆并push
$ docker login 192.168.56.101:80
$ docker push 192.168.56.101/library/busybox:latest
上传完后在 harbor web
界面的 test
项目下则可以看到刚上传的镜像了
7、从私有仓库下载镜像
在需要下载镜像的机器上,同样需要修改 docker
进程参数(跟上传镜像到私有仓库一样操作进行修改)
docker pull 192.168.56.101/library/busybox:latest
8、管理
1、修改端口号
对于 http
发布方式,Harbor
默认使用 80
端口,需要修改端口按照如下方法:
修改 docker-compose.yml
中 nginx
的配置,将 80:80
的第一个 80
改为自定义的端口号。
修改 common/templates/registry/config.yml
,在 auth
部分 $ui_url
后面加上自定义的端口号
修改完成后,运行下面的命令重新配置 Harbor
docker-compose down
./install.sh
对于第一次安装,直接修改完所有配置文件后执行 install.sh
就可以了。
2、停止/启动Harbor
docker-compose stop
docker-compose start
3、卸载Harbor
执行如下步骤彻底删除Harbor,以便重新安装:
sudo docker-compose down
rm -rf /data/database
rm -rf /data/registry
4、修改Harbor配置
首先删除 container
,修改配置,然后运行 install.sh
重新启动container,命令如下:
docker-compose down
vim harbor.cfg
./install.sh
三、部署镜像服Registry
由于 Harbor
已经包含了 registry
的镜像,我这里就将就使用这个镜像来部署了。
配置
创建一个存储 registery
配置的文件夹:
mkdir registry
拷贝 harbor
内 registry
的配置文件
cp harbor/common/config/registry/* registry/
向 config.yml
追加代理配置
cat>>registry/config.yml<<'EOF'
proxy:
remoteurl: https://registry-1.docker.io
EOF
创建一个 docker-compose.yml
文件,内容如下:
version: '2'
services:
registry:
image: vmware/registry-photon:v2.6.2-v1.4.0
container_name: registry-mirror
restart: always
volumes:
- /data/registry:/storage:z
- ../registry/:/etc/registry/:z
networks:
- harbor
ports:
- '5000:5000'
environment:
- GODEBUG=netdns=cgo
command:
["serve", "/etc/registry/config.yml"]
networks:
harbor:
external: false
管理
# 启动
cd registry && docker-compose start
# 停止
cd registry && docker-compose stop
使用
同阿里云设置,地址改一下就OK。 我这里地址根据配置文件就是:
http://192.168.56.101:5000