一、探针(容器在启动后中间做的事)给自己的

livenessProbe

命令模式探针

如果起不来,docker可以起来,k8s不行,可能是探针时间问题,还有可能是电脑配置

      apiVersion: v1
      kind: Pod
      metadata:
      labels:
      name: centos
      spec:
      containers:
      • name: centos
        image: centos:7
        command:
        • tail
        • -f
        • /dev/null
          livenessProbe: #探针,健康检查
          exec: #类型
          command: #命令
          • cat
          • /root/anaconda-ks.cfg
            initialDelaySeconds: 5 #健康检查,在容器启动5s后开始执行
            periodSeconds: 5 #每5s执行一次
      
      重启,k8s就是删除重建
      
      

httpget方式探针

[root@kub-k8s-master prome]# vim liveness-httpget.yaml
---
apiVersion: v1
kind: Pod
metadata:
  name: nginx
  namespace: default
spec:
  containers:
    - name: nginx
      image: nginx:1.16.1
      imagePullPolicy: IfNotPresent
      ports:
        - name: http
          containerPort: 80
      livenessProbe:  #探针,健康检查
        httpGet:
          port: http
          path: /index.html
        initialDelaySeconds: 1
        periodSeconds: 3

port可以写协议,但是要在前面定义端口和协议之间的关系,后面就直接能用

二、投射数据卷 Projected Volume

在 k8s 中,有几种特殊的 Volume,它们的意义不是为了存放容器里的数据,"而是为容器提供预先定义好的数据。"
从容器的角度来看,这些 Volume 里的信息仿佛是被 k8s "投射"(Project)进入容器当中的。
k8s 支持的 Projected Volume 方式
Secret
ConfigMap
Downward API(了解)

一、Secret实现

可以写到镜像,但是比较死,一旦容器down掉了就直接没了,因为容器是无状态的,不好管理,写到集群方便管理,先创建后使用

创建secret的方式

1、通过命令行创建

echo -n 不换行符 base64会将换行变成其他

  创建一个secret.yaml文件,内容用base64编码:明文显示容易被别人发现,这里先转码。
  [root@kub-k8s-master1 ~]# echo -n 'admin' | base64
  YWRtaW4=
  [root@kub-k8s-master1 ~]# echo -n '1f2d1e2e67df' | base64
  MWYyZDFlMmU2N2Rm

手动base64解码方式:

[root@kub-k8s-master1 ~]# echo 'MWYyZDFlMmU2N2Rm' | base64 --decode

kubectl create secret generic nginx-secret --from-literal name=zhangsan

2、通过yml文件创建

可通过vscode写好模版,直接修改在添加到虚拟机运行

3、点点点(在可视化界面)
192.168.91.150:30080
两种创建secret的方式

1、通过命令行创建

    kubectl create secret generic nginx-name --from-literal=username=zhangsan
    											--from-file=./data.txt

--from-literal  *# 直接指定数据*

--from-file *# 从文件中获取键值对数据*



2、通过yml文件创建

apiVersion: v1

kind: Secret

metadata:

 name: mysql-secret

#类型是不透明的也就是秘钥
type: Opaque

data:

 password: aGVsbG93b3JsZC4=

 database: d29yZHByZXNz



*# 查看secret*

kubectl get secret_name -o yaml *# 如果要查看里面的值的数据,可以在shell中通过 echo 值 | base64 -d 解码*

使用secret

挂文件

volumeMounts指的是容器里面的文件目录路径

volumes里面指的是宿主机要被挂载的哪个目录

image-20240606212901538

二、ConfigMap详解

创建configmap

存储的是配置文件
创建ConfigMap的方式有4种:

命令行方式
方式1:通过直接在命令行中指定configmap参数创建,即--from-literal
方式2:通过指定文件创建,即将一个配置文件创建为一个ConfigMap,--from-file=<文件>
方式3:通过指定目录创建,即将一个目录下的所有配置文件创建为一个ConfigMap,--from-file=<目录>
配置文件方式
方式4:事先写好标准的configmap的yaml文件,然后kubectl create -f 创建
  • #### 注意:如果有子目录,就不会显示里面的内容并且子目录会被删除

和secret比较像,但是是明文的

创建configmap的方式

1、直接指定数据

kubectl create configmap test-configmap --from-literal=user=admin --from-literal=pass=1122334

2、指定文件

kubectl create configmap configmap-name --from-file=nginx.conf

3、指定目录

kubectl create configmap configmap_name --from-file=./config/ *# 注意,指定目录时,目录下不能有子目录。*

4、通过yaml创建

\---

apiVersion: v1

kind: ConfigMap

metadata:

 name: test-config4

 namespace: default

data:

 cache_host: memcached-gcxt

 cache_port: "11211"

 cache_prefix: gcxt

 my.cnf: |  *# 一旦遇到 | 代表,这个一个文件*

  [mysqld]

  log-bin = mysql-bin

  haha = hehe
  sadasdasdsadsadadasdadasdasasdasd
  dsadasdasdasdasdada
  asdadasdasdasdasdadasd

image-20240607003412510

如果已经创建好了,但是还需要给这个文件做备份,我们可以使用命令

kubectl get configmaps test-config4 -o yaml > hello.yml 去得到一份·yaml文件,然后可以修改

使用configmap

使用ConfigMap的方式,一种是通过环境变量的方式,直接传递pod,另一种是使用volume的方式挂载入到pod内

一个一个挂载

image-20240607003826771

通过卷挂载目录

要给这个文件做备份,我们可以使用命令

kubectl get configmaps test-config4 -o yaml > hello.yml 去得到一份·yaml文件,然后可以修改

使用configmap

使用ConfigMap的方式,一种是通过环境变量的方式,直接传递pod,另一种是使用volume的方式挂载入到pod内

一个一个挂载

[外链图片转存中…(img-0mbFGmIn-1718120936362)]

通过卷挂载目录

image-20240607004251401

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐