成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

K8S | Config應用配置

開發 前端
如果Pod運行所在節點有足夠的可用資源,容器可以使用超出對應資源request屬性所設置的資源量,但是不可以使用超出其資源limit屬性所設置的資源量。

一、背景

在自動化流程中,對于一個應用來說,從開發階段的配置管理,到制作容器鏡像,再到最后通過K8S集群發布為服務,整個過程涉及到的配置非常多;

圖片圖片

應用環境:通常是指代碼層面的依賴配置,以常用的Nacos來說,通常會涉及框架、組件、自定義等幾個層面的配置管理;

運行環境:以微服務架構來說,實際環境中需要管理多個應用的服務發布,在整個過程中必然會存在很多配置的管理,比如應用的資源分配、不同環境交互時的身份認證、敏感信息的安全管理等;

不論是應用還是運行層面的配置,都會涉及到一個基本的邏輯:配置可以抽取出來單獨管理,在流程中直接引入該配置即可;

二、ConfigMap

ConfigMap用來將非機密性的數據保存到鍵值對中,Pod可以將其用作環境變量、命令行參數或者存儲卷中的配置文件,會將環境配置信息和容器鏡像解耦,便于應用配置的修改;

1、創建

ConfigMap中data字段用來保存UTF-8字符串,binaryData用來保存二進制數據作為base64編碼的字串;

apiVersion: v1
kind: ConfigMap
metadata:
  name: app-config-map
  namespace: default
data:
  active: test
  started: hello
  program: world

創建【ConfigMap】

kubectl apply -f app-config-map.yaml

查看【ConfigMap】

kubectl get cm/app-config-map -o yaml

K8S界面查看【ConfigMap】

圖片圖片

2、使用

用法一:使用「app-config-map」中的值來配置【Pod】,在env中定義多個環境變量,但是值從ConfigMap中讀取;

apiVersion: v1
kind: Pod
metadata:
  name: auto-client-one
spec:
  containers:
    - name: auto-client
      image: auto-client:1.1.3
      imagePullPolicy: Never
      ports:
        - containerPort: 8079
      env:
        - name: DATA_ACTIVE
          valueFrom:
            configMapKeyRef:
              name: app-config-map
              key: active
        - name: DATA_STARTED
          valueFrom:
            configMapKeyRef:
              name: app-config-map
              key: started
        - name: DATA_PROGRAM
          valueFrom:
            configMapKeyRef:
              name: app-config-map
              key: program

創建【Pod】

kubectl create -f auto-client-one.yaml

用法二:在【Pod】配置中,直接使用envFrom引入「app-config-map」,從而完成環境變量的設置;

apiVersion: v1
kind: Pod
metadata:
  name: auto-client-two
spec:
  containers:
    - name: auto-client
      image: auto-client:1.1.3
      imagePullPolicy: Never
      ports:
        - containerPort: 8079
      envFrom:
        - configMapRef:
            name: app-config-map

查看環境變量

# 1、執行該命令
kubectl exec -it auto-client-one -- bash

# 2、輸入命令:env
env

# 3、打印的環境變量,只留下【app-config-map】配置的參數

DATA_ACTIVE=test
DATA_PROGRAM=world
DATA_STARTED=hello

# 4、查看【DATA_STARTED】的變量值
echo $DATA_STARTED

在【auto-client:1.1.3】容器鏡像中,添加了一個輸出環境變量的定時任務,通過查看運行日志,可以看到相關配置會被代碼正確讀取;

@Component
public class PrintEnvJob {

    private static final Logger LOG = LoggerFactory.getLogger(PrintEnvJob.class.getName()) ;

    @Scheduled(fixedDelay = 60000)
    public void systemData () {
        Map<String,String> envMap = System.getenv();
        for (Map.Entry<String, String> entry:envMap.entrySet()){
            String key = entry.getKey();
            String value = entry.getValue();
            LOG.info("【key:{},value:{}】",key,value);
        }
    }
}

【auto-client-one】日志輸出

圖片圖片

【auto-client-two】日志輸出

圖片圖片

注意事項

  • ConfigMap在設計上不是用來保存大量數據的,因此保存的數據不可超過1MiB;
  • ConfigMap并不提供保密或者加密功能,如果存儲的數據是機密的,可以使用Secret對象,或者使用其它方式確保數據的私密性;
  • ConfigMap中可以通過將immutable字段設置為true創建不可變更的配置,如果要修改只能刪除后重建;

三、Secret

Secret是一種包含少量敏感信息例如密碼、令牌或密鑰的對象,這樣的信息可能會被放在Pod規約中或者鏡像中,使用Secret意味著不需要在應用程序代碼中包含敏感數據;

1、創建

將【auto-client:1.1.3】鏡像推送到云端的docker私有倉庫里,并且刪除本地相關鏡像,測試下面的流程;

圖片圖片

這里以最常見的鏡像拉取場景來說,通常容器鏡像文件是放在私有的云端倉庫,K8S在訪問時需要提供身份證明,可以通過Secret配置來處理該場景;

kubectl create secret docker-registry 【secret名稱】 --docker-server=【倉庫地址】 --docker-username=【用戶名】 --docker-password=【密碼】 --namespace=【命名空間】 -o yaml > cloud-registry-secret.yaml

2、使用

在上面配置了鏡像拉取的Secret對象,在Pod層面使用imagePullSecrets來引用該對象,當從私有倉庫拉取容器鏡像時,節點上的kubelet能夠完成與鏡像倉庫的身份認證;

apiVersion: apps/v1
kind: Deployment
metadata:
  name: auto-client-deployment
  labels:
    app: auto-client
spec:
  replicas: 1
  selector:
    matchLabels:
      app: auto-client
  template:
    metadata:
      labels:
        app: auto-client
    spec:
      imagePullSecrets:
        - name: cloud-registry-secret
      containers:
        - name: auto-client
          image: 【倉庫地址】/auto-client:1.1.3
          imagePullPolicy: Always
          ports:
            - containerPort: 8079

注意事項

  • 默認情況下Secret未加密地存儲在etcd中,任何擁有權限的用戶都可以檢索或修改Secret信息;
  • 每個Secret的大小最多為1MiB,施加這一限制是為了避免用戶創建非常大的Secret,進而導致API服務器和kubelet內存耗盡;

四、Pod與容器

在定義Pod時可以選擇性地為每個容器設定所需要的資源數量,最常見的可設定資源是CPU和內存大小,或者其他類型的資源,這樣有利于調度器給Pod選擇合適的節點;

apiVersion: apps/v1
kind: Deployment
metadata:
  name: auto-client-rs-deployment
  labels:
    app: auto-client
spec:
  replicas: 1
  selector:
    matchLabels:
      app: auto-client
  template:
    metadata:
      labels:
        app: auto-client
    spec:
      containers:
        - name: auto-serve
          image: auto-client:1.1.3
          imagePullPolicy: Never
          ports:
            - containerPort: 8079
          resources:
            requests:
              cpu: "250m"
              memory: "128Mi"
            limits:
              cpu: "500m"
              memory: "256Mi"

注意事項

  • CPU和內存統稱為計算資源,計算資源的數量是可測量的,可以被請求、被分配、被消耗;
  • requests為容器指定資源需求,limits為容器設置資源限制;
  • 如果Pod運行所在節點有足夠的可用資源,容器可以使用超出對應資源request屬性所設置的資源量,但是不可以使用超出其資源limit屬性所設置的資源量;

五、參考源碼

文檔倉庫:
https://gitee.com/cicadasmile/butte-java-note

腳本倉庫:
https://gitee.com/cicadasmile/butte-auto-parent

責任編輯:武曉燕 來源: 知了一笑
相關推薦

2023-09-06 08:12:04

k8s云原生

2022-04-22 13:32:01

K8s容器引擎架構

2023-09-27 08:09:22

2023-11-06 07:16:22

WasmK8s模塊

2021-08-05 07:28:26

K8sNFS ProvisiSubdir

2023-11-27 13:54:00

kubernetes高可用

2025-04-09 07:58:15

2020-05-12 10:20:39

K8s kubernetes中間件

2022-09-05 08:26:29

Kubernetes標簽

2023-05-25 21:38:30

2023-08-03 08:36:30

Service服務架構

2025-01-03 08:08:56

2024-01-26 14:35:03

鑒權K8sNode

2021-04-12 20:42:50

K8S端口內存

2023-03-05 21:50:46

K8s集群容量

2023-09-03 23:58:23

k8s集群容量

2022-12-06 07:30:12

K8s云原生生態系統

2021-12-03 06:29:56

K8sDubboSpring

2022-12-07 17:33:50

K8Skubernetes

2022-01-11 07:59:15

K8S KubernetesAirflow
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品自产av一区二区三区 | 国产午夜精品一区二区三区 | 一级毛片视频在线观看 | 欧美亚洲综合久久 | 午夜视频精品 | 久久伊人一区二区 | 中文精品一区二区 | 天天久久| 在线播放中文字幕 | 国产一区欧美 | 欧美一区二区三区在线 | 日韩电影在线一区 | 天天色天天射天天干 | 日韩超碰在线 | av入口| 国产一区二区三区四区五区加勒比 | 欧美日韩一区二区在线 | 国产a爽一区二区久久久 | 久久久久一区 | 亚洲成人免费av | 五月免费视频 | 亚洲一区不卡在线 | 国产精品美女久久久久aⅴ国产馆 | 国产一区二区精品在线 | 天天爱av| 中文字幕一级 | 国产一区二区三区免费观看视频 | 99久久99久久精品国产片果冰 | 黄色三级免费 | 国产精品国产三级国产aⅴ原创 | 日韩二区三区 | 青青草av在线播放 | 国产精品日产欧美久久久久 | 欧美午夜久久 | 日本激情视频在线播放 | 日韩伦理一区二区 | 亚洲日本免费 | av天天澡天天爽天天av | 久久精品国产一区二区电影 | 精品少妇一区二区三区日产乱码 | 一区二区三区视频在线观看 |