关于 Kubernetes 1.8 + Flannel 的分享今天就完成了,需要完整资料和代码(包括所需的包)的看文章底部的领取方式。
六.Docker-registry web 私有仓库构建
环境说明:
我们选取 master 192.168.0.221 做私有仓库地址 ( docker-ce 的安装这里不再描述)
使用到的镜像:
docker-registry-web.tar.gz #镜像仓库web展示
registry-v2.6.2.tar.gz #镜像仓库容器
docker-registry-web-conf.tar.gz #创建镜像仓库yaml配置文件
1.查看 docker 版本,配置 hosts 文件
[root@node1 ~]# vi /etc/hosts
192.168.0.221 registry-srv
192.168.0.221 registry-web
2.导入镜像
[root@node1 ~]# docker load -i docker-registry-web.tar.gz
[root@node1 ~]# docker load -i registry-v2.6.2.tar.gz
3.创建容器
[root@node1 ~]# tar -zxvf docker-registry-web-conf.tar.gz
1)启动 registry:
# docker run -v /root/docker-registry-web/conf/registry-srv.yml:/etc/docker/registry/config.yml:ro -v /root/docker-registry-web/conf/auth.cert:/etc/docker/registry/auth.cert:ro -v /data:/var/lib/registry/ -p 5000:5000 --restart=always --name registry-srv -d registry:2.6.2
2)启动 registry-web
# docker run -d -v /root/docker-registry-web/conf/registry-web.yml:/conf/config.yml:ro -v /root/docker-registry-web/conf/auth.key:/conf/auth.key -v /root/docker-registry-web/db:/data -it -p 8081:8080 --link registry-srv --restart=always --name registry-web hyper/docker-registry-web
4.WEB 访问修改 admin 用户权限
http://192.168.0.221:8081/login/auth 账号 admin 密码 admin
点击, “admin” 用户名,添加上删除和写的权限
5.配置本机使用私有仓库
[root@node1 ~]# echo '{ "insecure-registries":["registry-srv:5000"] }' >/etc/docker/daemon.json
[root@node1 ~]# systemctl restart docker #重启docker
[root@node1 ~]# docker start $(docker ps -a -q) #启动容器
**6.上传镜像到 docker registry **
[root@node1 ~]# docker login registry-srv:5000 -u'admin' -p'admin' #登录私有仓库[root@node1 ~]# docker tag 177391bcf802 registry-srv:5000/registry:2.6.2
[root@node1 ~]# docker push registry-srv:5000/registry:2.6.2
7. kubernetes 配置 secret 拉取私仓镜像
#创建证书
[root@node1 ~]# kubectl create secret docker-registry regsecret --docker-server=registry-srv:5000 --docker-username=admin --docker-password=admin --docker-email=admin@example.com
[root@node1 ~]# cat k8s/yaml/busybox.yaml
apiVersion: v1
kind: Pod
metadata:
name: busybox
namespace: default
spec:
containers:
- image: registry-srv:5000/busybox:latest
command:
- ping
- "114.114.114.114"
imagePullPolicy: IfNotPresent
name: busybox
restartPolicy: Always imagePullSecrets:
- name: regsecret(红色字体即是,配置镜像拉取,使用该证书)
[root@node1 ~]# kubectl create -f k8s/yaml/busybox.yaml #创建容器
七.Kubernetes Nginx Ingress 安装与使用
用过 kubernetes 的人都知道,kubernetes 的 service 的网络类型有三种:
- cluertip
- nodeport
- loadbanlance
如果一个 service 想向外部暴露服务,有 nodeport 和 loadbanlance 类型。但是 nodeport 类型,你需要知道 service 对应的 pod 所在的 node 的 ip。而 loadbanlance 通常需要第三方云服务商提供支持。如果没有第三方服务商服务的就没办法做了。
除此之外还有很多其他的替代方式,以下我主要讲解的是通过 ingress 的方式来实现 service的对外服务的暴露。
镜像地址: (本文的会附带所需容器镜像)
registry.cn-hangzhou.aliyuncs.com/google_containers/nginx-ingress-controller:0.8.3(ingress controller 的镜像)
registry.cn-hangzhou.aliyuncs.com/google_containers/defaultbackend:1.0 (默认路由的servcie的镜像)
1.默认实例创建:
[root@node1 ingress]# kubectl create -f default-http-backend.yaml
[root@node1 ingress]# kubectl expose rc default-http-backend --port=80 --target-port=8080 --namespace=kube-system #重要:为默认实例创建svc
2.ingress-controller 创建
[root@node1 ingress]# vi ingress-controller.yaml
value: http://192.168.0.221:8080 #这里是master API地址
#镜像地址建议创建本地容器仓库
[root@node1 ingress]# kubectl create -f ingress-controller.yaml
3.本实验通过 nginx 容器,这里通过 ingress 做入口访问 svc
[root@node1 ingress]# kubectl create -f ../k8s/nginx-deployment.yaml #创建nginx容器
apiVersion: apps/v1beta2
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: 192.168.0.221:5000/nginx:v1
ports:
- containerPort: 80
[root@node1 ingress]# kubectl create -f ../k8s/nginx-service.yaml
apiVersion: v1
kind: Service
metadata:
name: nginx-service
labels:
app: nginx
spec:
ports:
- port: 88
targetPort: 80
selector:
app: nginx
[root@node1 ingress]# kubectl create -f ingress-nginx.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: nginxservice
spec:
rules:
- host: test.info
http:
paths:
- path: /
backend:
serviceName: nginx-service
servicePort: 80
本机写 host 文件进行访问,外部写 host 文件,指向 node ip 即可
已全部分享完毕。
扫码加小助手微信,备注“领取资料”来自简书即可获得完整资料
网友评论