目录
Kubernetes(K8s)入门到实践(一)—-Kubernetes入门
Kubernetes(K8s)入门到实践(二)—-Kubernetes的基本概念和术语
Kubernetes(K8s)入门到实践(三)—-Kubernetes Centos7集群安装
Kubernetes(K8s)入门到实践(四)—-Kubernetes1.15.1配置私有仓库Harbor
前期准备
- 需要三台K8s节点
 - Harbor虚拟机
 - docker-compose
 - harbor安装包
 
安装docker
1  | yum install -y yum-utils device-mapper-persistent-data lvm2  | 
安装完成后需要建立/etc/docker/daemon.json文件1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18# 启动docker
systemctl start docker && systemctl enable docker 
## 创建 /etc/docker 目录
mkdir /etc/docker
# 配置 daemon.json
vim /etc/docker/daemon.json
{
 "exec-opts": ["native.cgroupdriver=systemd"],
 "log-driver": "json-file",
 "log-opts": {
	"max-size": "100m"
  },
  "insecure-registries": ["https://hub.test.com"]
}
mkdir -p /etc/systemd/system/docker.service.d
# 重启docker服务
systemctl daemon-reload && systemctl restart docker && systemctl enable docker
同理: K8s节点也需要一样修改/etc/docker/daemon.json文件
安装Harbor
下载docker-compose
1  | curl -L https://github.com/docker/compose/releases/download/1.9.0/docker-compose-`uname -s`-`uname -m`> ./docker-compose  | 
下载解压Harbor
Harbor 官方地址:https://github.com/vmware/harbor/releases1
2
3
4
5[root@localhost ~]# chmod a+x docker-compose 
[root@localhost ~]# mv docker-compose /usr/local/bin/
[root@localhost ~]# tar -zxvf harbor-offline-installer-v1.2.0.tgz 
[root@localhost ~]# mv harbor /usr/local/
[root@localhost ~]# cd /usr/local/harbor/
配置harbor.cfg
修改为https协议,并且定义网址1
2hostname = hub.test.com
ui_url_protocol = https
以下为ssl证书配置文件目录 接下来配置HTTPS证书1
2
3
4
5ssl_cert = /data/cert/server.crt
ssl_cert_key = /data/cert/server.key
#The path of secretkey storage
secretkey_path = /data
创建https证书以及配置相关目录权限
创建cert目录,输入密码例如123456下面配置会用到1
2
3
4
5
6
7
8
9[root@localhost harbor]# mkdir -p /data/cert
[root@localhost harbor]# cd /data/cert/
[root@localhost cert]# openssl genrsa -des3 -out server.key 2048
Generating RSA private key, 2048 bit long modulus
...................................+++
................+++
e is 65537 (0x10001)
Enter pass phrase for server.key:
Verifying - Enter pass phrase for server.key:
生成服务器CSR证书请求文件,注意站点名称要一致
输入刚才设置的密码进行配置
Common Name (eg, your name or your server’s hostname) []:
hub.test.com一定要填上面配置的网址
 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 [root@localhost cert]# openssl req -new -key server.key -out server.csr
Enter pass phrase for server.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:Hebei
Locality Name (eg, city) [Default City]:sjz
Organization Name (eg, company) [Default Company Ltd]:test
Organizational Unit Name (eg, section) []:test
Common Name (eg, your name or your server's hostname) []:hub.test.com
Email Address []:test@qq.com
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
生成服务器认证证书1
2
3
4
5
6
7
8
9
10
11
12
13[root@localhost cert]# cp server.key server.key.org
[root@localhost cert]# openssl rsa -in server.key.org -out server.key
Enter pass phrase for server.key.org:
writing RSA key
[root@localhost cert]# openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
Signature ok
subject=/C=CN/ST=Hebei/L=sjz/O=test/OU=test/CN=hub.test.com/emailAddress=test@qq.com
Getting Private key
[root@localhost cert]# ls
server.crt  server.csr  server.key  server.key.org
[root@localhost cert]# chmod a+x *
[root@localhost cert]# cd -
/usr/local/harbor
安装1
2
3
4
5
6
7
8
9
10
11[root@localhost harbor]# ./install.sh 
[root@localhost harbor]# docker ps -a
CONTAINER ID        IMAGE                              COMMAND                  CREATED             STATUS              PORTS                                                              NAMES
c998c35434cd        vmware/nginx-photon:1.11.13        "nginx -g 'daemon of…"   2 hours ago         Up 2 hours          0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:4443->4443/tcp   nginx
b8651abbdc0f        vmware/harbor-jobservice:v1.2.0    "/harbor/harbor_jobs…"   2 hours ago         Up 2 hours                                                                             harbor-jobservice
38cd42c3ad61        vmware/harbor-ui:v1.2.0            "/harbor/harbor_ui"      2 hours ago         Up 2 hours                                                                             harbor-ui
7117305239e4        vmware/harbor-adminserver:v1.2.0   "/harbor/harbor_admi…"   2 hours ago         Up 2 hours                                                                             harbor-adminserver
547244f64e7b        vmware/harbor-db:v1.2.0            "docker-entrypoint.s…"   2 hours ago         Up 2 hours          3306/tcp                                                           harbor-db
08ac3fe587c8        vmware/registry:2.6.2-photon       "/entrypoint.sh serv…"   2 hours ago         Up 2 hours          5000/tcp                                                           registry
a137bc1e2548        vmware/harbor-log:v1.2.0           "/bin/sh -c 'crond &…"   2 hours ago         Up 2 hours          127.0.0.1:1514->514/tcp                                            harbor-log
[root@localhost harbor]#
修改hosts文件映射
修改k8s节点与Harbor虚拟机/etc/hosts文件1
2
3
4192.168.0.50 k8s-master01
192.168.0.51 k8s-node01
192.168.0.52 k8s-node02
192.168.0.44 hub.test.com
本地hosts文件添加1
192.168.0.44 hub.test.com
登录账号admin,密码Harbor12345

Harbor上传镜像
拉取镜像
这是是从我的docker hub中拉取的镜像plutoacharon/myapp:v1,也可以从docker hub中搜索拉取想要上传的镜像docker pull plutoacharon/myapp:v11
2
3
4
5
6
7
8
9
10
11
12
13
14
15[root@localhost  ~]# docker pull plutoacharon/myapp:v1
v1: Pulling from plutoacharon/myapp
550fe1bea624: Pull complete 
af3988949040: Pull complete 
d6642feac728: Pull complete 
c20f0a205eaa: Pull complete 
fe78b5db7c4e: Pull complete 
6565e38e67fe: Pull complete 
Digest: sha256:9c3dc30b5219788b2b8a4b065f548b922a34479577befb54b03330999d30d513
Status: Downloaded newer image for plutoacharon/myapp:v1
docker.io/plutoacharon/myapp:v1
[root@localhost  ~]# docker images
REPOSITORY                           TAG                 IMAGE ID            CREATED             SIZE
plutoacharon/myapp                   v1                  d4a5e0eaa84f        2 years ago         15.5MB
[root@localhost ~]#
上传镜像
首先使用docker login https://hub.test.com登录才可以上传到Harbor中1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18[root@localhost  ~]# docker login https://hub.test.com
Username: admin
Password: 
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
[root@localhost  ~]# docker tag plutoacharon/myapp:v1 hub.test.com/library/myapp:v1
[root@localhost  ~]# docker push hub.test.com/library/myapp:v1
The push refers to repository [hub.test.com/library/myapp]
a0d2c4392b06: Pushed 
05a9e65e2d53: Pushed 
68695a6cfd7d: Pushed 
c1dc81a64903: Pushed 
8460a579ab63: Pushed 
d39d92664027: Pushed 
v1: digest: sha256:9eeca44ba2d410e54fccc54cbe9c021802aa8b9836a0bcf3d3229354e4c8870e size: 1569

Kubernetes拉取运行Harbor镜像
1  | [root@k8s-master01 ~]# kubectl run nginx-deployment --image=hub.test.com/library/myapp:v1 --port=80 --replicas=1  | 
kubectl get pod -o wide可以看到nginx-deployment在node1上运行1
2
3
4[root@k8s-node01 ~]# docker ps | grep nginx
066e82c78200        hub.test.com/library/myapp   "nginx -g 'daemon of…"   20 minutes ago      Up 20 minutes                           k8s_nginx-deployment_nginx-deployment-bdf84f685-pg7qk_default_11af7460-37a5-4d61-b94c-5c64684110ed_0
3a0c5624068c        k8s.gcr.io/pause:3.1         "/pause"                 20 minutes ago      Up 20 minutes                           k8s_POD_nginx-deployment-bdf84f685-pg7qk_default_11af7460-37a5-4d61-b94c-5c64684110ed_0
[root@k8s-node01 ~]#
1  | [root@k8s-node01 ~]# curl 10.244.1.2  |