❤️不会写K8S资源编排yaml文件?一文教会你如何掌握编写yaml文件的技巧❤️
Posted Jiangxl~
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了❤️不会写K8S资源编排yaml文件?一文教会你如何掌握编写yaml文件的技巧❤️相关的知识,希望对你有一定的参考价值。
❤️不会写K8S资源编排yaml文件?一文教会你如何掌握编写yaml文件的技巧❤️
文章目录
本文分为两个章节:首先熟悉下K8S指令以及资源的类型、然后开始进入正文传授经验
K8S YAML推荐文章
Kubernetes集群使用yaml文件创建资源报错经验总结
一、熟悉下K8S常用命令参数以及资源管理
1.K8S集群常用命令
1.1.查询资源状态
kubectl get cs # 查看集群状态
kubectl get nodes # 查看集群节点信息
kubectl get ns # 查看集群命名空间
kubectl get svc -n kube-system # 查看指定命名空间的服务
kubectl get pod <pod-name> -o wide # 查看Pod详细信息
kubectl get pod <pod-name> -o yaml # 以yaml格式查看Pod详细信息
kubectl get pods,deploy,statefulset,sv,cm # 查看资源对象,查看所有Pod,deploy,statefulset,sv,cm列表
kubectl get rc,service # 查看资源对象,查看rc和service列表
kubectl get pod,svc,ep --show-labels # 查看pod,svc,ep能及标签信息
kubectl get all --all-namespaces # 查看所有的命名空间
1.2.查询资源的事件信息
语法格式:kubectl describe 资源类型 资源名称
kubectl describe deploy deploy_name
1.3.查看pod资源的日志内容
kubectl logs -f pod_name -n namespace
1.4.运行一个资源
kubectl run nginx-pod --image=nginx --port=80
1.5.编辑一个资源的yaml文件
语法格式:kubectl edit 资源类型 资源名称
kubectl edit deploy deploy_name
1.6.删除一个资源
语法格式:kubectl delete资源类型 资源名称
kubectl delete deploy deploy_name
2.kubectl高级命令参数
create #创建一个资源
edit #编辑一个资源
get #查看一个资源信息
patch #更新一个资源
delete #删除一个资源
explain #展示资源文档
create #创建一个资源
edit #编辑一个资源
get #查看一个资源信息
patch #更新一个资源
delete #删除一个资源
explain #展示资源文档
run #运行一个指定的镜像
expose #暴露资源为service
describe #查看资源的详细输出
logs #查看容器在pod中的日志
attach #进入运行的容器
exec #进入容器
cp #在pod内外复制文件
rollout #管理资源的发布
scale #扩容或收缩pod的数量
autoscale #自动跳转pod的数量
apply #更新资源配置
label #更新资源上的标签
cluster-info #显示集群信息
version #显示集群版本
3.k8s常用资源类型
集群级别资源
资源名称 | 缩写 | 资源作用 |
---|---|---|
nodes | no | 集群组成部分 |
namespace | ns | 隔离pod |
pod资源
资源名称 | 缩写 | 资源作用 |
---|---|---|
pod | po | 装在容器 |
pod资源控制器
资源名称 | 缩写 | 资源作用 |
---|---|---|
replicationcontrollers | rc | 控制pod资源 |
replicasets | rs | 控制pod资源 |
deployment | deploy | 控制pod资源 |
daemonsets | ds | 控制pod资源 |
jobs | 控制pod资源 | |
cronjobs | cj | 控制pod资源 |
horizontalpodautoscalers | hpa | 控制pod资源 |
statefulsets | sts | 控制pod资源 |
服务发现资源
资源名称 | 缩写 | 资源作用 |
---|---|---|
services | svc | 统一pod对外接口 |
ingress | ing | 统一pod对外接口 |
存储资源
资源名称 | 缩写 | 资源作用 |
---|---|---|
volumeattachments | 存储 | |
persistentvolumes | pv | 存储 |
persistentvolumeclaims | pvc | 存储 |
配置资源
资源名称 | 缩写 | 资源作用 |
---|---|---|
configmaps | cm | 配置 |
secrets | 配置 |
二、教你有技巧的编写K8S编排文件
1.快速生成一个deployment控制器的YAML文件
利用kubectl create创建一个资源加上–dry-run参数以及-o yaml参数生成YAML文件内容
这样的方式既不会创建一个资源,同时我们也拿到了一个基本的YAML文件,在这个YAML文件的基础上进行配置即可
# kubectl create deployment nginx --image=nginx:1.17 -o yaml --dry-run
W1013 17:02:29.974994 20517 helpers.go:553] --dry-run is deprecated and can be replaced with --dry-run=client.
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: nginx
name: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: nginx
spec:
containers:
- image: nginx:1.17
name: nginx
resources: {}
status: {}
2.虽然快速拿到了YAML文件,但是不会配置怎么办?
这就要用到kubectl explain
参数了,会起到超级大的作用
以Pod资源为例:查看Pod资源YAML可配置的参数列表
[root@k8s-master ~]# kubectl explain pod
KIND: Pod
VERSION: v1 //编写yaml文件时第一行的版本号可以从这里进行查找
FIELDS: //可配置的一级属性,基本所有资源都是如下五个,如果当前级别配置参数后面<>中是string就表示没有下一级配置参数,直接填写一个字符串即可,如果<>为object说明他还有下一级配置参数,可以通过资源类型.属性的方式查找
apiVersion <string> //当前资源支持的版本
kind <string> //控制器类型
metadata <Object> //元数据
spec <Object> //设置属性
status <Object> //记录pod的状态,包括ip地址、创建时间等等,是自动增加的,不是手动写入的
打印出Pod资源钩子函数的可执行参数列表
技巧就是按着下面的命令格式一级一级往里套就可以写出漂亮的yaml文件了
[root@binary-k8s-master1 ~]# kubectl explain pod.spec.containers.lifecycle.postStart
[root@binary-k8s-master1 ~]# kubectl explain pod.spec.containers.lifecycle.postStart.exec|httpGet|tcpSocket
KIND: Pod
VERSION: v1
RESOURCE: lifecycle <Object>
FIELDS:
postStart <Object> //定义容器启动后执行的钩子函数
exec <Object> //exec命令方式,在容器里面执行相应的命令
command <[]string> //指定运行的命令
httpGet <Object> //httpGet方式,探测容器应用的url
host <string> //主机地址,一般就是pod地址
path <string> //请求的url路径
port <string> //应用端口号
scheme <string> //协议
tcpSocket <Object> //tcpSocket方式,访问容器指定的socket
host <string> //pod地址
port <string> //端口号
preStop <Object> //定期容器关闭前执行的钩子函数
exec <Object> //exec命令方式,在容器里面执行相应的命令
·····
httpGet <Object> //httpGet方式,探测容器应用的url
·····
tcpSocket <Object> //tcpSocket方式,访问容器指定的socket
·····
以上是关于❤️不会写K8S资源编排yaml文件?一文教会你如何掌握编写yaml文件的技巧❤️的主要内容,如果未能解决你的问题,请参考以下文章
K8S中 yaml 文件详解(poddeploymentservice)
K8S中 yaml 文件详解(poddeploymentservice)