(k8s)探针、投射数据卷(Secret+ConfigMap)
kubectl get configmaps test-config4 -o yaml> hello.yml 去得到一份·yaml文件,然后可以修改。可以写到镜像,但是比较死,一旦容器down掉了就直接没了,因为容器是无状态的,不好管理,写到集群方便管理,先创建后使用。如果起不来,docker可以起来,k8s不行,可能是探针时间问题,还有可能是电脑配置。port可以写协议,但是要在前面定义端口和协
一、探针(容器在启动后中间做的事)给自己的
livenessProbe
命令模式探针
如果起不来,docker可以起来,k8s不行,可能是探针时间问题,还有可能是电脑配置
-
-
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里面指的是宿主机要被挂载的哪个目录
二、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
如果已经创建好了,但是还需要给这个文件做备份,我们可以使用命令
kubectl get configmaps test-config4 -o yaml > hello.yml 去得到一份·yaml文件,然后可以修改
使用configmap
使用ConfigMap的方式,一种是通过环境变量的方式,直接传递pod,另一种是使用volume的方式挂载入到pod内
一个一个挂载
通过卷挂载目录
要给这个文件做备份,我们可以使用命令
kubectl get configmaps test-config4 -o yaml > hello.yml 去得到一份·yaml文件,然后可以修改
使用configmap
使用ConfigMap的方式,一种是通过环境变量的方式,直接传递pod,另一种是使用volume的方式挂载入到pod内
一个一个挂载
[外链图片转存中…(img-0mbFGmIn-1718120936362)]
通过卷挂载目录
更多推荐
所有评论(0)