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

配置

  1. 登录CVM,因为K8S本质是个docker,所以先进入内部
  2. docker ps -a
  3. 找到mysql的那一项,复制name值
  4. docker exec name /bin/sh
  5. 进入后登录Mysql
  6. mysql -u root -p secret创建的初始密码
  7. ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码';
  8. FLUSH PRIVILEGES;

然后就可以远程访问了。