K8s-应用管理(环境变量,Job)

容器传参

构建一个测试镜像

FROM ubuntu
CMD ["sleep""5"]

运行这个容器发现睡眠了5秒以后退出,如果我们希望自己指定可以直接在docker后面加命令覆盖,写法如下

docker run sleeper sleep 10

上面的过程显得有些不合理,我们希望只传入参数,所以ENTRYPOINT出现了

FROM ubuntu
ENTRYPOINT ["sleep"]
#如果没有传参就会拼接这个到后面 如果传入了参数就会拼接我们传入的参数
CMD ["5"]
docker run sleeper #休眠5秒
docker run sleeper 10 #休眠10秒 覆盖 CMD ["5"] 并拼接在后面 也就是最后执行的是 sleep 10

Pod 传参

apiVersion: v1
kind: Pod
metadata:name: sleeper
spec:containers:- name: sleeperimage: s09g/sleepercommand: ["sleep"]args: ["10"]

pod文件使用command字段覆盖了入口点ENTRYPOINT指令,args字段覆盖了docker文件中的命令CMD指令。
不是command字段覆盖了docker文件中的cmd指令
生产环境中我们是不这样使用的,我们往往使用环境变量进行传参

环境变量

1 通过定义Env

apiVersion: v1
kind: Pod
metadata:name: ngix-demolabels:type: nginxservice
spec:containers:- name: ginxserviceimage: nginxenv:- name: DEMO_GREETINGvalue: "Hello from the environment"- name: DEMO_FAREWELLvalue: "Such a sweet sorrow"

当有Pod文件时,管理存储在文件中的环境数据会很复杂。除了使用plain text键值对格式指定环境变量的直接方法,还有使用ConfigMap和Secrets等方法来管理环境变量更加的方便。
2 使用ConfigMap
1)使用命令的方式
g给这个pod创建一个configmap 并且指定了两个键值

kubectl create configmap web-config --from-literal=UI_COLOR=red --from-literal=APP_MODE=prod

2)使用yml

  • 创建configMap
apiVersion: v1
kind: ConfigMap
metadata:name: web-config
data:UI_COLOR: redAPP_MODE: prod
#查看configMap
kubectl create -f config-map.yamlkubectl get configmapskubectl describe configmaps
  • 配置pod
apiVersion: v1
kind: Pod
metadata:name: sample-webapp
labels:name: sample-webapp
spec:containers:- name: sample-webappimage: sample-webappports:- containerPort: 8080envFrom: #可以传入多个 每一个对应一个configMap- configMapRef:name: web-config

上面这个yml是整体配置,也可以指定单个值

apiVersion: v1
kind: Pod
metadata:name: sample-webapp
labels:name: sample-webapp
spec:containers:- name: sample-webappimage: sample-webappports:- containerPort: 8080env:- name: UI_COLORvalueFrom:configMapKeyRef:name: web-configkey: UI_COLOR

还可以通过数据卷的方式进行注入

apiVersion: v1
kind: Pod
metadata:name: sample-webapp
labels:name: sample-webapp
spec:volumes:- name: web-config-volumeconfigMap:name: web-configcontainers:- name: sample-webappimage: sample-webappports:- containerPort: 8080envFrom:- configMapRef:name: web-config

Secrets

ConfigMap以纯文本格式存储配置数据。如果需要通过用户名和密码连接数据库,虽然可以将主机名和用户名移到ConfigMap中,但ConfigMap不是存储密码的正确位置。和configMap的用法一样
1 命令的方式

kubectl create secret generic web-secret --from-literal=DB_User=root --from-literal=DB_Password=passwd #可以使用名文 命令行会自动编码

这里也可以使用--from-file指定文件路径文件路径存储用户名和密码

kubectl create secret generic db-user-pass \--from-file=username=./username.txt \--from-file=password=./password.txt

2 使用yml

apiVersion: v1
kind: Secret
metadata:name: webapp-secret
data:DB_User: cm9vdA==DB_Password: cGFzc3dk
#获取编码
echo -n "passwd" | base64 #可以得到编码以后的值
#创建secret
kubectl create –f secret-data.yaml
#获取secret
kubectl get secrets
kubectl describe secrets
#可以查看虽然是base64编码的但是也相当于是名文
kubectl get secret webapp-secret –o yaml
#我们可以进行解码 所以我们要注意不能向外透露这个 yaml文件
echo –n ‘cm9vdA==| base64 --decode

整个引入

apiVersion: v1
kind: Pod
metadata:name: sample-webapp
labels:name: sample-webapp
spec:containers:- name: sample-webappimage: sample-webappports:- containerPort: 8080envFrom:- secretRef:name: webapp-secret

也可以单独引用

env:
- name: DB_PasswordvalueFrom:secretKeyRef:name: webapp-secretkey: DB_Password

同样支持数据卷

volumes:
- name: webapp-secret-volumesecret:secretName: webapp-secret

注意这个时候webapp-secret-volumes是两个文件,比如创建下面来两个文件

echo "my_psql_user" >> psql_user.txt
#创建一个用户
docker secret create psql_user psql_user.txt
#查看现在有的密匙
docker secret ls
#创建一个密码的密匙 这是另一种方式
echo "myDBpassWORD" | docker secret create psql_pass - #- 表示从终端输入的

Job

Job是为了解决如批处理、生成报告和发送电子邮件, 执行特定任务,然后完成。这些工作负载的生存期很短,执行一组任务, 然后退出。这样短时间运行任务,一般作为离线业务。离线业务的特点是必定会退出,不会无期限地运行下去,所以它的调度策略与在线业务存在很大的不同,需要考虑运行超时、状态检查、失败重试、获取计算结果等管理事项。
基础指令

#获取所有的job
kubectl get jobs
#查看JOB
kubectl get job error-job 
#查看日志
kubectl logs expr-job-kblhb 
#删除Job
kubectl delete job expr-job

1 离线任务,运行完直接退出

apiVersion: v1
kind: Pod
metadata:name: expr
spec:restartPolicy: Never #注意这个需要指定否则k8s会不停的拉起这个容器containers:- name: exprimage: ubuntucommand: ['expr', '3', '+', '2'] 

Kubernetes希望应用程序永远存在。pod的默认行为是尝试重新启动容器以使其保持运行。 Pod上有个重新启动策略restartPolicy,默认情况下设置为Always。所以pod总是退出后重新创建。这就是restartPolicy: Never的原因。 我们可以将这个属性设定为Never或OnFailure,来覆写这个行为。这样, Kubernetes在Job完成后不会重新启动容器。
2 定时任务

apiVersion: batch/v1
kind: CronJob
metadata:name: hello
spec:schedule: '*/1 * * * *'jobTemplate: #指定Job模板spec:template: #指定Jobpod模板spec:restartPolicy: Nevercontainers:- image: busyboxname: hellocommand: ["/bin/echo"]args: ["hello", "world"]
#查看任务
kubectl get cj

3 批处理

apiVersion: batch/v1
kind: Job
metadata:name: error-job
spec:completions: 3 #在这里指定下面几个比较重要的参数parallelism: 3template:spec:    restartPolicy: Nevercontainers:- image: s09g/random-errorname: error-job
  • activeDeadlineSeconds,设置 Pod 运行的超时时间
  • backoffLimit,设置 Pod 的失败重试次数
  • completions,Job 完成需要运行多少个 Success Pod,默认是 1 个
  • parallelism,与 completions 相关,表示允许并发运行的 Pod 数量,避免过多占用资源,不指定就是一个一个启动。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/645452.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis面试

1.说说什么事redis Redis是一种基于键值对的NoSql数据库。 Redis中的value支持string(字符串)、hahs(哈希)、list、set、zset(有序集合)、bitmaps(位图),HyperLoglog等数…

ACwing算法基础入门代码合集

ACwing算法基础入门代码合集 快速排序 786.第k个数 //第k个数 //算法思想&#xff1a;基于快速排序&#xff08;分治&#xff09; #include<iostream> using namespace std; #define N 100010 int Partition(int a[], int low, int high); int quicksort(int a[], int…

Java基础数据结构之排序

一.排序 1.什么是稳定性 假定在待排序的记录序列中&#xff0c;存在多个具有相同的关键字的记录&#xff0c;若经过排序&#xff0c;这些记录的相对次序保持 不变&#xff0c;即在原序列中&#xff0c; r[i]r[j] &#xff0c;且 r[i] 在 r[j] 之前&#xff0c;而在排序后的序…

php 文件上传

目录 1 php.ini 配置文件的修改 2.系统返回码详解 错误级别 4.上传简单示例 5.php代码简单优化 1 php.ini 配置文件的修改 配置项说明file_uploads on 为 开启文件上传功能&#xff0c; off 为关闭 post_max_size 系统允许的 POST 传参的最大值 &#xff0c;默认 8M upl…

【JSON2WEB】03 go的模板包html/template的使用

Go text/template 是 Go 语言标准库中的一个模板引擎&#xff0c;用于生成文本输出。它使用类似于 HTML 的模板语言&#xff0c;可以将数据和模板结合起来&#xff0c;生成最终的文本输出。 Go html/template包实现了数据驱动的模板&#xff0c;用于生成可防止代码注入的安全的…

电信宽带配置动态域名和端口映射

需求: 家宽映射动态域名访问内网服务 动态域名:18081>电信光猫:18081>Openwrt软路由:18081>主机192.168.3.172:8081 目前网络结构&#xff1a; 电信光猫192.168.1.1 Openwrt软路由192.168.3.1 主机192.168.3.172上8081端口起了一个nginx-docker服务 前置条件&#x…

【JavaWeb】MVC架构模式

文章目录 MVC是什么&#xff1f;一、M &#xff1a;Model 模型层二、V&#xff1a;View 视图层三、C&#xff1a;Controller 控制层四、非前后端分离MVC五、前后端分离MVC总结 MVC是什么&#xff1f; MVC&#xff08;Model View Controller&#xff09;是软件工程中的一种**软件…

【supervisor】unix:///tmp/supervisor.sock no such file

问题 supervisor在正常安装完时运行正常&#xff0c;但隔一段时间后出现了故障&#xff0c;重启后报&#xff1a; unix:///tmp/supervisor.sock no such file 原因是 supervisor 默认配置会把 socket 文件和 pid 守护进程生成在Linux的/tmp/目录下&#xff0c;/tmp/目录是缓存…

网页首页案例(使用框架:继上一篇博客结尾)

文章目录 新认识的快捷键1.先写好组件并导入App.vue2.往组件中一个一个填内容3.整体静态完成后&#xff0c;发现某些小部分相同&#xff0c;其实可以分装成小组件4.最后通过js动态渲染 新认识的快捷键 1.Ctrl滚轮按住往下拖可以部分选中 .用同样的方法选中下面的111&#xff0…

Redis学习指南(32)-Redis的性能瓶颈分析

Redis是一种高性能的键值存储数据库&#xff0c;它基于内存进行数据操作&#xff0c;因此具有非常快速的读写性能。然而&#xff0c;在实际使用中&#xff0c;Redis也会遇到一些性能瓶颈。本文将探讨几个可能导致Redis性能瓶颈的因素&#xff0c;并提供一些优化建议。 内存使用…

Java实现计算指定文件的SHA256

SHA-256 SHA-256&#xff08;Secure Hash Algorithm 256-bit&#xff09;是一种密码学安全哈希算法&#xff0c;用于将任意长度的数据转换为固定长度的哈希值&#xff0c;通常为256位&#xff08;32字节&#xff09;。SHA-256是SHA-2&#xff08;Secure Hash Algorithm 2&…

Spring Security 之 基本认证

基本认证 这部分提供了关于Spring Security如何为基于Servlet的应用程序提供基本HTTP认证支持的详细信息。 这部分描述了Spring Security中HTTP基本认证的工作原理。首先,我们看到WWW-Authenticate标头被发送回未经身份验证的客户端: 首先,用户对未经授权的资源 /private …

助力工业生产质检,基于YOLOv7【tiny/l/x】不同系列参数模型开发构建生产制造场景下布匹瑕疵缺陷检测识别分析系统

纯粹的工业制造没有办法有长久的发展过程&#xff0c;转制造为全流程全场景的生产智造才是未来最具竞争力的生产场景&#xff0c;在前面的开发实践中我们已经涉足工业生产场景下进行了很多实地的项目开发&#xff0c;如&#xff1a;PCB电路板缺陷检测、焊接缺陷检测、螺母螺钉缺…

利用tpu-mlir工具将深度学习算法模型转成算能科技平台.bmodel模型的方法步骤

目录 1 TPU-MLIR简介 2 开发环境搭建 2.1 下载镜像 2.2 下载SDK 2.3 创建容器 2.4 加载tpu-mlir 3 准备工作目录 4 onnx转mlir文件 5 mlir转INT8 模型 5.1 生成校准表 5.2 便以为INT8对称量化模型 参考文献&#xff1a; 之前是用nntc转算能科技的模型的&#xff0c…

YOLO 自己训练一个模型

一、准备数据集 我的版本是yolov8 8.11 这个目录结构很重要 ultralytics-main | datasets|coco|train|val 二、训练 编写yaml 文件 # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..] path…

dos 下查看磁盘信息

dos 下查看磁盘信息 1. win r 打开运行 输入 cmd 2. dos 命令行输入 diskpart C:\Users>diskpart 3. 会弹窗打开DiskPart 软件&#xff0c;输入 list volume Copyright (C) Microsoft Corporation. 在计算机上: DISKPART> list volume卷 ### LTR 标签 …

【每日一题】3.LeetCode——相交链表

&#x1f4da;博客主页&#xff1a;爱敲代码的小杨. ✨专栏&#xff1a;《Java SE语法》 ❤️感谢大家点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;&#xff0c;您的三连就是我持续更新的动力❤️ &#x1f64f;小杨水平有限&#xff0c;欢迎各位大佬指点&…

向日葵远程控制Mac版权限设置教程解决远程无法控制问题

很多Mac新手安装向日葵远程控制Mac版后&#xff0c;根据提示设置了权限后发现无法远程控制&#xff0c;其实主要是你只勾选了中文的“向日葵权限选项“&#xff0c;而忘记了勾选了向日葵另外一个英文选项权限。 判断是否完全开启控制权限 打开向日葵访问权限设置面板&#xf…

VsCode CMake调试QT QString等变量不显示具体值,调试中查看qt源码 (可视化调试配置Natvis)

遇到的问题 当我们在VsCode使用CMake来调试QT程序时&#xff0c;可能会出现变量是十六进制的地址&#xff0c;而看不到具体的值。例如&#xff1a; 如何解决 这时候需要手动设置一下natvis &#xff08;资源以上传&#xff0c;可以直接下载&#xff09; 在.vscode文件下找到…

Android-System fastboot 介绍和使用

一、fastboot简介 在android手机中&#xff0c;fastboot是一种比recovery更底层的刷机模式。 实际操作中&#xff1a;fastboot是一种线刷&#xff0c;就是使用USB连接手机的一种刷机模式。相对于某些系统来说&#xff0c;线刷比卡刷更可靠&#xff0c;安全。recovery是一种卡刷…