日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

目錄
  • 使用k8tz優雅的解決pod內的時區問題
  • 1.問題簡介
  • 2.k8tz
  • 3.安裝k8t
  • 4.注入策略
  • 坑和解決辦法
    • 1.helm安裝失敗
    • 2.查看時間的順序

使用k8tz優雅的解決pod內的時區問題

1.問題簡介

容器在主機的內核上運行,并獲得時鐘,但時區不是來自內核,而是來自用戶空間。在大多數情況下,默認使用協調世界時 (UTC)。 時區的不一致,會帶來很多困擾。即使代碼與時區無關,但容器日志與系統日志時間相關聯排查問題也會讓人頭疼。一些應用程序使用機器的時區作為默認時區,并希望用戶設置時區。當集群中容器的時區不一致時,管理會很不容易。

2.k8tz

k8tz開源地址: https://github.com/k8tz/k8tz

k8tz是一個 Kubernetes 準入控制器和一個將時區注入 Pod 的 CLI 工具。可以用作手動工具來自動轉換 Deployment 和 Pod 可以作為準入控制器安裝并使用注釋來完全自動化創建 Pod 的過程。

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

3.安裝k8t

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

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

#查看 Pod 狀態、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主要有三個鍵值對
#k8tz.io/inject: true/false  是否禁止注入,當注入時區操作和禁止注入同時存在時,注入時區的優先級會高于禁止注入
#k8tz.io/timezone: Asia/Beijing  注入時區,時區選擇根據自己需求
#k8tz.io/strategy: hostpath/initcontainer 提供了掛載本地文件和init容器兩種方式

#測試
#部署一個測試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的啟動流程,可以看到先啟動了一個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 也可以在命名空間中指定,并影響在命名空間中創建的所有 pod。下面創建一個 test namespace 用于測試:
#因為k8tz默認會對新創建的pod更改時區所以這里測試用了shanghai和之前的beijing做區分
[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

#可以看到新創建的nginx2的時區為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安裝失敗

#有時候會因為網絡問題導致安裝失敗
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.查看時間的順序

查看pod時區時一定要在安裝k8tz之前操作,安裝k8tz時會默認添加時區給新創建的pod自動添加k8tz.io/timezone

分享到:
標簽:k8tz Pod 時區 服務器 解決
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定