虚拟化容器,大数据,DBA,中间件,监控。

️不会写K8S资源编排yaml文件?一文教会你如何掌握编写yaml文件的技巧️

16 11月
作者:admin|分类:容器虚拟化

️不会写K8S资源编排yaml文件?一文教会你如何掌握编写yaml文件的技巧️

文章目录

  • ️不会写K8S资源编排yaml文件?一文教会你如何掌握编写yaml文件的技巧️
    • 一、熟悉下K8S常用命令参数以及资源管理
      • 1.K8S集群常用命令
        • 1.1.查询资源状态
        • 1.2.查询资源的事件信息
        • 1.3.查看pod资源的日志内容
        • 1.4.运行一个资源
        • 1.5.编辑一个资源的yaml文件
        • 1.6.删除一个资源
      • 2.kubectl高级命令参数
      • 3.k8s常用资源类型
    • 二、教你有技巧的编写K8S编排文件
      • 1.快速生成一个deployment控制器的YAML文件
      • 2.虽然快速拿到了YAML文件,但是不会配置怎么办?

本文分为两个章节:首先熟悉下K8S指令以及资源的类型、然后开始进入正文传授经验

K8S YAML推荐文章

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
     ·····     
浏览388 评论0
返回
目录
返回
首页
k8s-v1.20安装metrics-server ⭐一文汇总Etcd数据库几种常见故障及排查思路⭐