news 2026/2/5 12:21:50

容器编排 - K8s - 配置文件参数说明和基础命令

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
容器编排 - K8s - 配置文件参数说明和基础命令

文章目录

  • 1. 简单搭建一个K8s
    • 搭建k8s方式:
  • 2. k8s配置文件参数说明
  • 3. kubectl - 基本命令
  • 4. dashboard - k8s界面端工具
  • 总结

✨✨✨学习的道路很枯燥,希望我们能并肩走下来!

编程真是一件很奇妙的东西。你只是浅尝辄止,那么只会觉得枯燥乏味,像对待任务似的应付它。但你如果深入探索,就会发现其中的奇妙,了解许多所不知道的原理。知识的力量让你沉醉,甘愿深陷其中并发现宝藏。



本文只是简单了解一下k8s简单知识,详细的话可以查看官方文档等

本文开始:主要是了解一下搭建k8s, k8s文件具体配置参数说明,简单的kubectl命令;
测试人员简单了解一下,当遇到真正的分布式测试业务,可以进一步了解更多;

1. 简单搭建一个K8s

  1. kubeadm:是 k8s 集群的安装工具-官方
  2. kubectl:k8s 的命令行工具,后续都使用使用这个命令与 k8s 通信
  3. kubelet:可以理解为 k8s 在每个节点上启动的 agent,它负责维护当前节点的状态和节点上启动的所有容器的维护工作。 由于它不能够被容器化部署,所以必须手动下载。

搭建k8s方式:

https://www.kubernetes.org.cn/7189.html

【注】部署K8s,环境影响很大,会出现各种问题,实际遇到还需要具体解决,这里简单了解一下;

初始化操作:
初始化文件配置

kubeadminit\--image-repository registry.aliyuncs.com/google_containers\--kubernetes-version v1.13.3\--pod-network-cidr=10.244.0.0/16

初始化网络

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/D ocumentation/kube-flannel.yml

2. k8s配置文件参数说明

下述是一个完整的 Kubernetes(K8s)Deployment + Service 的 YAML 配置示例
看懂下述文件需要先了解:Pod, service, deployment,探针等基础

# =============== API 版本与资源类型 ===============apiVersion:apps/v1# 使用 apps/v1 API(Deployment 所属的 API 组)kind:Deployment# 资源类型:Deployment(用于管理 Pod 副本和滚动更新)# =============== 元数据(Metadata)===============metadata:name:my-app# Deployment 的名称(在命名空间内唯一)namespace:default# 所属命名空间(可省略,默认为 default)labels:# 标签(用于标识和选择资源)app:my-app# 自定义标签,通常用于关联 Service 和 Pod# =============== 期望状态(Spec)===============spec:replicas:3# 期望运行的 Pod 副本数(高可用/负载均衡)selector:# 标签选择器:用于匹配由该 Deployment 管理的 PodmatchLabels:app:my-app# 必须与 template.metadata.labels 中的标签一致# =============== Pod 模板 ===============template:# 定义 Pod 的模板(Deployment 会基于此创建 Pod)metadata:labels:app:my-app# Pod 的标签,必须与上面 selector.matchLabels 一致spec:# Pod 的规格containers:# 容器列表(一个 Pod 可包含多个容器,但通常一个主应用)-name:my-app-container# 容器名称(在同一 Pod 内唯一)image:nginx:1.25# 镜像地址(格式:[registry/][repo]/image:tag)imagePullPolicy:IfNotPresent# 镜像拉取策略:# Always(总是拉取)、# Never(从不拉取,仅本地)、# IfNotPresent(本地没有才拉取,默认)ports:# 容器暴露的端口(仅声明,不发布到宿主机)-containerPort:80# 容器内部监听的端口protocol:TCP# 协议(TCP/UDP,默认 TCP)env:# 指定环境变量(注入到容器中)-name:ENV# 变量名value:"production"# 变量值(明文)-name:DB_PASSWORDvalueFrom:# 从 Secret 获取敏感信息(推荐方式)secretKeyRef:name:db-secret# 引用的 Secret 名称key:password# Secret 中的键名resources:# 资源请求与限制(影响调度和 QoS)requests:# 请求的最小资源(调度依据)memory:"64Mi"# 内存(单位:Mi=MiB, Gi=GiB)cpu:"250m"# CPU(单位:m=毫核,1000m = 1 核)limits:# 允许使用的最大资源(超限可能被 OOM kill)memory:"128Mi"cpu:"500m"livenessProbe:# 存活探针:判断容器是否“活着”,失败则重启httpGet:path:/healthz# HTTP 探测路径port:80# 探测端口initialDelaySeconds:10# 启动后多少秒开始探测periodSeconds:15# 探测间隔(秒)readinessProbe:# 就绪探针:判断容器是否“准备好接收流量”httpGet:path:/readyport:80initialDelaySeconds:5periodSeconds:10volumeMounts:# 将卷挂载到容器内的路径-name:config-volume# 卷名称(需在 volumes 中定义)mountPath:/etc/nginx# 容器内挂载路径readOnly:true# 是否只读volumes:# 定义卷(Pod 级别,可被多个容器共享)-name:config-volume# 卷名称configMap:# 卷类型:ConfigMap(用于非敏感配置)name:nginx-config# 引用的 ConfigMap 名称restartPolicy:Always# 容器退出时的重启策略(Deployment 下只能是 Always)terminationGracePeriodSeconds:30# 优雅终止宽限期(秒),收到 SIGTERM 后等待时间---# =============== Service 资源(暴露应用)===============apiVersion:v1kind:Servicemetadata:name:my-app-service# Service 名称#namespace: defaultlabels:name:my-app-containerspec:type:NodePort# Service 类型:# ClusterIP(集群内访问,默认)、# NodePort(通过节点 IP:端口访问)、# LoadBalancer(云厂商 LB)、# ExternalName(DNS 映射)ports:-port:80# Service 监听的端口targetPort:80# 转发到 Pod 的 containerPort(容器端口号)nodePort:31200# 节点端口 protocol: TCPselector:# 选择哪些 Pod 提供服务(匹配 Pod 的 labels)app:my-app# 必须与 Pod 的 label 一致

3. kubectl - 基本命令

kubectl 类似 docker命令

K8S 中一切皆资源, 可以理解为在 K8S 中资源是用来描述容器的行为的,所有的资源都是在某个维度控制如何运行容器。
比如 :
pod 描述的是容器之间如何连接在一起,
config map 是用来将外部的配置文件挂载到容器中为应用程序提供配置管理的
Service 是用来接管容器网络的
Role,RoleBinding 和 Service account 是用来控制容器的角色和权限的。

kubectl命令模式:
kubectl [动作] [资源] [option]

kubectl[get/describe/delete][pod/deployment/svc]-n[命名空间]-o[yaml/json/wide]

option参数说明:
-o::用来对输出信息进行格式化
-n:指定命名空间
-l:指定只查询拥有对应的 label 的资源对象
–all-namespaces :操作整个集群所有名称空间下的资源
示例

# 查看所有podskubectl get pods# 查看某个命名空间下所有 Podkubectl get pods -n kube-system# 删除某个命名空间kubectl delete ns[命名空间名称]# 查看某个 Pod 的资源对象的详情kubectl describe pod[pod名称]# 删除在名称空间 test 中的一个名字叫 jenkins 的 podkubectl delete pod jenkins -ntest# 只查询拥有对应的 label 的资源对象kubectl get pods -lapp=nginx-web

不写命名空间,有默认default

# 查看节点kubectl get nodes# 列出集群中所有的命名空间,ns是namespace缩写kubectl get ns# 查看具体节点信息kubectl describe nodes[node名称]

查看pod日志

kubectl logs -f[pod名称]# 指定查看某个pod日志kubectl logs -f[pod名称]-c[容器名称]

进入容器内

kubuctlexec-it[pod名称]-c[容器名称]bash

创建资源-使用配置文件

# 根据某个配置文件,创建资源对象kubectl create -f[配置文件路径]kubectl create -f[xx.yaml]# 根据某个配置文件,更新资源对象/刷新配置文件 -推荐使用kubectl apply -f[配置文件路径]kubectl apply -f[xx.yaml]# 根据某个配置文件删除资源对象kubectl delete -f[配置文件路径]

一般一个pod启动在一个节点
污点意思:不会让pod调度该节点,其他pod不会在这个节点上部署;

删除污点
taint: 给某个 Node 增加或者删除污点。

kubectl taint nodes[节点名称]node-role.kubernetes.io/master:NoSchedule-

小结:
get: 查询某个资源列表
describe:查看某个资源对象的详情。
edit:实时编辑某个资源的配置文件

4. dashboard - k8s界面端工具

可以参考他人问题,不再重复造轮子;
【注】客户端工具不推荐,只有命令行能够获取需要的信息,这里只是了解一下;
安装客户端界面工具:
https://zhuanlan.zhihu.com/p/99148477


总结

✨✨✨各位读友,本篇分享到内容是否更好的帮助你理解,如果对你有帮助给个👍赞鼓励一下吧!!
🎉🎉🎉世上没有绝望的处境,只有对处境绝望的人。
🎉🎉🎉一遇挫折就灰心丧气的人,永远是个失败者。而一向努力奋斗,坚韧不拔的人会走向成功。
感谢每一位一起走到这的伙伴,我们可以一起交流进步!!!一起加油吧!!!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/5 12:15:30

VisionPro视觉检测软件之打包成安装包

VisionPro视觉检测软件之打包成安装包 WinForm之打包项目为安装包 https://www.zamzar.com/ 第一步:右击解决方案,建立新项目(setup) 第二步:右击Application Folder选择Add,之后选择选择项目输出 第三步&…

作者头像 李华
网站建设 2026/2/5 18:03:10

【AI大模型舆情分析】微博舆情分析可视化系统(pytorch2+基于BERT大模型训练微调+flask+pandas+echarts) 实战(上)

大家好,我是锋哥。最近发布一条【AI大模型舆情分析】微博舆情分析可视化系统(pytorch2基于BERT大模型训练微调flaskpandasecharts)高级实战。分上下节。 实战简介: 前面的2026版【NLP舆情分析】基于python微博舆情分析可视化系统(flaskpanda…

作者头像 李华
网站建设 2026/2/4 5:34:04

如何搜集图片?超实用功能必看!

🙋相册开启了多人上传,不知道图片是谁上传的,能否在上传前让上传人填个表单,好让管理员知道是谁上传的图片?👉支持的上传前表单填写:访客上传相册内容前,需要填写表单信息「可用于收…

作者头像 李华
网站建设 2026/2/4 17:31:26

安卓开发工程师核心能力体系深度解析与面试指南

华东计算技术研究所(中国电子科技集团公司第三十二研究所)安卓开发工程师 职位信息 岗位职责: 1.参与项目需求分析,进行APP相关的设计、开发、调试等; 2.按需求完成界面、逻辑功能、网络通信等设计; 3.配合其他开发人员、测试人员,完成产品设计和发布; 4.编写相关开发文…

作者头像 李华
网站建设 2026/2/3 3:18:54

自己平台接入国家网络身份认证公共服务接入

一、接入主体要求(谁能申请)必须是合法登记的企业 / 事业单位 / 政府机构,个人不能申请企业级接入。准入主体类型:企业法人(含国企、民企、外企)政府部门、事业单位金融机构、持牌支付机构、运营商互联网平…

作者头像 李华
网站建设 2026/2/5 8:52:27

花小钱取悦自己,才是最聪明的养生

别等花大钱看病才懂:花小钱取悦自己,是最划算的养生 目录 别等花大钱看病才懂:花小钱取悦自己,是最划算的养生一、先理清:观点的核心逻辑是什么?二、靠谱依据:情绪影响健康,有实打实…

作者头像 李华