我想用命令更改时区。我知道应用hostpath
。
您知道如何应用命令吗?
ln -snf /user/share/zoneinfor/$TZ /etc/localtime
它在容器中效果很好。但是我不知道在yaml文件中使用命令和参数。
设置tz环境变量如下,对我来说在GCP kubernetes上效果很好。
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: demo
spec:
replicas: 1
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: demo
image: gcr.io/project/image:master
imagePullPolicy: Always
env:
- name: TZ
value: Europe/Warsaw
dnsPolicy: ClusterFirst
restartPolicy: Always
terminationGracePeriodSeconds: 0
您可以使用特定的时区配置和主机路径卷来设置特定的时区,可以更改POD的timezone
。您的yaml文件看起来像:
apiVersion: v1
kind: Pod
metadata:
name: busybox-sleep
spec:
containers:
- name: busybox
image: busybox
args:
- sleep
- "1000000"
volumeMounts:
- name: tz-config
mountPath: /etc/localtime
volumes:
- name: tz-config
hostPath:
path: /usr/share/zoneinfo/Europe/Prague
type: File
如果您需要在所有POD或部署中都需要它,则需要在所有部署文件中添加卷和量,并将path
中的CC_3值更改为要设置的时区。
在部署中,您可以通过在/etc/localtime中创建量并设置其值来做到这一点。这是我为Mariadb的示例:
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: mariadb
spec:
replicas: 1
template:
metadata:
labels:
app: mariadb
spec:
containers:
- name: mariadb
image: mariadb
ports:
- containerPort: 3306
name: mariadb
env:
- name: MYSQL_ROOT_PASSWORD
value: password
volumeMounts:
- name: tz-config
mountPath: /etc/localtime
volumes:
- name: tz-config
hostPath:
path: /usr/share/zoneinfo/Europe/Madrid
为了添加" hostpath"在部署配置中,如先前的答案中所建议的,您需要成为特权用户。否则您的部署可能会失败:
'hostpath&quot":不允许使用主机路径
作为解决方法,您可以尝试一种论点:
- 在卷旁边添加
allowedHostPaths: {}
。 - 添加 tz 环境变量。例如:
TZ = Asia/Jerusalem
(选项2类似于运行docker exec -it openshift/origin /bin/bash -c "export TZ='Asia/Jerusalem' && /bin/bash"
)。
对我来说:设置卷和数量无济于事。在我的情况下,仅设置TZ环境就可以工作。