欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用k8tz解決pod內(nèi)的時(shí)區(qū)問(wèn)題(坑的解決)

 更新時(shí)間:2022年10月18日 09:46:06   作者:蕪湖~  
時(shí)區(qū)的不一致,會(huì)帶來(lái)很多困擾。即使代碼與時(shí)區(qū)無(wú)關(guān),但容器日志與系統(tǒng)日志時(shí)間相關(guān)聯(lián)排查問(wèn)題也會(huì)讓人頭疼,這篇文章主要介紹了使用k8tz優(yōu)雅的解決pod內(nèi)的時(shí)區(qū)問(wèn)題,需要的朋友可以參考下

使用k8tz優(yōu)雅的解決pod內(nèi)的時(shí)區(qū)問(wèn)題

1.問(wèn)題簡(jiǎn)介

容器在主機(jī)的內(nèi)核上運(yùn)行,并獲得時(shí)鐘,但時(shí)區(qū)不是來(lái)自?xún)?nèi)核,而是來(lái)自用戶(hù)空間。在大多數(shù)情況下,默認(rèn)使用協(xié)調(diào)世界時(shí) (UTC)。 時(shí)區(qū)的不一致,會(huì)帶來(lái)很多困擾。即使代碼與時(shí)區(qū)無(wú)關(guān),但容器日志與系統(tǒng)日志時(shí)間相關(guān)聯(lián)排查問(wèn)題也會(huì)讓人頭疼。一些應(yīng)用程序使用機(jī)器的時(shí)區(qū)作為默認(rèn)時(shí)區(qū),并希望用戶(hù)設(shè)置時(shí)區(qū)。當(dāng)集群中容器的時(shí)區(qū)不一致時(shí),管理會(huì)很不容易。

2.k8tz

k8tz開(kāi)源地址: https://github.com/k8tz/k8tz

k8tz是一個(gè) Kubernetes 準(zhǔn)入控制器和一個(gè)將時(shí)區(qū)注入 Pod 的 CLI 工具??梢杂米魇謩?dòng)工具來(lái)自動(dòng)轉(zhuǎn)換 Deployment 和 Pod 可以作為準(zhǔn)入控制器安裝并使用注釋來(lái)完全自動(dòng)化創(chuàng)建 Pod 的過(guò)程。

k8tz 可以使用hostPath的方式,或者將emptyDir 注入initContainer并用 TZif(時(shí)區(qū)信息格式) 文件填充卷。然后將emptyDir掛載到 Pod 每個(gè)容器的 /etc/localtime/usr/share/zoneinfo。為了確保所需的時(shí)區(qū)有效,它向所有容器添加了 TZ環(huán)境變量。

3.安裝k8t

#官方提供的helm部署方式
helm repo add k8tz https://k8tz.github.io/k8tz/
helm install k8tz k8tz/k8tz --set timezone=Asia/Beijing

###除了helm安裝官方還提供了其它方式,可以查看官方文檔。

#查看 Pod 狀態(tài)、Mutatingwebhookconfigurations、Service 等資源是否正常:
[root@master ~]# kubectl get mutatingwebhookconfigurations.admissionregistration.k8s.io
NAME        WEBHOOKS   AGE
k8zt-k8tz   1          2m
[root@master ~]# kubectl get all -n k8tz
NAME                            READY   STATUS    RESTARTS   AGE
pod/k8zt-k8tz-7559df766-zlxdz   1/1     Running   0          2m36s

NAME           TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
service/k8zt   ClusterIP   10.68.247.230   <none>        443/TCP   2m36s

NAME                        READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/k8zt-k8tz   1/1     1            1           2m36s

NAME                                  DESIRED   CURRENT   READY   AGE
replicaset.apps/k8zt-k8tz-7559df766   1         1         1       2m36s

4.注入策略

官方提供了三種策略:hostpath、initcontainer、annotations

這里主要講annotations方式

#annotations主要有三個(gè)鍵值對(duì)
#k8tz.io/inject: true/false  是否禁止注入,當(dāng)注入時(shí)區(qū)操作和禁止注入同時(shí)存在時(shí),注入時(shí)區(qū)的優(yōu)先級(jí)會(huì)高于禁止注入
#k8tz.io/timezone: Asia/Beijing  注入時(shí)區(qū),時(shí)區(qū)選擇根據(jù)自己需求
#k8tz.io/strategy: hostpath/initcontainer 提供了掛載本地文件和init容器兩種方式

#測(cè)試
#部署一個(gè)測(cè)試ng
[root@master k8tz]# cat ng1.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:alpine
        ports:
        - containerPort: 80
[root@master k8tz]# date
Mon Oct 10 15:02:41 CST 2022
[root@master k8tz]# kubectl exec -it nginx-7fb7fd49b4-xm5wr sh
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.
/ # date
Mon Oct 10 07:02:54 UTC 2022

##添加注釋  k8tz.io/timezone: Asia/Beijing
[root@master k8tz]# cat ng2.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx2
  annotations:
     k8tz.io/timezone: Asia/Beijing
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx2
  template:
    metadata:
      labels:
        app: nginx2
    spec:
      containers:
      - name: nginx2
        image: nginx:alpine
        ports:
        - containerPort: 80


[root@master k8tz]# date
Mon Oct 10 15:06:14 CST 2022
[root@master k8tz]# kubectl exec -it nginx2-67b5db4568-zhps7 sh
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.
/ # date
Mon Oct 10 07:06:25 UTC 2022

#查看nginx2的啟動(dòng)流程,可以看到先啟動(dòng)了一個(gè)k8tz的init容器
Events:
  Type    Reason     Age   From               Message
  ----    ------     ----  ----               -------
  Normal  Scheduled  111s  default-scheduler  Successfully assigned default/nginx2-67b5db4568-zhps7 to 192.168.130.176
  Normal  Pulled     111s  kubelet            Container image "quay.io/k8tz/k8tz:0.8.0" already present on machine
  Normal  Created    111s  kubelet            Created container k8tz
  Normal  Started    111s  kubelet            Started container k8tz
  Normal  Pulled     110s  kubelet            Container image "nginx:alpine" already present on machine
  Normal  Created    110s  kubelet            Created container nginx2
  Normal  Started    110s  kubelet            Started container nginx2
##annotations 也可以在命名空間中指定,并影響在命名空間中創(chuàng)建的所有 pod。下面創(chuàng)建一個(gè) test namespace 用于測(cè)試:
#因?yàn)閗8tz默認(rèn)會(huì)對(duì)新創(chuàng)建的pod更改時(shí)區(qū)所以這里測(cè)試用了shanghai和之前的beijing做區(qū)分
[root@master ~]# kubectl create ns test
[root@master ~]# kubectl annotate ns test k8tz.io/strategy=hostPath
namespace/test annotated
[root@master ~]# kubectl annotate ns test k8tz.io/timezone=Asia/Shanghai
namespace/test annotated

#可以看到新創(chuàng)建的nginx2的時(shí)區(qū)為shanghai
Name:         nginx2-67b5db4568-9zjpb
Namespace:    test
Priority:     0
Node:         192.168.130.176/192.168.130.176
Start Time:   Mon, 10 Oct 2022 15:26:35 +0800
Labels:       app=nginx2
              pod-template-hash=67b5db4568
Annotations:  k8tz.io/injected: true
              k8tz.io/timezone: Asia/Shanghai
Status:       Running

坑和解決辦法

1.helm安裝失敗

#有時(shí)候會(huì)因?yàn)榫W(wǎng)絡(luò)問(wèn)題導(dǎo)致安裝失敗
Error: failed to download "k8tz/k8tz" (hint: running `helm repo update` may help)

#可以先helm拉到本地再安裝,多嘗試幾次安裝也可
[root@master root]# helm install k8zt --set timezone=Asia/Beijing  k8tz-0.8.0.tgz
NAME: k8zt
LAST DEPLOYED: Mon Oct 10 14:46:55 2022
NAMESPACE: default
STATUS: deployed
REVISION: 1

2.查看時(shí)間的順序

查看pod時(shí)區(qū)時(shí)一定要在安裝k8tz之前操作,安裝k8tz時(shí)會(huì)默認(rèn)添加時(shí)區(qū)給新創(chuàng)建的pod自動(dòng)添加k8tz.io/timezone

到此這篇關(guān)于使用k8tz優(yōu)雅的解決pod內(nèi)的時(shí)區(qū)問(wèn)題的文章就介紹到這了,更多相關(guān)k8tz時(shí)區(qū)問(wèn)題解決內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • K8S如何利用Prometheus監(jiān)控pod的實(shí)時(shí)數(shù)據(jù)指標(biāo)

    K8S如何利用Prometheus監(jiān)控pod的實(shí)時(shí)數(shù)據(jù)指標(biāo)

    這篇文章主要給大家介紹了關(guān)于K8S如何利用Prometheus監(jiān)控pod的實(shí)時(shí)數(shù)據(jù)指標(biāo)的相關(guān)資料,Prometheus是一個(gè)開(kāi)源的服務(wù)監(jiān)控系統(tǒng)和時(shí)序數(shù)據(jù)庫(kù),其提供了通用的數(shù)據(jù)模型和快捷數(shù)據(jù)采集、存儲(chǔ)和查詢(xún)接口,需要的朋友可以參考下
    2024-01-01
  • K8S?中?kubectl?命令詳解

    K8S?中?kubectl?命令詳解

    這篇文章主要介紹了K8S?中?kubectl?命令,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07
  • k8s?Service?實(shí)現(xiàn)服務(wù)發(fā)現(xiàn)和負(fù)載均衡

    k8s?Service?實(shí)現(xiàn)服務(wù)發(fā)現(xiàn)和負(fù)載均衡

    這篇文章主要為大家介紹了k8s?Service?實(shí)現(xiàn)服務(wù)發(fā)現(xiàn)和負(fù)載均衡的工作原理及使用方式詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • kubernetes(k8s)中Yaml文件詳解

    kubernetes(k8s)中Yaml文件詳解

    這篇文章主要給大家介紹了關(guān)于kubernetes(k8s)中Yaml文件詳解的相關(guān)資料,YAML是專(zhuān)門(mén)用來(lái)寫(xiě)配置文件的語(yǔ)言,非常簡(jiǎn)潔和強(qiáng)大,使用比json更方便,需要的朋友可以參考下
    2023-12-12
  • 如何在kubernetes中創(chuàng)建Pod

    如何在kubernetes中創(chuàng)建Pod

    這篇文章主要介紹了如何在kubernetes中創(chuàng)建Pod,幫助大家更好的理解和學(xué)習(xí)使用kubernetes,感興趣的朋友可以了解下
    2021-04-04
  • kubenetes集群版本升級(jí)方式

    kubenetes集群版本升級(jí)方式

    本文詳細(xì)介紹了使用kubeadm和二進(jìn)制方式搭建及升級(jí)Kubernetes集群的方法,介紹了版本控制、升級(jí)步驟、備份ETCD數(shù)據(jù)、升級(jí)各節(jié)點(diǎn)組件等關(guān)鍵操作,并提供了操作示例和注意事項(xiàng),幫助理解和實(shí)施Kubernetes集群的搭建和升級(jí)過(guò)程
    2024-09-09
  • 帶你學(xué)會(huì)k8s?更高級(jí)的對(duì)象Deployment

    帶你學(xué)會(huì)k8s?更高級(jí)的對(duì)象Deployment

    這篇文章主要為大家介紹了k8s還有更高級(jí)的"對(duì)象"Deployment使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • K8S-ConfigMap實(shí)現(xiàn)應(yīng)用和配置分離詳解

    K8S-ConfigMap實(shí)現(xiàn)應(yīng)用和配置分離詳解

    這篇文章主要為大家介紹了K8S-ConfigMap實(shí)現(xiàn)應(yīng)用和配置分離詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • kubernetes日志備份解決ELK中日志丟失問(wèn)題

    kubernetes日志備份解決ELK中日志丟失問(wèn)題

    這篇文章主要為大家介紹了kubernetes日志備份方案的細(xì)節(jié)探究分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • K8S中Pod重啟策略及重啟可能原因詳細(xì)講解

    K8S中Pod重啟策略及重啟可能原因詳細(xì)講解

    在k8s集群中當(dāng)某個(gè)pod資源需要重啟時(shí),我們只會(huì)對(duì)其進(jìn)行刪除,由其pod控制器進(jìn)行重新構(gòu)建,下面這篇文章主要給大家介紹了關(guān)于K8S中Pod重啟策略及重啟可能原因的相關(guān)資料,需要的朋友可以參考下
    2023-05-05

最新評(píng)論