<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      K8S | Config應用配置

      繞不開的Config配置;

      一、背景

      在自動化流程中,對于一個應用來說,從開發階段的配置管理,到制作容器鏡像,再到最后通過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
      
      posted @ 2023-08-04 08:16  七號樓  閱讀(718)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲乱人伦中文字幕无码| 亚洲国产欧美一区二区好看电影 | 一本一道av中文字幕无码| 免费视频爱爱太爽了| 五月婷婷中文字幕| 日韩一区二区三区在线视频| 亚洲欧洲日韩国内高清| 91中文字幕在线一区| 国产亚洲久久久久久久| 熟妇的奶头又大又长奶水视频| 国产午夜精品福利免费不| 秋霞鲁丝片成人无码| 国产超高清麻豆精品传媒麻豆精品| 亚洲高清激情一区二区三区| 亚洲三区在线观看内射后入| 亚洲国产午夜精品福利| 国内精品无码一区二区三区| 亚洲免费观看一区二区三区| 亚洲国产午夜福利精品| 额尔古纳市| 国产91色在线精品三级| 97久久精品亚洲中文字幕无码| 欧美性潮喷xxxxx免费视频看| 成人免费视频在线观看播放| 亚洲国产在一区二区三区| 国产精品视频一区不卡| 少妇愉情理伦片高潮日本 | 丁香婷婷色综合激情五月| 亚洲精品天堂一区二区| 亚洲夂夂婷婷色拍ww47| 欧美日韩中文国产一区| 久久天堂无码av网站| 高中女无套中出17p| 我要看亚洲黄色太黄一级黄| 亚洲最大成人网色| 亚洲a人片在线观看网址| аⅴ天堂国产最新版在线中文| 国产精品入口麻豆| 国产一区二区精品偷系列| 亚洲国产精品自产在线播放| 日本一区二区三区专线|