k8s配置资源管理

k8s配置资源管理:

Secret

Configmap

Secret:保存密码,token,敏感的k8s资源

这类数据可以存放在镜像当中,但是防止secret当中可以更方便控制,减少暴露的风险

保存加密的信息

Secret的类型:

k8s配置资源管理_第1张图片

四种类型:

Docker-registry:存储docker仓库认证信息,以及docker组件认证成功(私有)

Generic:是secret的默认模式,opaque base64加密编码的secret用户自定义的密码,密钥等等

Tls: tls/SSL用于存储证书和私钥,https

系统自建的kubenetes.io/server-account-token用来访问系统的apiVersion,pod会使用kubenetes.io/server-account-token创建的secret和apiversion通信,自动挂载到pod的/run/secret/kubenetes.io/serveraccount

三种使用方式:

  1. 挂载的方式,secret挂载到pod当中一个或多个容器上的卷里面
  2. 把secret作为容器的环境变量
  3. Docker-register可以作为集群拉取镜像时使用,使用secret可以实现免密登录

演示挂载方式:

陈述式创建:

k8s配置资源管理_第2张图片

k8s配置资源管理_第3张图片

声明试创建:

k8s配置资源管理_第4张图片

k8s配置资源管理_第5张图片

k8s配置资源管理_第6张图片

k8s配置资源管理_第7张图片

Date里面保存的是加密的核心信息,到了容器内部可以直接引用,解密状态

k8s配置资源管理_第8张图片

k8s配置资源管理_第9张图片

再举一例:

加密

k8s配置资源管理_第10张图片

查看详情

k8s配置资源管理_第11张图片

k8s配置资源管理_第12张图片

k8s配置资源管理_第13张图片

k8s配置资源管理_第14张图片

陈述式演示:

将刚刚创建的pod

k8s配置资源管理_第15张图片

apiVersion: v1

kind: Pod

metadata:

  name: mypod

spec:

  containers:

  - name: nginx

    image: nginx:1.22

    volumeMounts:

    - name: secrets

      mountPath: "/etc/secrets"

      readOnly: false

  volumes:

  - name: secrets

    secret:

      secretName: mysecret2

去容器内验证:

k8s配置资源管理_第16张图片

演示把secret作为容器的环境变量

k8s配置资源管理_第17张图片

k8s配置资源管理_第18张图片

k8s配置资源管理_第19张图片

k8s配置资源管理_第20张图片

演示Docker-register可以作为集群拉取镜像时使用,使用secret可以实现免密登录

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

k8s配置资源管理_第21张图片

k8s配置资源管理_第22张图片

apiVersion: v1

kind: Pod

metadata:

  name: mypod2

spec:

  containers:

  - name: nginx1

    image: hub.test.com/library/nginx:v1

  imagePullSecrets:

  - name: myharbor

退出登录,方便演示

k8s配置资源管理_第23张图片

k8s配置资源管理_第24张图片

指定节点

apiVersion: v1

kind: Pod

metadata:

  name: mypod3

spec:

  containers:

  - name: nginx1

    image: hub.test.com/library/nginx:v1

  imagePullSecrets:

  - name: myharbor

  nodeName: master01          

k8s配置资源管理_第25张图片

k8s配置资源管理_第26张图片

k8s配置资源管理_第27张图片

总结secret的三种方式:

创建可以时陈述式创建和声明试创建

引用方式:

挂载使用

设定环境变量

Docker-register

ConfigMap:(重要)

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

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

创建方式:陈述式和声明式

k8s配置资源管理_第28张图片

kubectl create configmap game --from-file=/opt/configmap/wang.txt --from-file=/opt/configmap/zhao.txt

从指定文件创建,可以是一个文件,还可以是多个文件

使用字面值创建

k8s配置资源管理_第29张图片

信息不再是加密的

k8s配置资源管理_第30张图片

演示声明式:

k8s配置资源管理_第31张图片

k8s配置资源管理_第32张图片

k8s配置资源管理_第33张图片

创建已完成,如何使用;

k8s配置资源管理_第34张图片

apiVersion: v1

kind: Pod

metadata:

  name: mypod5

spec:

  containers:

  - name: nginx

    image: nginx:1.22

    env:

      - name: USER

        valueFrom:

          configKeyRef:

            name: game5

            key: wdf

      - name: UESR1

        valueFrom:

          configKeyRef:

            name: game5

            key: kb

k8s配置资源管理_第35张图片

k8s配置资源管理_第36张图片

数据卷使用configmap(必问)

1.我们通过数据卷的形式,把配置文件传给了pod内部容器

2.Configmap的热更新,热更新是不会重启的,在pod运行的情况下,对configmap的部署进行修改,直接生效(反应到容器当中)

3.Configmap的热更新不会触发pod的滚动更新机制(deployment)

4.Version/configmap来触发滚动更新

k8s配置资源管理_第37张图片

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.php;

        }

        error_page   500 502 503 504  /50x.html;

        location = /50x.html {

            root   html;

        }

}

}

k8s配置资源管理_第38张图片

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

k8s配置资源管理_第39张图片

k8s配置资源管理_第40张图片

1.我们通过数据卷的形式,把配置文件传给了pod内部容器

2.Configmap的热更新,热更新是不会重启的,在pod运行的情况下,对configmap的部署进行修改,直接生效(反应到容器当中)

3.Configmap的热更新不会触发pod的滚动更新机制(deployment)

4.Version/configmap来触发滚动更新

k8s配置资源管理_第41张图片

显示还是404,配置文件没有重启

k8s配置资源管理_第42张图片

kubectl patch deployments.apps nginx1 --patch '{"spec": {"template": {"metadata": {"annotations": {"version/config": "20240116"}}}}}'

k8s配置资源管理_第43张图片

总结:

Secret:主要保存加密文件,主要使用方式就是挂载方式

Configmap:把配置文件传送给容器,主要方式也是挂载方式

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

Version/configmap来触发滚动更新

kubectl patch deployments.apps nginx1 --patch '{"spec": {"template": {"metadata": {"annotations": {"version/config": "20240116"}}}}}'

需要重启时,可以重启pod

更新:就是把配置信息传送给容器内,重启也是一样

Configmap:就是把配置信息传送给容器,键值对形式保存的,非加密的信息

你可能感兴趣的:(docker,容器,运维)