【kubernetes系列学习】如何使pod和host主机的时间保持一致?

2023-10-17 03:50

本文主要是介绍【kubernetes系列学习】如何使pod和host主机的时间保持一致?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

【kubernetes系列学习】如何使pod和host主机的时间保持一致?

问题及主要目的

pod内输出的当前date与host主机上输出的date是不一致的,这样有时候看pod的日志会有迷惑性,下面来解决一下~

实验环境信息

[root@ningan ~]# uname -a
Linux ningan 5.4.0-131-generic #147~18.04.1-Ubuntu SMP Sat Oct 15 13:10:18 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

在Ubuntu上,/etc/localtime是系统的本地时区设置文件,影响到系统的当前date输出。
Ubuntu 18.04上,/etc/localtime是一个symbolic link,链接到文件:/usr/share/zoneinfo/Asia/Shanghai
/usr/share/zoneinfo下存储着真正的时区设置文件,/usr/share/zoneinfo/Asia/Shanghai也是一个符号链接,指向的是/usr/share/zoneinfo/PRC

[root@ningan ~]# ls -l /etc/localtime
lrwxrwxrwx 1 root root 33 Sep 24 10:18 /etc/localtime -> /usr/share/zoneinfo/Asia/Shanghai
[root@ningan ~]#
[root@ningan ~]# ls -l /usr/share/zoneinfo/Asia/Shanghai
lrwxrwxrwx 1 root root 6 Aug 30 16:20 /usr/share/zoneinfo/Asia/Shanghai -> ../PRC
[root@ningan ~]#
[root@ningan ~]# ls -l /usr/share/zoneinfo/PRC
-rw-r--r-- 1 root root 582 Aug 30 16:20 /usr/share/zoneinfo/PRC
[root@ningan ~]# file /etc/localtime
/etc/localtime: symbolic link to /usr/share/zoneinfo/Asia/Shanghai[root@ningan ~]# file /usr/share/zoneinfo/Asia/Shanghai
/usr/share/zoneinfo/Asia/Shanghai: symbolic link to ../PRC[root@ningan ~]# file /usr/share/zoneinfo/PRC
/usr/share/zoneinfo/PRC: timezone data, version 2, 3 gmt time flags, 3 std time flags, no leap seconds, 29 transition times, 3 abbreviation chars

实验1:正常创建pod,pod和host的时间不一致

[root@ningan ~]# cat nginx.yaml
apiVersion: apps/v1
kind: Deployment
metadata:name: nginx-deploymentlabels:app: nginx
spec:replicas: 3selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:1.14.2imagePullPolicy: Alwaysports:- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:labels:app: nginxname: nginx
spec:ports:- port: 9000name: nginx-svcprotocol: TCPtargetPort: 80selector:app: nginx
### 下发yaml,创建pod
[root@ningan ~]# kubectl apply -f nginx.yaml
deployment.apps/nginx-deployment created
### 查看启动的pod和svc
[root@ningan ~]# kubectl get pod,svc -A |grep nginx
default                pod/nginx-deployment-68d5f6d6b7-4rhj4            1/1     Running            0                20s
default                pod/nginx-deployment-68d5f6d6b7-5dm2f            1/1     Running            0                20s
default                pod/nginx-deployment-68d5f6d6b7-mvhpg            1/1     Running            0                20s
default                service/nginx                       ClusterIP   11.254.209.126   <none>        9000/TCP                       20s
### 进入到容器中,查看容器的当前时间
[root@ningan ~]# kubectl exec -it nginx-deployment-68d5f6d6b7-4rhj4 -- sh
# uname -a
Linux nginx-deployment-68d5f6d6b7-4rhj4 5.4.0-131-generic #147~18.04.1-Ubuntu SMP Sat Oct 15 13:10:18 UTC 2022 x86_64 GNU/Linux
# ls -l /etc/localtime
lrwxrwxrwx 1 root root 27 Mar 26  2019 /etc/localtime -> /usr/share/zoneinfo/Etc/UTC
# date
Fri Oct 28 15:37:43 UTC 2022
# exit
### 到主机上,查看主机的当前时间
[root@ningan ~]# date
Fri Oct 28 23:37:49 CST 2022

可以看到,pod内的时间和host主机的时间是相差了8个小时的。

实验2:挂载主机的/usr/share/zoneinfo/Asia/Shanghai

修改pod的yaml文件,挂载主机的/usr/share/zoneinfo/Asia/Shanghai到pod的/etc/localtime,保证pod和host的时间一致

[root@ningan ~]# cat nginx-date-test.yaml
apiVersion: apps/v1
kind: Deployment
metadata:name: nginx-deploymentlabels:app: nginx
spec:replicas: 3selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:1.14.2imagePullPolicy: Alwaysports:- containerPort: 80volumeMounts:- name: tz-configmountPath: /etc/localtimevolumes:- name: tz-confighostPath:path: /usr/share/zoneinfo/Asia/Shanghai
---
apiVersion: v1
kind: Service
metadata:labels:app: nginxname: nginx
spec:ports:- port: 9000name: nginx-svcprotocol: TCPtargetPort: 80selector:app: nginx

在之前的yaml里新加了挂载文件,如下:

在这里插入图片描述

### 重新下发yaml
[root@ningan ~]# kubectl apply -f nginx-date-test.yaml
deployment.apps/nginx-deployment configured
service/nginx unchanged
### 查看启动的pod和svc
[root@ningan ~]# kubectl get pod,svc -owide -A |grep nginx
default                pod/nginx-deployment-ff5879d6b-lxb5h             1/1     Running            0                3m55s   192.169.219.76   master   <none>           <none>
default                pod/nginx-deployment-ff5879d6b-tr2h6             1/1     Running            0                3m59s   192.169.219.75   master   <none>           <none>
default                pod/nginx-deployment-ff5879d6b-zjmzf             1/1     Running            0                4m4s    192.169.219.74   master   <none>           <none>
default                service/nginx                       ClusterIP   11.254.209.126   <none>        9000/TCP                       28m     app=nginx
### 进入到容器中,查看容器的当前时间
[root@ningan ~]# kubectl exec -it nginx-deployment-ff5879d6b-lxb5h -- date
Sat Oct 29 00:03:02 CST 2022
### 到主机上,查看主机的当前时间
[root@ningan ~]# date
Sat Oct 29 00:03:08 CST 2022

已经修改成功,大功告成!

实验3:挂载主机的/etc/localtime

修改pod的yaml文件,挂载主机的/etc/localtime到pod的/etc/localtime,保证pod和host的时间一致

[root@ningan addons]# cat nginx-date-test2.yaml
apiVersion: apps/v1
kind: Deployment
metadata:name: nginx-deploymentlabels:app: nginx
spec:replicas: 3selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:1.14.2imagePullPolicy: Alwaysports:- containerPort: 80volumeMounts:- name: tz-configmountPath: /etc/localtimevolumes:- name: tz-confighostPath:path: /etc/localtime
---
apiVersion: v1
kind: Service
metadata:labels:app: nginxname: nginx
spec:ports:- port: 9000name: nginx-svcprotocol: TCPtargetPort: 80selector:app: nginx

在实验1的yaml里新加了挂载文件,如下:
在这里插入图片描述

在实验2的yaml里修改了挂载文件,如下:
在这里插入图片描述

### 删除之前pod
[root@ningan addons]# kubectl delete -f nginx-date-test.yaml
deployment.apps "nginx-deployment" deleted
service "nginx" deleted[root@ningan addons]# kubectl get pod,svc -owide -A |grep nginx
[root@ningan addons]#
### 下发新的yaml
[root@ningan addons]# kubectl get pod,svc -owide -A |grep nginx
default                pod/nginx-deployment-b85dc87bc-6zds7             1/1     Running   0                54s     192.169.219.77   master   <none>           <none>
default                pod/nginx-deployment-b85dc87bc-httb5             1/1     Running   0                54s     192.169.219.79   master   <none>           <none>
default                pod/nginx-deployment-b85dc87bc-n4rfm             1/1     Running   0                54s     192.169.219.78   master   <none>           <none>
default                service/nginx                       ClusterIP   11.254.240.43   <none>        9000/TCP                       54s     app=nginx
### 进入到容器中,查看容器的当前时间
[root@ningan addons]# kubectl exec -it nginx-deployment-b85dc87bc-6zds7 -- date
Sat Oct 29 00:15:08 CST 2022
### 到主机上,查看主机的当前时间
[root@ningan addons]# date
Sat Oct 29 00:15:10 CST 2022

大功告成~

参考

Kubernetes集群Pod使用Host的本地时区设置

这篇关于【kubernetes系列学习】如何使pod和host主机的时间保持一致?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/222750

相关文章

服务器集群同步时间手记

1.时间服务器配置(必须root用户) (1)检查ntp是否安装 [root@node1 桌面]# rpm -qa|grep ntpntp-4.2.6p5-10.el6.centos.x86_64fontpackages-filesystem-1.41-1.1.el6.noarchntpdate-4.2.6p5-10.el6.centos.x86_64 (2)修改ntp配置文件 [r

浅谈主机加固,六种有效的主机加固方法

在数字化时代,数据的价值不言而喻,但随之而来的安全威胁也日益严峻。从勒索病毒到内部泄露,企业的数据安全面临着前所未有的挑战。为了应对这些挑战,一种全新的主机加固解决方案应运而生。 MCK主机加固解决方案,采用先进的安全容器中间件技术,构建起一套内核级的纵深立体防护体系。这一体系突破了传统安全防护的局限,即使在管理员权限被恶意利用的情况下,也能确保服务器的安全稳定运行。 普适主机加固措施:

Kubernetes PodSecurityPolicy:PSP能实现的5种主要安全策略

Kubernetes PodSecurityPolicy:PSP能实现的5种主要安全策略 1. 特权模式限制2. 宿主机资源隔离3. 用户和组管理4. 权限提升控制5. SELinux配置 💖The Begin💖点点关注,收藏不迷路💖 Kubernetes的PodSecurityPolicy(PSP)是一个关键的安全特性,它在Pod创建之前实施安全策略,确保P

K8S(Kubernetes)开源的容器编排平台安装步骤详解

K8S(Kubernetes)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。以下是K8S容器编排平台的安装步骤、使用方式及特点的概述: 安装步骤: 安装Docker:K8S需要基于Docker来运行容器化应用程序。首先要在所有节点上安装Docker引擎。 安装Kubernetes Master:在集群中选择一台主机作为Master节点,安装K8S的控制平面组件,如AP

什么是Kubernetes PodSecurityPolicy?

@TOC 💖The Begin💖点点关注,收藏不迷路💖 1、什么是PodSecurityPolicy? PodSecurityPolicy(PSP)是Kubernetes中的一个安全特性,用于在Pod创建前进行安全策略检查,限制Pod的资源使用、运行权限等,提升集群安全性。 2、为什么需要它? 默认情况下,Kubernetes允许用户自由创建Pod,可能带来安全风险。

实例:如何统计当前主机的连接状态和连接数

统计当前主机的连接状态和连接数 在 Linux 中,可使用 ss 命令来查看主机的网络连接状态。以下是统计当前主机连接状态和连接主机数量的具体操作。 1. 统计当前主机的连接状态 使用 ss 命令结合 grep、cut、sort 和 uniq 命令来统计当前主机的 TCP 连接状态。 ss -nta | grep -v '^State' | cut -d " " -f 1 | sort |

MiniGPT-3D, 首个高效的3D点云大语言模型,仅需一张RTX3090显卡,训练一天时间,已开源

项目主页:https://tangyuan96.github.io/minigpt_3d_project_page/ 代码:https://github.com/TangYuan96/MiniGPT-3D 论文:https://arxiv.org/pdf/2405.01413 MiniGPT-3D在多个任务上取得了SoTA,被ACM MM2024接收,只拥有47.8M的可训练参数,在一张RTX

容器编排平台Kubernetes简介

目录 什么是K8s 为什么需要K8s 什么是容器(Contianer) K8s能做什么? K8s的架构原理  控制平面(Control plane)         kube-apiserver         etcd         kube-scheduler         kube-controller-manager         cloud-controlle

【Kubernetes】K8s 的安全框架和用户认证

K8s 的安全框架和用户认证 1.Kubernetes 的安全框架1.1 认证:Authentication1.2 鉴权:Authorization1.3 准入控制:Admission Control 2.Kubernetes 的用户认证2.1 Kubernetes 的用户认证方式2.2 配置 Kubernetes 集群使用密码认证 Kubernetes 作为一个分布式的虚拟

批处理以当前时间为文件名创建文件

批处理以当前时间为文件名创建文件 批处理创建空文件 有时候,需要创建以当前时间命名的文件,手动输入当然可以,但是有更省心的方法吗? 假设我是 windows 操作系统,打开命令行。 输入以下命令试试: echo %date:~0,4%_%date:~5,2%_%date:~8,2%_%time:~0,2%_%time:~3,2%_%time:~6,2% 输出类似: 2019_06