最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

K8S  Config應(yīng)用配置小結(jié)

 更新時(shí)間:2025年03月10日 09:24:49   作者:野生的狒狒  
本文主要介紹了Kubernetes中ConfigMap和Secret的使用方法,以及如何在Pod和容器中進(jìn)行資源配置,文中詳細(xì)講解了如何創(chuàng)建和使用ConfigMap來(lái)管理非機(jī)密性配置,以及如何使用Secret來(lái)存儲(chǔ)敏感信息,同時(shí),還介紹了如何在Pod中配置資源請(qǐng)求和限制,感興趣的朋友一起看看吧

一、背景

在自動(dòng)化流程中,對(duì)于一個(gè)應(yīng)用來(lái)說(shuō),從開發(fā)階段的配置管理,到制作容器鏡像,再到最后通過(guò)K8S集群發(fā)布為服務(wù),整個(gè)過(guò)程涉及到的配置非常多;

應(yīng)用環(huán)境:通常是指代碼層面的依賴配置,以常用的Nacos來(lái)說(shuō),通常會(huì)涉及框架、組件、自定義等幾個(gè)層面的配置管理;

運(yùn)行環(huán)境:以微服務(wù)架構(gòu)來(lái)說(shuō),實(shí)際環(huán)境中需要管理多個(gè)應(yīng)用的服務(wù)發(fā)布,在整個(gè)過(guò)程中必然會(huì)存在很多配置的管理,比如應(yīng)用的資源分配、不同環(huán)境交互時(shí)的身份認(rèn)證、敏感信息的安全管理等;

不論是應(yīng)用還是運(yùn)行層面的配置,都會(huì)涉及到一個(gè)基本的邏輯:配置可以抽取出來(lái)單獨(dú)管理,在流程中直接引入該配置即可;

二、ConfigMap

ConfigMap用來(lái)將非機(jī)密性的數(shù)據(jù)保存到鍵值對(duì)中,Pod可以將其用作環(huán)境變量、命令行參數(shù)或者存儲(chǔ)卷中的配置文件,會(huì)將環(huán)境配置信息和容器鏡像解耦,便于應(yīng)用配置的修改;

1、創(chuàng)建

ConfigMap中data字段用來(lái)保存UTF-8字符串,binaryData用來(lái)保存二進(jìn)制數(shù)據(jù)作為base64編碼的字串;

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

創(chuàng)建【ConfigMap】

kubectl apply -f app-config-map.yaml

查看【ConfigMap】

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

K8S界面查看【ConfigMap】

2、使用

用法一:使用「app-config-map」中的值來(lái)配置【Pod】,在env中定義多個(gè)環(huán)境變量,但是值從ConfigMap中讀?。?/p>

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

創(chuàng)建【Pod】

kubectl create -f auto-client-one.yaml

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

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

查看環(huán)境變量

# 1、執(zhí)行該命令
kubectl exec -it auto-client-one -- bash
# 2、輸入命令:env
env
# 3、打印的環(huán)境變量,只留下【app-config-map】配置的參數(shù)
DATA_ACTIVE=test
DATA_PROGRAM=world
DATA_STARTED=hello
# 4、查看【DATA_STARTED】的變量值
echo $DATA_STARTED

在【auto-client:1.1.3】容器鏡像中,添加了一個(gè)輸出環(huán)境變量的定時(shí)任務(wù),通過(guò)查看運(yùn)行日志,可以看到相關(guān)配置會(huì)被代碼正確讀??;

@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】日志輸出

注意事項(xiàng)

  • ConfigMap在設(shè)計(jì)上不是用來(lái)保存大量數(shù)據(jù)的,因此保存的數(shù)據(jù)不可超過(guò)1MiB
  • ConfigMap并不提供保密或者加密功能,如果存儲(chǔ)的數(shù)據(jù)是機(jī)密的,可以使用Secret對(duì)象,或者使用其它方式確保數(shù)據(jù)的私密性;
  • ConfigMap中可以通過(guò)將immutable字段設(shè)置為true創(chuàng)建不可變更的配置,如果要修改只能刪除后重建;

三、Secret

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

1、創(chuàng)建

將【auto-client:1.1.3】鏡像推送到云端的docker私有倉(cāng)庫(kù)里,并且刪除本地相關(guān)鏡像,測(cè)試下面的流程;

這里以最常見的鏡像拉取場(chǎng)景來(lái)說(shuō),通常容器鏡像文件是放在私有的云端倉(cāng)庫(kù),K8S在訪問(wèn)時(shí)需要提供身份證明,可以通過(guò)Secret配置來(lái)處理該場(chǎng)景;

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

2、使用

在上面配置了鏡像拉取的Secret對(duì)象,在Pod層面使用imagePullSecrets來(lái)引用該對(duì)象,當(dāng)從私有倉(cāng)庫(kù)拉取容器鏡像時(shí),節(jié)點(diǎn)上的kubelet能夠完成與鏡像倉(cāng)庫(kù)的身份認(rèn)證;

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: 【倉(cāng)庫(kù)地址】/auto-client:1.1.3
          imagePullPolicy: Always
          ports:
            - containerPort: 8079

注意事項(xiàng)

  • 默認(rèn)情況下Secret未加密地存儲(chǔ)在etcd中,任何擁有權(quán)限的用戶都可以檢索或修改Secret信息;
  • 每個(gè)Secret的大小最多為1MiB,施加這一限制是為了避免用戶創(chuàng)建非常大的Secret,進(jìn)而導(dǎo)致API服務(wù)器和kubelet內(nèi)存耗盡;

四、Pod與容器

在定義Pod時(shí)可以選擇性地為每個(gè)容器設(shè)定所需要的資源數(shù)量,最常見的可設(shè)定資源是CPU和內(nèi)存大小,或者其他類型的資源,這樣有利于調(diào)度器給Pod選擇合適的節(jié)點(diǎn);

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"

注意事項(xiàng)

  • CPU和內(nèi)存統(tǒng)稱為計(jì)算資源,計(jì)算資源的數(shù)量是可測(cè)量的,可以被請(qǐng)求、被分配、被消耗;
  • requests為容器指定資源需求,limits為容器設(shè)置資源限制;
  • 如果Pod運(yùn)行所在節(jié)點(diǎn)有足夠的可用資源,容器可以使用超出對(duì)應(yīng)資源request屬性所設(shè)置的資源量,但是不可以使用超出其資源limit屬性所設(shè)置的資源量;

五、參考源碼

文檔倉(cāng)庫(kù):
https://gitee.com/cicadasmile/butte-java-note
腳本倉(cāng)庫(kù):
https://gitee.com/cicadasmile/butte-auto-parent

到此這篇關(guān)于K8S Config應(yīng)用配置的文章就介紹到這了,更多相關(guān)K8S Config應(yīng)用配置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Kubernetes中的service使用及說(shuō)明

    Kubernetes中的service使用及說(shuō)明

    Kubernetes Service通過(guò)固定IP和端口實(shí)現(xiàn)Pod的負(fù)載均衡和服務(wù)發(fā)現(xiàn),解決動(dòng)態(tài)IP問(wèn)題,支持ClusterIP、NodePort、LoadBalancer等五種類型,適用于集群內(nèi)通信、對(duì)外暴露及訪問(wèn)外部服務(wù),結(jié)合Endpoints和負(fù)載均衡策略確保服務(wù)穩(wěn)定性
    2025-10-10
  • Kubernetes集群調(diào)度詳解(節(jié)點(diǎn)親和性、Pod親和性、Taint與Toleration)

    Kubernetes集群調(diào)度詳解(節(jié)點(diǎn)親和性、Pod親和性、Taint與Toleration)

    Kubernetes調(diào)度器負(fù)責(zé)將Pod分配到節(jié)點(diǎn),兼顧資源合理分配、調(diào)度效率及用戶策略,通過(guò)預(yù)選、優(yōu)選、選擇三階段決策,支持自定義調(diào)度器、節(jié)點(diǎn)親和性(軟硬策略)、Taint/Toleration機(jī)制及直接指定節(jié)點(diǎn),實(shí)現(xiàn)靈活調(diào)度與容錯(cuò)
    2025-09-09
  • k8s容器資源限制方式

    k8s容器資源限制方式

    K8s通過(guò)request和limit管理容器資源,內(nèi)存單位為字節(jié),CPU為核心數(shù),內(nèi)存超限會(huì)終止容器,CPU超限不影響,LimitRange設(shè)namespace資源上下限,ResourceQuota限制總資源配額及Pod數(shù)量,二者均在創(chuàng)建時(shí)生效,不影響已有資源
    2025-07-07
  • K8S容器OOM?killed排查過(guò)程

    K8S容器OOM?killed排查過(guò)程

    這篇文章主要介紹了K8S容器OOM?killed排查過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-07-07
  • k8s高可用集群安裝教程

    k8s高可用集群安裝教程

    本文給大家介紹k8s高可用集群安裝教程,本文通過(guò)圖文示例相結(jié)合給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧
    2025-03-03
  • Istio 自動(dòng)注入 sidecar 失敗導(dǎo)致無(wú)法訪問(wèn)webhook服務(wù)的解決方法

    Istio 自動(dòng)注入 sidecar 失敗導(dǎo)致無(wú)法訪問(wèn)webhook服務(wù)的解決方法

    最近工作中在部署Istio環(huán)境的過(guò)程中發(fā)現(xiàn)官方示例啟動(dòng)的pod不能訪問(wèn)不到Istio的webhook,這個(gè)問(wèn)題也是困擾了我一天,我把他歸類到sidecar注入失敗的情況下,本文給大家分享問(wèn)題解決方法,感興趣的朋友跟隨小編一起看看吧
    2023-10-10
  • kubernetes?k8s入門定義一個(gè)Pod

    kubernetes?k8s入門定義一個(gè)Pod

    這篇文章主要為大家介紹了k8s入門定義一個(gè)Pod以及破底的定義內(nèi)容詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多計(jì)步,早日升職加薪
    2022-03-03
  • K8S?Operator部署及自定義詳解

    K8S?Operator部署及自定義詳解

    這篇文章主要為大家介紹了K8S?Operator部署及自定義詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • 帶你學(xué)會(huì)k8s?更高級(jí)的對(duì)象Deployment

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

    這篇文章主要為大家介紹了k8s還有更高級(jí)的"對(duì)象"Deployment使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • 在K8s內(nèi)部實(shí)現(xiàn)安全的網(wǎng)絡(luò)隔離方式

    在K8s內(nèi)部實(shí)現(xiàn)安全的網(wǎng)絡(luò)隔離方式

    Kubernetes網(wǎng)絡(luò)策略通過(guò)定義Pod之間的流量規(guī)則,實(shí)現(xiàn)安全隔離和最小權(quán)限訪問(wèn),本文詳細(xì)介紹了網(wǎng)絡(luò)策略的基本概念、工作原理、配置方法及最佳實(shí)踐,幫助構(gòu)建更加安全的集群網(wǎng)絡(luò)環(huán)境
    2026-01-01

最新評(píng)論

门头沟区| 嵩明县| 资阳市| 安远县| 桑植县| 中方县| 临清市| 双峰县| 高阳县| 兴和县| 青铜峡市| 定州市| 江川县| 浦县| 天峨县| 临沭县| 特克斯县| 育儿| 奇台县| 崇州市| 珲春市| 沧州市| 潼南县| 张家港市| 浮山县| 湘潭县| 台南市| 榕江县| 行唐县| 白山市| 南召县| 彭山县| 无极县| 蒙自县| 台中市| 蒲江县| 建始县| 什邡市| 左云县| 霍林郭勒市| 河北省|