自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

幾個(gè)你或許并不知道 Kubernetes 技巧

云計(jì)算 云原生
kubernetes 是提供了 HPA 機(jī)制可以跟進(jìn) CPU 內(nèi)存等標(biāo)準(zhǔn)數(shù)據(jù)進(jìn)行自動(dòng)擴(kuò)縮容,但有時(shí)我們需要根據(jù)自定義的數(shù)據(jù)進(jìn)行擴(kuò)縮容。

使用 PreStop 優(yōu)雅關(guān)閉 Pod

apiVersion: v1
kind: Pod
metadata:
  name: graceful-shutdown-example
spec:
  containers:
  - name: sample-container
    image: nginx
    lifecycle:
      preStop:
        exec:
          command: ["/bin/sh", "-c", "sleep 30 && nginx -s quit"]

PreStop 允許 Pod 在終止前執(zhí)行一個(gè)命令或者是腳本,使用它就可以在應(yīng)用退出前釋放一些資源,確保應(yīng)用可以優(yōu)雅退出。

比如可以在 Nginx 的 Pod 退出前將當(dāng)前的請(qǐng)求執(zhí)行完畢。

使用臨時(shí)容器調(diào)試 Pod

臨時(shí)容器可以不修改一個(gè)運(yùn)行的容器的前提下調(diào)試容器,可以很方便的調(diào)試一些生產(chǎn)環(huán)境的 bug,可以避免重啟應(yīng)用。

kubectl alpha debug -it podname --image=busybox --target=containername

生產(chǎn)環(huán)境謹(jǐn)慎使用,只有在當(dāng)前環(huán)境下無法排查問題的時(shí)候才使用。

基于自定義的  Metrics 自動(dòng)擴(kuò)容Pod

kubernetes 是提供了 HPA 機(jī)制可以跟進(jìn) CPU 內(nèi)存等標(biāo)準(zhǔn)數(shù)據(jù)進(jìn)行自動(dòng)擴(kuò)縮容,但有時(shí)我們需要根據(jù)自定義的數(shù)據(jù)進(jìn)行擴(kuò)縮容。

比如某個(gè)接口的延遲、隊(duì)列大小等。

apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
  name: custom-metric-hpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: your-application
  minReplicas: 1
  maxReplicas: 10
  metrics:
  - type: Pods
    pods:
      metric:
        name: your_custom_metric
      target:
        type: AverageValue
        averageValue: 10

用 Init Containers 配置啟動(dòng)腳本

初始化容器可以在應(yīng)用容器啟動(dòng)前運(yùn)行,我們可以使用它來初始化應(yīng)用需要的配置、等待依賴的服務(wù)啟動(dòng)完成等工作:

apiVersion: v1
kind: Pod
metadata:
  name: myapp-pod
spec:
  containers:
  - name: myapp-container
    image: myapp
  initContainers:
  - name: init-myservice
    image: busybox
    command: ['sh', '-c', 'until nslookup myservice; do echo waiting for myservice; sleep 2; done;']

比如這個(gè)初始化容器會(huì)等待 myservice 可用后才會(huì)啟動(dòng)應(yīng)用。

需要注意的是如果初始化容器會(huì)阻塞應(yīng)用啟動(dòng),所以要避免在初始化容器里執(zhí)行耗時(shí)操作。

Node 親和性調(diào)度

當(dāng)我們需要將某些應(yīng)用部署到硬件配置較高的節(jié)點(diǎn)時(shí)(比如需要 SSD 硬盤),就可以使用節(jié)點(diǎn)親和性來部署應(yīng)用:

apiVersion: v1
kind: Pod
metadata:
  name: with-node-affinity
spec:
  containers:
  - name: with-node-affinity
    image: nginx
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: disktype
            operator: In
            values:
            - ssd

這個(gè) Pod 會(huì)被部署到有這個(gè) disktype=ssd 標(biāo)簽的 節(jié)點(diǎn)上。

動(dòng)態(tài)配置:ConfigMap 和 Secrets

ConfigMap 和 Secrets可以動(dòng)態(tài)注入到 Pod 中,避免對(duì)這些配置硬編碼。

ConfigMap 適合非敏感的數(shù)據(jù),Secrets 適合敏感的數(shù)據(jù)。

# ConfigMap Example
apiVersion: v1
kind: ConfigMap
metadata:
  name: app-config
data:
  config.json: |
    {
      "key": "value",
      "databaseURL": "http://mydatabase.example.com"
    }

# Pod Spec using ConfigMap
apiVersion: v1
kind: Pod
metadata:
  name: myapp-pod
spec:
  containers:
    - name: myapp-container
      image: myapp
      volumeMounts:
      - name: config-volume
        mountPath: /etc/config
  volumes:
    - name: config-volume
      configMap:
        name: app-config

這樣在應(yīng)用中就可以通過這路徑 /etc/config/config.json 讀取數(shù)據(jù)了。

當(dāng)然也可以把這些數(shù)據(jù)寫入到環(huán)境變量中。

以上這些個(gè)人技巧用的最多的是:

1. 臨時(shí)容器調(diào)試 Pod,特別是業(yè)務(wù)容器缺少一些命令時(shí)。

2. Init Container 等待依賴的服務(wù)啟動(dòng)完成。

3. Node 親和性調(diào)度。

4. ConfigMap 是基礎(chǔ)操作了。

責(zé)任編輯:武曉燕 來源: crossoverJie
相關(guān)推薦

2016-09-13 17:14:30

2017-07-21 09:48:45

SQL索引查詢

2024-03-04 00:00:00

Kubernetes技巧API

2020-08-11 11:20:49

Linux命令使用技巧

2017-03-02 14:05:42

AndroidAndroid Stu調(diào)試技巧

2023-12-21 14:40:09

Python編程語言

2015-08-13 09:03:14

調(diào)試技巧

2020-01-29 19:40:36

Python美好,一直在身邊Line

2021-01-05 11:22:58

Python字符串代碼

2018-09-20 17:05:01

前端程序員JavaScript

2022-12-07 08:16:50

Vue 3技巧數(shù)組

2009-04-14 21:38:05

LinuxUbuntu技巧

2010-03-03 16:26:10

ubantu使用技巧

2020-02-21 14:55:02

Python代碼字符串

2021-01-28 10:04:40

JavaScript開發(fā)技術(shù)

2023-07-07 14:47:46

JavaScript技巧

2018-09-02 15:43:56

Python代碼編程語言

2020-12-14 07:51:16

JS 技巧虛值

2022-05-05 12:02:45

SCSS函數(shù)開發(fā)

2020-05-09 08:48:21

JavaScript原生方法代碼
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)