本文是在学习用Docker配合Kubernetes部署项目过程中遇到的一些问题,做一个归纳总结、分享;
部署Demo是单机部署,没做集群配置,一个入门Demo,集群配置是将Node节点IP配到Master控制面板中;
Docker:
Docker的用途是来做镜像,并推送到私有镜像仓库 ,然后用K8S来拉取镜像部署服务
Dockerfile生成镜像之后,推送镜像仓库,可能会出现下面的问题
server gave HTTP response to HTTPS client
原因:因为客户端push的时候采用https协议,而registry未使用https导致的。
解决方法:
1.修改文件
vim /etc/docker/daemon.json
2.加入这一行
# 单个私服的写法
"insecure-registries":["填你的harbor服务器地址"]
# 多个私服的写法
"insecure-registries": ["registry1的IP地址:端口号","registry2的IP地址:端口号"]
- 重启docker守护线程
systemctl daemon-reload
4.重启docker
systemctl restart docker
然后再去push就可以成功;ps:局域网不可以想外网推送;
Kubernetes:
Kubernetes用来部署服务,这里分享在yaml中设置时区及节点吧
containers:
- name: demo-redis-mysql
# 指定Docker Hub中的镜像地址
image: dockerdjyc/demo-redis-mysql:v1.0
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8080
env:
# 指定数据库连接地址
- name: spring.datasource.url
value: jdbc:mysql://mysql-service:3306/test?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai #mysql-service:是部署的mysql的service.yaml的名
# 指定数据库连接密码
- name: spring.datasource.password
value: "root"
# 指定redis连接地址
- name: spring.redis.host
value: redis-service #部署的redis的service.yaml的名
# 指定日志文件路径
- name: logging.path
value: /var/logs
# 设置时区,不设置的话会比服务器时间晚8个小时
- name: TZ
value: Asia/Shanghai
volumeMounts:
- mountPath: /var/logs
name: log-volume