论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com
»
论坛
›
容器及微服务
›
容器及微服务
›
K8S学习笔记-01
K8S学习笔记-01
海哥
金牌会员
|
2023-8-3 11:03:21
|
显示全部楼层
|
阅读模式
楼主
主题
999
|
帖子
999
|
积分
2997
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
原创文档编写不易,未经许可请勿转载。文档中有疑问的可以邮件联系我。 邮箱:yinwanit@163.com
说明
记录k8s中yaml文件编写相关内容。
k8s官网文档库:https://kubernetes.io/docs/home/
kubelet 命令参考:https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands
一、书写格式
k8s中yaml文件结尾需以.yml或.yaml结尾。文件放置位置不做限定。
yaml文件中每行都严格遵守层级,同层级资源缩进相同,每个层级间推荐使用两个空格进行缩进,不能使用tab键进行缩进。
yaml文件键值直接使用冒号作为分割线,冒号过后有且只有一个空格。
yaml文件采用驼峰的形式进行书写,冒号左边的第一个单词小写第二个单词开始首字母大写,冒号右边每个单词首字母大写。参考标红字体部分明显可以区分。
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: pod3
name: pod3
spec:
containers:
- image: busybox
imagePullPolicy: IfNotPresent
name: pod3
resources: {}
dnsPolicy: ClusterFirst
restartPolicy: Always
status: {}
复制代码
二、apiVersion版本与资源组
yaml文件首行为apiVersion及标注该yaml文件使用的版本。不同资源版本中资源使用方式和配置参数存在一定的差异。
apiVersion格式为:{Group}/{Version},Group代表Kubernetes API资源组的名称,Version代表该组的API版本号。
使用 kubectl api-versions 命令可以查看当前集群支撑的apiVersion信息。
不同apiVerson资源组中包含的kind资源不一样。确定了要使用的kind过后需要明确知道哪个一个apiVersion中包含该kind资源,在yaml中的apiVersion行键入对应的资源组及版本信息。
k8s apiversion分为四个类别:稳定版(Stable)、Beta版(Beta)、Alpha版(Alpha)和Deprecated版(Deprecated)。
Stable稳定版通常只有在主版本发布时才会更新,是被支持且兼容的版本。
Beta版可能包含一些已经被定义好但还未成为稳定版的功能,因此可能会在后续版本中被修改或删除。
Alpha版是一种开发中的版本类型,API架构和功能都还在开发和完善过程中,通常不建议在生产系统中使用。
Deprecated版是已经被废弃的版本,中止了维护和支持。
常见的均可在https://kubernetes.io/zh-cn/docs/reference/kubernetes-api/workload-resources/中查看
仅展示部分apiVersion中的资源组及版本对应的kind资源。
2.1 工作负载资源组:
v1:Pod、PodTemplate、ReplicationController、
apps/v1:ReplicaSet、Deployment、StatefulSet、ControllerRevision、DaemonSet
batch/v1:Job、CronJob
autoscaling/v1:HorizontalPodAutoscaler
autoscaling/v2:HorizontalPodAutoscaler
scheduling.k8s.io/v1:PriorityClass
resource.k8s.io/v1alpha2:PodSchedulingContext、ResourceClaim、ResourceClaimTemplate、ResourceClass
2.2 Service资源组:
v1:Service、Endpoints
discovery.k8s.io/v1:EndpointSlice
networking.k8s.io/v1:Ingress、IngressClass
2.3 配置和存储资源组:
v1:ConfigMap、Secret、Volume、PersistentVolumeClaim、PersistentVolume
storage.k8s.io/v1:StorageClass、VolumeAttachment、CSIDriver、CSINode、CSIStorageCapacity
2.4 身份认证资源组:
v1:ServiceAccount、
authentication.k8s.io/v1:TokenRequest、TokenReview
certificates.k8s.io/v1:CertificateSigningRequest
certificates.k8s.io/v1alpha1:ClusterTrustBundle
2.5 策略资源组:
v1:LimitRange、ResourceQuota
networking.k8s.io/v1:NetworkPolicy
policy/v1:PodDisruptionBudget
networking.k8s.io/v1alpha1:IPAddress
2.6 集群资源组:
v1:Node、Namespace、Binding、ComponentStatus
events.k8s.io/v1:Event
apiregistration.k8s.io/v1:APIService
coordination.k8s.io/v1:Lease
node.k8s.io/v1:RuntimeClass
flowcontrol.apiserver.k8s.io/v1beta3: FlowSchema、PriorityLevelConfiguration
networking.k8s.io/v1alpha1:ClusterCIDR
三、标准模板获取
k8s环境中为了方便管理员快速的完成资源yaml文件编写,尽快的上线应用。可以有三种方式获取到某一个kind资源的编写模板。
3.1 官网文档中获取
网址:https://kubernetes.io/zh-cn/docs/home/
在官方文档中找到对应的kind中复制出标准的yaml配置文件模板。
3.2 命令生成
参考kubectl工作使用说明:https://kubernetes.io/zh-cn/docs/reference/kubectl/kubectl/
导出一个POD的标准模板,其中--dry-run表示不创建,只是进行语句检查调试,client表示基本的格式、server表示完整的格式,一般情况下采用client生成的文件进行二次编写。
# kubectl run pod01 --image=busybox --image-pull-policy=IfNotPresent --dry-run=client -o yaml > pod01_c.yaml
# kubectl run pod01 --image=busybox --image-pull-policy=IfNotPresent --dry-run=server -o yaml > pod01_s.yaml
复制代码
Always:总是去网上拉取镜像
Never:不使用网上的镜像
IfNotPresent:优先使用本地镜像
--dry-run=server/client表示只模拟创建,用作检查语法是否错误。client输出比较简洁的文本,server表示输出比较详细的文本。
3.3 现有资源生成
利用现在已经存在的同kind类型资源导出模板
# kubectl get ds/calico-node -n kube-system -o yaml > ds01.yaml
复制代码
四、资源创建帮助
在明确了apiVersion和kind,同时有了模板文件过后就可以进行yaml文件的编写了。但对于新手来说或者一些不常用的kind,往往没法记住其使用方法,则可使用命令查看对应apiVersion下kind的配置帮助文件。
查看pod的配置参数。
# kubectl explain --api-version=v1 pod
复制代码
如果查看的资源还有下级配置则在可接着查看
# kubectl explain --api-version=v1 pod.metadata
复制代码
其中资源配置中有三种类型:string、Object、integer,同时表示为必填参数,[]表示为可选参数。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
海哥
金牌会员
这个人很懒什么都没写!
楼主热帖
makefile简单脚本编写和Linux调试器gdb ...
【第90题】JAVA高级技术-网络编程9(简 ...
CMOS图像传感器——黑电平校正 ...
什么是精准卫星授时?什么是NTP网络时 ...
TCP 时间戳妙用
Linux【实操篇】—— 日志管理 ...
windows提权-系统错误配置提权 ...
如何使用 FlowUs 、Notion 等笔记软件 ...
C++ 深度解析教程(十七)C 语言异常处 ...
「低功耗蓝牙模块」主从一体 蓝牙嗅探- ...
标签云
AI
运维
CIO
存储
服务器
浏览过的版块
移动端开发
程序人生
快速回复
返回顶部
返回列表