容器 & 服务:Kubernetes 运维记录
系列文章:
容器 & 服务:一个 Java 应用的 Docker 构建实战
容器 & 服务:Docker 应用的 Jenkins 构建 (二)
容器 & 服务:Kubernetes 构件及 Deployment 操作
容器 & 服务:Helm Charts(三)K8s 集群信息
容器 & 服务:Kubernetes API Server 访问问题
一 概述
忙了一个月,经历了一段连续工作周末午休的奋斗时光,终于保障了产品的按时发版,也正式的松了口气。睡了几天,让疲劳的身体得以恢复,准备下一次战斗。
不得不说,随着年龄的增长,精力确实有所下降,趁着几天假期,又捡起了撸铁跑步等各项运动,希望能够借此拉长自己的职业生涯,也让身体衰老的缓慢一些吧。
顺便这里先插一条招聘消息:百度2022春季实习生校园招聘内推已经开始,可填入内推码 ISVM21 完成投递。话不多说,开始分享最近在 k8s 使用和运维上遇到的一些问题和解决经验。
二 基础信息
2.1 背景介绍
目前使用的开发工具,除 Java-maven-spring 进行开发之外,持续集成部分使用公司开发的流水线工具,集成 docker&k8s 能力实现。在代码开发完成,提交并审核通过后,会走编译、镜像构建、chart 集成、镜像发布等步骤,把镜像发布到镜像仓库,之后 chart 也会更新。在后续的部署环节,就可以通过脚本拉取对应的 chart 版本并通过 helm install 等命令执行部署,完成目标环境的版本更新。整体采用基于 k8s 的服务(容器)架构,mysql、redis、mongodb,以及 kafka、监控(prometheus)等底层存储和中间件,都采用了容器化管理。服务访问关系如下图所示:
2.2 版本信息
当前使用的环境,docker、k8s 等版本信息如下:
docker version
kubectl version:
helm charts:
三 运维工具
3.1 k8s dashboard
3.1.1 基础介绍
kubernets 集群中,管理资源的方法有四种:命令行(shell)、yaml、api,以及图形界面(即 dashboard)。其中,我们通常在持续集成时会使用 yaml 文件做发布配置,运维时通过命令行操作来执行安装、重启、查看日志等常规操作;而 dashboard 则是日常观察和问题排查的简单且便捷的方式。通过图形化管理界面,能够利用 metric-server 实现 node 和 pod 的监控。
dashboard 的安装这里不再赘述,如果是 mac 环境,那么可以参考Docker-mac下环境搭建这篇文章。如果是 linux 或其他操作系统,官方文档和很多技术博客上也有详细的描述。如果有问题可在评论区留言沟通。
3.1.2 dashboard 登录
如果在安装 dashboard 时设置了访问密钥/token,那么在通过浏览器登录时,会遇到如下提示:
有些可以支持跳过建群,点 skip 直接进入主界面即可。但也有些会要求我们输入 token。
查看 token 方法(假设使用默认的 kube-system):
kubectl -n kube-system describe secret
但这样可能会看到返回了很多的带有不通 name 的 token 信息。
我们要获取精确的 token,那么我们需要定位到 kubernets-dashboard-token 这项:
kubectl describe secret kubernetes-dashboard-token-${xxxx} -n kube-system
把这里的 token 字符串复制,粘贴到 Enter token 的行中,Sign in 即可。
通过 dashboard,我们可以查看各 service、deployment、pod 的健康状况,并在 config map 中查看已配置参数(运维中很重要,一些服务启动异常,往往是配置有误导致的)。
版权声明: 本文为 InfoQ 作者【程序员架构进阶】的原创文章。
原文链接:【http://xie.infoq.cn/article/86b269f0dcf7cac35cfdff74e】。文章转载请联系作者。
评论