k8s的配置资源管理

这篇具有很好参考价值的文章主要介绍了k8s的配置资源管理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Secret

Secret用来保存密码、token密钥以及一些敏感的k8s资源。这类数据虽然可以存放在镜像当中,但是放在secret当中可以更方便控制。减少暴露的风险。

Secret的作用:保存加密的信息

Secret的类型

docker-registry()主要用于存储docker仓库的认证信息,以及docker组件认证信息。(私有)

generic(jienairuike)是Secret的默认模式。类型是Qpaque。是base64加密编码的secret。用于用户自定义的密码、密钥等等。

tls表示TLS/SSL,用于存储证书和密钥、存储https证书和密钥队

系统自建的:kubernetes.io/service-account-token来访问系统的apiserver。pod会默认使用kubernetes.io/service-account-token创建的secret和apiserver进行通信。自动挂载到pod的/run/serect/kubernetes.io/service-account

如何创建secret?

1、指定文件提取信息

陈述式的创建方式:

#创建命令
kubectl create secret generic mysecret --from-file=/opt/xiao.txt --from-file=/opt/xiaobu.txt

#查看有哪些secret文件
kubectl get secrets
NAME                                 TYPE                                  DATA   AGE
default-token-sgjrp                  kubernetes.io/service-account-token   3      18d
mysecret                             Opaque                                2      11s
nfs-client-provisioner-token-rlg96   kubernetes.io/service-account-token   3      20h

#查看指定secret的详细信息
kubectl describe secrets mysecret
Name:         mysecret
Namespace:    default
Labels:       <none>
Annotations:  <none>

Type:  Opaque

Data
====
xiao.txt:    4 bytes
xiaobu.txt:  4 bytes

#以base64的加密方式生成文件内部数据
echo xiaobu.txt | base64
echo xiao.txt | base64

陈述式需要指定资源创建

默认类型的加密方式:Opaque加密类型

声明式的创建方式:

apiVersion: v1
kind: Secret
metadata:
  name: mysecret1
type:
  Opaque
data:
  xiaobu: eGlhb2J1LnR4dAo=
  xiao: eGlhby50eHQK

data内保存的是加密的内容

pod如何来引用Secret?

1、 挂载方式。将secret挂载到pod当中的一个或者多个容器上的卷里面。

2、 把secret作为容器的环境变量

3、 docker-registry可以作为集群拉取镜像时使用。使用secret可以实现免密登录。

挂载的方式来实现

实验举例:

apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
  - name: nginx
    image: nginx:1.22
    volumeMounts:
    - name: secrets
      mountPath: "/etc/secret"
      readOnly: false
  volumes:
  - name: secrets
    secret:
      secretName: mysecret
#将创建好的mysecret加密内容和容器内的指定目录进行挂载

执行命令
kubectl apply -f sercet.yaml
进入容器
kubectl exec -it mypod bash
查看挂载目录
root@mypod:/# cd /etc/secret/
root@mypod:/etc/secret# ls
xiao.txt  xiaobu.txt
root@mypod:/etc/secret# cat xiao.txt
123
root@mypod:/etc/secret# cat xiaobu.txt 
456

保存内容是加密内容,容器内部可以解密直接引用。

把secret作为容器的环境变量

[root@master01 opt]# echo 小布 | base64
5bCP5biDCg==
[root@master01 opt]# echo 小凯 | base64
5bCP5YevCg==

创建secret

apiVersion: v1
kind: Secret
metadata:
  name: mysecret1
type:
  Opaque
data:
  xiaobu: 5bCP5biDCg==
  xiaokai: 5bCP5YevCg==


创建pod
apiVersion: v1
kind: Pod
metadata:
  name: mypod1
spec:
  containers:
  - name: nginx
    image: nginx:1.22
    env:
    - name: USER
      valueFrom:
        secretKeyRef:
          name:  mysecret1
          key: xiaobu
    - name: USER1
      valueFrom:
        secretKeyRef:
          name: mysecret1
          key: xiaokai
#我给nginx1.22这个容器里面传两个环境变量,这两个变量的值从secret来,分别是两条mysecret1的加密信息


进入容器查看
root@mypod1:/# env              
KUBERNETES_SERVICE_PORT_HTTPS=443
KUBERNETES_SERVICE_PORT=443
HOSTNAME=mypod1
PWD=/
PKG_RELEASE=1~bullseye
HOME=/root
KUBERNETES_PORT_443_TCP=tcp://10.96.0.1:443
USER1=小凯

NJS_VERSION=0.7.11
TERM=xterm
USER=小布

SHLVL=1
KUBERNETES_PORT_443_TCP_PROTO=tcp
KUBERNETES_PORT_443_TCP_ADDR=10.96.0.1
KUBERNETES_SERVICE_HOST=10.96.0.1
KUBERNETES_PORT=tcp://10.96.0.1:443
KUBERNETES_PORT_443_TCP_PORT=443
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
NGINX_VERSION=1.22.1
_=/usr/bin/env

docker-registry

kubectl create secret docker-registry myharbor --docker-server=20.0.0.73 --docker-username=admin --docker-password=123456



apiVersion: v1
kind: Pod
metadata:
  name: mypod2
spec:
  containers:
  - name: nginx1
    image: hub.test.com/library/nginx:v1
  imagePullSecrets:
  - name: myharbor
  nodeName: node02


kubectl get pod
NAME                              READY   STATUS    RESTARTS   AGE
mypod                             1/1     Running   0          83m
mypod1                            1/1     Running   0          73m
mypod2                            1/1     Running   0          39s
nfs-provisioner-cbbfd74c8-5tr7r   1/1     Running   0          22h
nginx1-68c5d494c9-9zwhd           1/1     Running   0          103m
nginx1-68c5d494c9-bbbds           1/1     Running   0          103m
nginx1-68c5d494c9-mg8ms           1/1     Running   0          103m

secret三种方式:

陈述式创建

声明式

引用方式:

挂载使用

设定环境变量

docker-registry

ConfigMap

保存的是不需要加密的信息。configmap是1.2引用的功能,应用程序会配置文件,命令参数。以及环境变量中读取信息。

通过configmap在创建容器时,给他注入我们需要的配置信息。既可以是单个的属性也可也是整个文件的配置文件。

陈述式

kubectl create configmap person --from-file=/opt/configmap/xiaobu.txt --from-file=/opt/configmap/xiaokai.txt


ubectl describe cm person 
Name:         person
Namespace:    default
Labels:       <none>
Annotations:  <none>

Data
====
xiaobu.txt:
----
xiaobu=....
xiaokai=gao

xiaokai.txt:
----
xiao=bu
xiao=kai

Events:  <none>

指定文件创建,可以是一个,也可以是多个。

kubectl create configmap person1 --from-literal=xiaobu=bu --from-literal=xiaokai=kai


[root@master01 opt]# kubectl get cm
NAME               DATA   AGE
kube-root-ca.crt   1      18d
person             2      2m28s
person1            2      6s

声明式

apiVersion: v1
kind: ConfigMap
metadata:
  name: person
data:
  xiaobu: bu
  xiaokai: kai
#configmap是键值对形式


kubectl describe cm person 
Name:         person
Namespace:    default
Labels:       <none>
Annotations:  <none>

Data
====
xiaobu:
----
bu
xiaokai:
----
kai
Events:  <none>

引用方式

apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
  - name: nginx
    image: nginx:1.22
    env:
      - name: USER1
        valueFrom:
          configMapKeyRef:
            name: person
            key: xiaobu
      - name: USER2
        valueFrom:
          configMapKeyRef:
            name: person
            key: xiaokai

kubectl get pod
NAME                              READY   STATUS    RESTARTS   AGE
mypod                             1/1     Running   0          6s
nfs-provisioner-cbbfd74c8-5tr7r   1/1     Running   0          22h


进入容器查看
root@mypod:/# env
KUBERNETES_SERVICE_PORT_HTTPS=443
KUBERNETES_SERVICE_PORT=443
HOSTNAME=mypod
PWD=/
PKG_RELEASE=1~bullseye
HOME=/root
KUBERNETES_PORT_443_TCP=tcp://10.96.0.1:443
USER1=bu
USER2=kai
NJS_VERSION=0.7.11
TERM=xterm
SHLVL=1
KUBERNETES_PORT_443_TCP_PROTO=tcp
KUBERNETES_PORT_443_TCP_ADDR=10.96.0.1
KUBERNETES_SERVICE_HOST=10.96.0.1
KUBERNETES_PORT=tcp://10.96.0.1:443
KUBERNETES_PORT_443_TCP_PORT=443
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
NGINX_VERSION=1.22.1
_=/usr/bin/env

挂载的方式

数据卷使用comfigmap

准备一个nginx.conf的配置文件
worker_processes  2;
events {
    worker_connections  1024;
}
http {
    default_type application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       8081;
        server_name  localhost;
        charset utf-8;
     location / {
         root   html;
         index  index.html index.htm;
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}
}



kubectl create configmap nginx-con --from-file=/opt/configmap/nginx.conf

创建yaml文件
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx1
  labels:
    app: nginx1
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx1
  template:
    metadata:
      labels:
        app: nginx1
    spec:
      containers:
      - name: nginx1
        image: nginx:1.22
        ports:
        - containerPort: 8081
        volumeMounts:
          - name: nginx-config
            mountPath: /etc/nginx/
          - name: nginx-mount
            mountPath: /usr/share/nginx/html
      volumes:
      - name: nginx-config
        configMap:
          name: nginx-con
      - name: nginx-mount
        hostPath:
          path: /opt/html
          type: DirectoryOrCreate


访问不了,出现404,可能是访问页面路径不对
修改访问路径之后
kubectl patch deployment nginx1 --patch '{"spec": {"template":{"metadata": {"annotations": {"version/config": "20240116"}}}}}'

curl 10.244.0.42:8081
123

热更新的特点:

1、 通过数据卷的形式将配置文件传给pod内的容器

2、 在pod运行的情况下对configmap的配置信息进行修改。直接生效反应到容器当中。

热更新pod不会重启。如果有pod有副本都会一并更改。

3、 configmap的热更新不会触发pod的滚动更新机制。

version/config触发滚动更新机制

kubectal patch deployment nginx1 --path '{"spec": {"template":{"metadata": {"annotations": {"version/config": "20240116"}}}}}'

通过命令触发pod滚动更新,将pod重新拉起,将修改过的configmap重新传递给pod内重新拉起的容器。

secret:主要作用是保存加密文件。使用的方式就是挂载方式。

configMap:把配置信息传递给容器。主要使用方式也是挂载。

configMap的热更新:热更新可以直接反应到容器的内部。也不会触发pod的更新机制。如果不是需要重启的配置。都可以直接生效。

可以通过version/config的方式来触发滚动更新机制

需要重启的,可以重启pod

更新:就是把配置信息重新传递到容器内。重启也是一样的。

在工作中configMap就是将配置信息传递给容器。通过键值对形式保存的非加密信息。

secret和configMap的区别

secret是加密的信息。

configMap是非加密信息。可以传递配置信息给容器文章来源地址https://www.toymoban.com/news/detail-797309.html

到了这里,关于k8s的配置资源管理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • k8s---配置资源管理

    目录 内容预知 secret资源配置 secert的几种模式 pod如何来引用secret 陈述式创建secret 声明式+base64编码配置secret 将secret用vlumes的方式挂载到pod中 传参的方式将环境变量导入pod 如何通过secret加密方式获取仓库密码 configmap的资源配置 陈述式创建configmap资源配置 声明式配置configma

    2024年01月21日
    浏览(54)
  • k8s- 配置资源管理

    配置资源管理 //Secret Secret 是用来保存密码、token、密钥等敏感数据的 k8s 资源,这类数据虽然也可以存放在 Pod 或者镜像中,但是放在 Secret 中是为了更方便的控制如何使用数据,并减少暴露的风险。 Secret 有四种类型:  ●kubernetes.io/service-account-token:由 Kubernetes 自动创建,

    2024年02月16日
    浏览(44)
  • k8s配置资源管理

    Secret Configmap Secret :保存密码,token,敏感的k8s资源 这类数据可以存放在镜像当中,但是防止secret当中可以更方便控制,减少暴露的风险 保存加密的信息 Docker-registry: 存储docker仓库认证信息,以及docker组件认证成功(私有) Generic: 是secret的默认模式,opaque base64加密编码的

    2024年01月21日
    浏览(46)
  • k8s的配置资源管理

    Secret用来保存密码、token密钥以及一些敏感的k8s资源。这类数据虽然可以存放在镜像当中,但是放在secret当中可以更方便控制。减少暴露的风险。 Secret的作用:保存加密的信息 docker-registry()主要用于存储docker仓库的认证信息,以及docker组件认证信息。(私有) generic(jienairuike)是

    2024年01月17日
    浏览(36)
  • 【云原生】k8s配置资源管理

    Secret 是用来保存密码、token、密钥等敏感数据的 k8s 资源,这类数据虽然也可以存放在 Pod 或者镜像中,但是放在 Secret 中是为了更方便的控制如何使用数据,并减少暴露的风险 Secret 有三种类型:  ● kubernetes.io/service-account-token :由 Kubernetes 自动创建,用来访问 APIServer 的

    2024年02月13日
    浏览(48)
  • [云原生] k8s配置资源管理

    1.1 Secret配置的相关说明  Secret 是用来保存密码、token、密钥等敏感数据的 k8s 资源,这类数据虽然也可以存放在 Pod 或者镜像中,但是放在 Secret 中是为了更方便的控制如何使用数据,并减少暴露的风险。 Secret 有三种类型:  ●kubernetes.io/service-account-token:由 Kubernetes 自动创

    2024年03月13日
    浏览(49)
  • K8S:配置资源管理 Secret和configMap

    (1)Secret 是用来保存密码、token、密钥等敏感数据的 k8s 资源,这类数据虽然也可以存放在 Pod 或者镜像中,但是放在 secret 中是为了更方便的控制如何使用数据,并减少暴露的风险 (2)类似挂载的方式,使用的时候调用即可 ①kubernetes.io/service-account-token 由Kubernetes自动创建

    2024年02月03日
    浏览(54)
  • Kubernetes(K8s)与虚拟GPU(vGPU):实现高效管理和利用GPU资源的最佳实践

    目录 第一节:Kubernetes简介 第二节:虚拟GPU(vGPU)简介 第三节:Kubernetes中的GPU资源管理 第四节:虚拟GPU(vGPU)的部署和配置 第五节:GPU资源调度和负载均衡 第六节:GPU资源监控和调优 结论: 可先阅读一下参考: kubernetes如何将异构GPU(如NVIDIA、海光、寒武纪)统一协同

    2024年04月13日
    浏览(44)
  • K8S资源管理之计算资源管理

            以CPU为例,下图显示了未设置Limits与设置了Requests和Limits的CPU使用率的区别        尽管Requests和Limits只能被设置到容器上,但是设置了Pod级别的Requests和Limits能大大提高管理Pod的便利性和灵活性,因此在Kubernetes中提供了对Pod级别的Requests和Limits的配置。对于CP

    2024年04月15日
    浏览(52)
  • k8s 资源管理方式

    k8s中资源管理方式可以划分为下面的几种:命令式对象管理、命令式对象配置、声明式对象配置。 命令式对象管理 命令式对象管理:直接使用命令的方式来操作k8s资源, 这种方式操作简单,但是无法审计和追踪。 命令式对象配置 通过命令和配置文件来操作k8s资源,这种方式

    2024年02月07日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包