写点什么

容器 & 服务:Kubernetes 运维记录

  • 2022 年 4 月 05 日
  • 本文字数:1807 字

    阅读完需:约 6 分钟

容器 & 服务:Kubernetes运维记录

系列文章:

容器 & 服务:开篇,压力与资源

容器 & 服务:一个 Java 应用的 Docker 构建实战

容器 & 服务:Docker 应用的 Jenkins 构建

容器 & 服务:Docker 应用的 Jenkins 构建 (二)

容器 & 服务:K8s 与 Docker 应用集群 (一)

容器 & 服务:K8s 与 Docker 应用集群 (二)

容器 & 服务:Kubernetes 构件及 Deployment 操作

容器 & 服务: ClickHouse 与 k8s 架构

容器 & 服务: 扩容

容器 & 服务:metrics-server 探索

容器 & 服务:Helm Charts(一)

容器 & 服务:Helm Charts(二)安装与使用

容器 & 服务: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

Client: Docker Engine - Community Version:           19.03.12 API version:       1.40 Go version:        go1.13.10
复制代码


kubectl version:

Client Version: version.Info{Major:"1", Minor:"16", GitVersion:"v1.16.3", GitCommit:"b3cbbae08ec52a7fc73d334838e18d17e8512749", GitTreeState:"clean", BuildDate:"2019-11-13T11:23:11Z", GoVersion:"go1.12.12", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"16", GitVersion:"v1.16.3", GitCommit:"b3cbbae08ec52a7fc73d334838e18d17e8512749", GitTreeState:"clean", BuildDate:"2019-11-13T11:13:49Z", GoVersion:"go1.12.12", Compiler:"gc", Platform:"linux/amd64"}
复制代码

helm charts:

version.BuildInfo{Version:"v3.0.2", GitCommit:"19e47ee3283ae98139d98460de796c1be1e3975f", GitTreeState:"clean", GoVersion:"go1.13.5"}
复制代码

三 运维工具

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 中查看已配置参数(运维中很重要,一些服务启动异常,往往是配置有误导致的)。


发布于: 刚刚阅读数: 2
用户头像

磨炼中成长,痛苦中前行 2017.10.22 加入

微信公众号【程序员架构进阶】。多年项目实践,架构设计经验。曲折中向前,分享经验和教训

评论

发布
暂无评论
容器 & 服务:Kubernetes运维记录_Kubernetes_程序员架构进阶_InfoQ写作平台