容器 pod时区修改
问题:在K8S里启动一个容器,该容器的设置的时区是非预期时区,而造成日志监控等数据混乱。解决:1、挂载服务器的时区[root@k8s-node ~]# cat demo.yamlapiVersion: v1kind: Podmetadata:name: nginx-podnamespace: defaultlabels:app: my-podspec:containers:- name: my-p
·
问题:
在K8S里启动一个容器,该容器的设置的时区是非预期时区,而造成日志监控等数据混乱。
解决:
1、挂载服务器的时区
[root@k8s-node ~]# cat demo.yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
namespace: default
labels:
app: my-pod
spec:
containers:
- name: my-pod
image: nginx
volumeMounts:
- name: host-time
mountPath: /etc/localtime
readOnly: true
volumes:
- name: host-time
hostPath:
path: /etc/localtime
2、传递变量
[root@k8s-node ~]# cat time-pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: pod-env-tz
spec:
containers:
- name: ngx-time
image: nginx:latest
env:
- name: TZ
value: Asia/Shanghai
3、做镜像前修改镜像时区
4、修改apiserver的配置清单,用Pod Pres方式更改所有容器的时区
注:阿里云托管ack集群暂时不支持修改此信息,pro版本支持apiserver自定义参数
(1)、修改kube-apiserver.yaml文件开启PodPreset
#在末尾添加以下内容
- --runtime-config=settings.k8s.io/v1alpha1=true
#再在enable-admission-plugins=NodeRestriction下加一个PodPreset
- --enable-admission-plugins=NodeRestriction,PodPreset
[root@master ~]# cat -n /etc/kubernetes/manifests/kube-apiserver.yaml|grep runtime-config=settings.k8s.io/v1alpha1
42 - --runtime-config=settings.k8s.io/v1alpha1=true
[root@master ~]# cat -n /etc/kubernetes/manifests/kube-apiserver.yaml|grep enable-admission-plugins=NodeRestriction
20 - --enable-admission-plugins=NodeRestriction,PodPreset
(2)、创建Shanghai时区的PodPreset(仅创建了PodPreset资源的namespace名称空间中的资源支持修改的时区)
#创建PodPreset
[root@master ~]# cat time-PodPreset.yaml
apiVersion: settings.k8s.io/v1alpha1
kind: PodPreset
metadata:
name: tz-env
namespace: default #default的namespace空间中支持Asia/Shanghai时区
spec:
selector:
matchLabels:
env:
- name: TZ
value: Asia/Shanghai
#导入
[root@master ~]# kubectl apply -f time-PodPreset.yaml
podpreset.settings.k8s.io/tz-env created
(3)、创建新pod查看时间
#创建新pod查看时间
[root@master ~]# kubectl apply -f demo.yaml
[root@master ~]# kubectl exec -it nginx-pod2 date
(4)、测试在kube-system名称空间中创建pod查看除default名称空间外是否还是UTC时区
只有创建了PodPreset的namespace中的资源的时区改变
#在其他namespace名称空间中创建pod测试时区是否改变
[root@master ~]# kubectl apply -f demo.yaml -n kube-system
pod/nginx-pod created
[root@master ~]# kubectl get pod -n kube-system nginx-pod
NAME READY STATUS RESTARTS AGE
nginx-pod 1/1 Running 0 24s
[root@master ~]# kubectl -n kube-system exec -it nginx-pod date
更多推荐
已为社区贡献15条内容
所有评论(0)