【K8S kubectl&yaml&pod&Deployment 02】
一、kubectl命令行工具
1、概述:kubectl是k8s集群的命令行工具
2、可以起别名:alias k = kubectl 后续可以直接用k来执行
3、语法:kubectl [command][type][name][flags]
command:指定要对资源执行的操作,例如:create,get,describe,delete
type:指定资源类型,资源类型是大小写铭感的,开发者能够以单数,复数和缩略的形式
name:执行资源的名称,名称也大小写敏感。比如查tomcat,可以写成:kubectl get pods tomcat,查所有的pod:k get pods
flags:指定可选的参数,例如:可用-s或者-server参数指定Kubernets API
4、kubectl help 获取更多信息
5、kubectl子命令使用分类
1)基础命令
2)部署和集群管理命令
3)故障和调试命令
4)其他命令
#创建一个nginx的pod kubectl create deployment nginx --image=nginx #对外暴漏端口 kubectl expose deployment nginx --port=80 --type=NodePort 查看pod或svc的基本信息 kubectl get pod,svc 查看当前的状态信息 kubectl get cs
为便于做练习,适当清理之前的资源是个好习惯,常用指令
-
kubens 查看当前所在的命名空间,防止误操作别人的资源
-
kubectl get all 查看已有部署
-
kubectl delete pods --all 删除全部的pod
6、常用kubectl命令
# 了解pod的细节
$ kubectl get pod kubia-manual -o yaml
# 查看pod和continer的日志
$ k logs kubia-manual
Kubia server starting...
# -c 可以指定查看具体名字的容器日志
$ k logs kubia-manual -c kubia
Kubia server starting...
# 根据yaml文件创建pod
$ kubectl create -f kubia-manual-with-labels.yaml
pod/kubia-manual-v2 created
# 停止和删除pod
# 指定具体pod名字
$ kubectl delete pod kubia-manual
# 指定标签,删除所有符合的
$ kubectl delete po -l creation_method=manual
# --all 所有的pod
$ kubectl delete po --all
# 删除命名空间的所有资源(几乎)
$ kubectl delete all --all
二、YAML文件
1、概念:
k8s 集群中对资源管理和资源对象编排部署都可以通过声明样式(YAML)文件来解决,也就是可以把需要对资源对象操作编辑到 YAML 格式文件中,
我们把这种文件叫做资源清单文件,通过 kubectl 命令直接使用资源清单文件就可以实现对大量的资源对象进行编排部署了。
2、语法格式
- 通过缩进表示层级关系
- 不能使用Tab进行缩进,只能使用空格
- 一般开头缩进两个空格
- 字符后缩进一个空格,比如:冒号,逗号后面是一个空格
- 使用---表示新的yaml文件开始
- 使用#表示注释
3、yaml文件组成部分
包含两大部分:控制器定义,被控制对象
4、快速编写yaml文件
1)第一种 使用kubectl create命令生成yaml文件 -->用这种方式可以直接生成一个yaml的模版,可以对其里面的数据修改即可,不需要手动一个一个的敲
kubectl create deployment web --image=nginx -o yaml --dry-run > my1.yaml
-o yaml :表示把 前面对nginx的操作已yaml的格式生成
--dry-run :并不会真正执行,只会试运行
> my1.yaml : 生成一个my1.yaml文件
生成的yaml文件内容:
$ cat my1.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: web
name: web
spec:
replicas: 1
selector:
matchLabels:
app: web
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: web
spec:
containers:
- image: nginx
name: nginx
resources: {}
status: {}
2)第二种 使用kubectl get命令导出yaml文件 --》适用部署好的项目,直接导出来
#查看部署好的项
kubectl get deploy
kubectl get deploy nginx -o=yaml --export > my2.yaml