修改CCE内未选中“时区同步”的工作负载
1.背景
-
在创建工作负载时,界面上的“时区同步”选项,默认是未打开的;
-
在工作负载比较多的时候,容易遗漏此选项;
-
跟400确认后,CCE平台竟然无法修改已创建好的工作负载的“时区同步”选项;
-
创建工作负载的操作界面如下:
2.现象
-
造成的结果也很明了,就是工作负载内的时间是错误的,导致POD内的日志等内容,记录的时间都是错的,对日常维护、问题定位造成很大的困扰;
-
下面是一些时间确认的操作过程:
# 选中“时区同步”选项的pod的状态:
$ kubectl exec timezone-3-7dcc86594d-s7c8c date
Fri May 7 14:00:37 CST 2021
# 未选中“时区同步”选项的pod的状态:
$ kubectl exec timezone-5-757f89cd-nwnf9 date
Fri May 7 05:46:49 UTC 2021
-
最神奇的是,问题报了工单后,被回复说平台不支持此功能,让我自己想办法,真是无语;
-
因为业务有近百个工作负载,,每个工作负载内还有许多参数要配置,所以部署一次业务时间需要数小时,就没考虑铲掉重新创建;
3.问题处理
-
-
分别创建了两个各选项完全一致的工作负载(其中一个勾选“时区同步”选项),下载其yaml文件进行对比,发现两个工作负载,差别仅在于勾选了“时区同步”的,多了一个挂卷的选项;
-
以下同两个工作负载yaml文件有区别的位置(左图是勾选了“时区同步”,右图没有):
-
明白了区别所在,解决问题就比较简单了;
3.1.直接修改yaml文件
-
进入无状态负载页面,点击工作负载名称,进入详情页面;
-
点击界面上的“编辑YAML”按钮,进入编辑页面:
-
补全卷挂载的内容,如下所示:
spec:
template:
spec:
volumes:
- name: vol-timezone-5 #此处的名称自己定义,不要和其它的冲突即可;
hostPath:
path: /etc/localtime
type: ''
containers:
- name: container-0
resources: {}
volumeMounts:
- name: vol-timezone-5 #此处的名称自己定义,不要和其它的冲突即可;
readOnly: true
mountPath: /etc/localtime
restartPolicy: Always
-
此方法的缺点是,因为有近百个工作负载,所以在CCE界面上一个一个的修改yaml文件会比较烦,重复下来会想吐;
3.2.导出整个yaml修改后再导入
-
登录CCE节点控制台,使用kubectl命令导出束个deployment的yaml文件;
-
在编辑器里全部修改完成后,再通过kubectl命令导入即可;
-
注意:此方法会使业务中断较长时间,通常在调试阶段才会这样操作。
- 点赞
- 收藏
- 关注作者
评论(0)