参考:
1、kubesphere官网:
https://kubesphere.com.cn/
https://kubesphere.com.cn/docs/
2、docker 镜像
https://docs.docker.com/storage/volumes/
https://www.docker.com/
https://www.docker.com/products/docker-hub
https://hub.docker.com/
https://hub.docker.com/_/mysql
https://hub.docker.com/_/redis
3、kubesphere 一站式平台搭建与使用
https://www.yuque.com/leifengyang
https://www.yuque.com/leifengyang/oncloud/vgf9wk#D1vbf
4、kubenetes包管理器
https://helm.sh/zh/
5、笔记
• 有状态得容器(mysql,redis、es等)不要指定固定得存储卷,否则多个副本之间会出现数据的覆盖,尽量让每个容器都有自己独立的存储卷,保证数据的独立性。
例如: redis部署没有提前创建存储卷,而是采取现场自动指定的方式。这样就可以保证每个有状态的中间件(redis,mysql)都有独立的数据存储空间。
• docker的卷挂载和路径绑定区别
容器卷挂载docker会先把容器目录下的所有文件复制一份到容器卷
目录挂载docker不会把容器目录下的文件复制一份到宿主目录下.
注意:
卷 (Docker Volume) 是受控存储,是由 Docker 引擎进行管理维护的。因此使用卷,你可以不必处理 uid、SELinux 等各种权限问题,Docker 引擎在建立卷时会自动添加安全规则,以及根据挂载点调整权 限。并且可以统一列表、添加、删除。另外,除了本地卷外,还支持网络卷、分布式卷。
而挂载目录而挂载目录那就没人管了,属于用户自行维护。你就必须手动处理所有权限问题。特别是在 CentOS 上,很多人碰到 Permission Denied,就是因为没有使用卷,而是挂载目录,而且还对 SELinux 安全权限一无所知导致。
这个设置可以在运行时覆盖。通过 docker run 的 -v 参数或者 docker-compose.yml 的 volumes 指定。使用命名卷的好处是可以复用,其它容器可以通过这个命名数据卷的名字来指定挂载,共享其内容(不过要注意并发访问的竞争问题)。
比如,Dockerfile 中说 VOLUME /data,那么如果直接 docker run,其 /data 就会被挂载为匿名卷,向 /data 写入的操作不会写入到容器存储层,而是写入到了匿名卷中。但是如果运行时 docker run -v mydata:/data,这就覆盖了 /data 的挂载设置,要求将 /data 挂载到名为 mydata 的命名卷中。所以说 Dockerfile 中的 VOLUME 实际上是一层保险,确保镜像运行可以更好的遵循最佳实践,不向容器存储层内进行写入操作。
数据卷默认可能会保存于 /var/lib/docker/volumes,不过一般不需要、也不应该访问这个位置。