kubernetes尝鲜并搭建服务
目的
使用良心云提供面板管理k8s,搭建于1C2G的CVM上,跑gogs,Mysql
Gogs
外网访问
官方架构图为使用POD仅有一个对外网暴露,但是腾讯云提供的访问方式有4种
- 公网访问:此方式需要开通Ingress插件,收费0.02元/小时
- 仅集群访问
- 仅VPC访问
- 主机端口访问:对主机暴露端口范围只能为30000 - 32767
选择主机端口访问,但主机80端口无法映射,根据架构优先选择Ingress,可惜收费,所以放弃部分安全性及高可用。
直接在主机搭建Nginx,端口转发到gogs的服务上,代替Ingress。
部署镜像
部署非常简单,面板上Master由腾讯托管,K8S服务托管于一台CVM上即可。但是搭建pod时发现gogs不在官方镜像仓库内,但官方仓库确实有这个镜像,非常奇怪。于是去官方镜像页面下找到yml配置文件,在腾讯云的自有镜像里进行构建(已公开)。
配置参数
- 数据卷:参考前篇文章docker-compose内的配置,映射到主机目录即可
- CPU内存限制:这里CPU的limit不能完全占满所有资源,当搭建其他POD时,总limit不能超过可分配上限
- 访问限制:参考第一个标题,映射主机
好了,现在应该跑起来了,接下来在Nginx里配置转发到gogs映射到主机的端口即可访问。
Mysql
谈论
这个坑巨多,搭建成功后还是放弃了
- 首先是搭建Gogs后发现资源占用太高,再新建POD搭建Mysql这台机器扛不住
- 部署时配置参数里,环境变量 需要添加secret,先去面板中配置管理 - secret创建
- name: mysql_secret
- key: MYSQL_ROOT_PASSWORD
- value: mysql初始密码
- 创建完secret后在部署时选择即可,记得别名为MYSQL_ROOT_PASSWORD
- 创建完POD后你是不能远程登录的,面板提供的登录页面几乎残废不能操作,只能开shell
配置
- 登录CVM,因为K8S本质是个docker,所以先进入内部
docker ps -a
- 找到mysql的那一项,复制name值
docker exec name /bin/sh
- 进入后登录Mysql
mysql -u root -p secret创建的初始密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码';
FLUSH PRIVILEGES;
然后就可以远程访问了。