前几天在使用k8s中的CronJob时发现了一个很奇怪的问题, 按照官方文档的demo跑起来是没有任何问题的,

但是当我想要设置每天一个固定时间点例如12点20执行一个job的时候,到了时间之后无论如何都不会执行。

一开始怀疑是cron表达式写的有问题,但是经过多次试验倒是没问题,然后就想到了时区的问题。

首先我先尝试使用PodPreset来修改所有容器的时区(在pod 创建时,用户可以使用 podpreset 对象将特定信息注入 pod 中,这些信息可以包括 secret、 卷、 卷挂载和环境变量)

默认k8s是没有开启PodPreset的,开启PodPreset需要修改master节点上的/etc/kubernetes/manifests/kube-apiserver.yaml文件

1
2
3
首先在CMD末尾添加一个--runtime-config=settings.k8s.io/v1alpha1=true
在--enable-admission-plugins的后面增加一个PodPreset
重启k8s systemctl restart kubelet

创建一个yml,为所有的pod挂载一个时区的环境变量

1
2
3
4
5
6
7
8
9
10
11
apiVersion: settings.k8s.io/v1alpha1
kind: PodPreset
metadata:
name: tz-env
namespace: unicode-pay
spec:
selector:
matchLabels:
env:
- name: TZ
value: Asia/Shanghai

注意:

  1. Pod Preset是namespace级别的对象,其作用范围只能是同一个命名空间下容器
  2. matchLabels为空代表选择所有

此时再次尝试CronJob之后发现还是不执行,然后进入该命名空间下的其他pod之后查看时间发现也没问题。

此时想到了虽然把pod的时区更改了,但是k8s调度器可不是按照pod的时间进行调度的,原来此时需要修改的是k8s的时区

再次来到/etc/kubernetes/manifests目录,使用如下方式修改此目录下4个k8s的组件的时间

1
2
3
4
5
6
7
8
9
10
11
12
13
14
apiVersion: v1
kind: Pod
metadata:
name: time
spec:
containers:
volumeMounts:
- name: config
mountPath: /etc/localtime
readOnly: true
volumes:
- name: config
hostPath:
path: /etc/localtime

重启k8s,搞定

systemctl restart kubelet

k8s时区问题解决方案的更多相关文章

  1. (转载)solr时区问题解决方案

    solr默认的使用的是utc格林尼治时间,与我们的GMT+8相差8个小时,网上好多解决办法是在自己应用中的时间上加8个小时和减8个小时做变换:或者不用date类型,改为long. 个人感觉这两个办法都 ...

  2. mysql时区问题解决方案

    #url添加参数serverTimezone=UTC 1.jdbc:mysql://127.0.0.1:3306/mymusic?useUnicode=true&characterEncodi ...

  3. K8s的工作原理

    title: Kubernetes之初探 subtitle: K8s的工作原理 date: 2018-09-18 18:26:37 --- K8s概述 我清晰地记得曾经读到过的一篇博文,上面是这样写的 ...

  4. K8s初探

    1. K8s概述 2. K8s的工作原理 什么是K8s 用法: 核心概念             集群 Kubernetes Master Node Pod Lable Replication Con ...

  5. 十四,K8s集群网络flannel及canal策略

    目录 k8s网络CNI之flannel k8s网络通信模型 常见CNI插件(Container,Network,Interface) 插件通信一般的解决方案 网络插件的应用 Flannel插件 fla ...

  6. k8s+crio+podman搭建集群

    前言 在传统的k8s集群中,我们都是使用docker engine做为底层的容器管理软件的,而docker engine因为不是k8s亲生的解决方案,所以实际使用中会有更多的分层.之前我们也讲过,k8 ...

  7. 关于COOKIE学习的一二

    index.php <?php setcookie("name","dalisng",time()+3600); setcookie("addr ...

  8. 源码安装zabbix

    源码安装zabbix 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.     欢迎加入:高级运维工程师之路 598432640 前言:参考网上多篇源码安装的连接,自己把安装过程丢在这 ...

  9. 基于容器微服务的PaaS云平台设计(二)通过kubernetes实现微服务容器管理

    版权声明:本文为博主原创文章,欢迎转载,转载请注明作者.原文超链接 ,博主地址:http://www.cnblogs.com/SuperXJ/ 上一章描述了基于spring cloud的微服务实例(实 ...

随机推荐

  1. pytest文档30-功能用例与自动化用例完美对接(allure)

    前言 做自动化做久了,经常会思考一个问题,到底别人是怎么做的自动化,跟自己的有啥不一样,看过不少书和资料,都是停留在demo的层面. 真正把自动化做的好的大牛又不屑于分享自己的劳动成果,所以大部分情况 ...

  2. SpringBoot整合easyexcel实现Excel的导入与导出

    导出 在一般不管大的或者小的系统中,各家的产品都一样,闲的无聊的时候都喜欢让我们这些程序员导出一些数据出来供他观赏,非说这是必须需求,非做不可,那么我们就只能苦逼的哼哧哼哧的写bug喽. 之前使用PO ...

  3. Ansible 相关介绍

    相关视频http://v.xue.taobao.com/learn.htm?spm=a220o.1000855.0.0.24c748e6QMQV0e&courseId=111848 Ansib ...

  4. 201871010101-陈来弟《面相对象程序设计(java)》第十周学习总结

    201871010101-陈来弟<面相对象程序设计(java)>第十周学习总结 实验八异常.断言与日志 实验时间 2019-11-1 1.实验目的与要求 (1) 掌握java异常处理技术: ...

  5. 201871010108-高文利《面向对象程序设计(java)》第七周学习总结

    项目 内容 这个作业属于哪个课程 <任课教师博客主页链接> https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 <作业链接地址> ht ...

  6. 莫烦TensorFlow_05 add_layer

    import tensorflow as tf import numpy as np def add_layer(inputs, in_size, out_size, activation_funct ...

  7. docker--发布docker镜像

    前戏 前面我们自己做了个docker镜像,我们可以上传到docker hub,别人就可以下载使用了 发布到docker hub 我们前面使用docker search 查找的镜像都是从docker h ...

  8. 【day05】css

    一.盒模型(BoxModel) 1.width 宽度 2.height 高度  说明: 块元素和有宽高属性的标记(img,input)            能设置宽度和高度,而行元素不能设置宽高 3 ...

  9. 树的遍历 | 1079 理解题意+DFS

    这题如果读懂了题意,就很好做,一波操作就结束了.不过题目有点难读,考验耐心和读题的细致. AC代码: #include <stdio.h> #include <memory.h> ...

  10. 洛谷 P5021 [NOIP2018]赛道重建

    洛谷 P5021 [NOIP2018]赛道重建 传送门 思路 思路就是常规的思路,所以就不说了--我就是来记录一下我的\(AC\)之路的,真的是太爽了 没错--我也是一个个打的部分分,最后终于AC的, ...