Kuberbetes学习记录(三):kubectl和YAML
1. 常用指令
1.1 创建一个java测试项目
kubectl create deployment java-web --image=lizhenliang/java-demo
apply和create的区别:
apply是资源的创建和更新,create只能用于资源创建,再更新yaml之后是不能用create的
所以直接用apply代替create就可以
1.2 暴露端口
这里暴露的端口是k8s内部访问的端口,外部访问端口需要在pod信息查看
实际上是创建了一个service资源
kubectl expose deployment java-web --port=80 --target-port=8080 --name=java-web-service --type=NodePort
查看暴露的端口信息,可以看到之前部署的那个java应用对外暴露在30850端口
1.3 模拟升级
如果应用上线之后需要升级,可以通过修改yaml的镜像源或者采用命令行的形式来修改
比如我们要把之前的java-web资源中的景象由java-demo更换为tomcat
kubectl set image deployment java-web java-demo=tomcat
查看pod的运行状况,可以看到在一个升级操作中,在新版本上线之前,旧版本不会停止运行
查看一个资源的历史版本信息
kubectl rollout history deployment/java-web
可以看到当前有两个版本
1.4 回滚
回滚到上一个版本
kubectl rollout undo deployment/java-web
回滚到指定版本
kubectl rollout undo deployment/java-web --to-revision=3
注意只能回滚到history能看到的历史版本,再往前是没办法回滚的
1.5 扩容
kubectl scale deployment java-web --replicas=10
1.6 删除
删除资源不能直接删除pod,要删除其控制器,同时也要删除其service
kubectl delete deployment/java-web kubectl delete service/java-web-service
1.7 指令文档
Kubernetes kubectl 命令表 _ Kubernetes(K8S)中文文档_Kubernetes中文社区
2. YAML文件
2.1 YAML文件格式
YAML是一种简洁的非标记语言
语法格式:
- 缩进表示层级关系
- 不支持制表符 "tab" 缩进,使用空格缩进
- 通常开头缩进2个空格
- 字符后缩进1个空格,比如冒号、逗号
- “---” 表示YAML格式,一个文件的开始
- "#" 表示注释
2.2 一个简单的YAML文件
整个YAML文件大体上可以分为定义控制器和定义被控制对象
在控制器部分:
- apiVersion:当前版本
- kind:控制器类型,其中deployment就是用来部署无状态应用的
- metadata:一些控制器的元信息,比如它之下的控制器名称name和控制器所在的命名空间namespace
- spec:控制器的资源规格,控制3个副本数、标签选择器选择app:nginx这一组pod
- template:pod的模板,其中包含了一些信息
- metadata:pod的元信息,其中包含了一个标签信息app:nginx,表示这组pod受上面定义的deployment管理
- spec:Pod的资源规格,包含了容器配置
- containers:容器配置,主要包含容器名称、镜像源、暴露端口、数据卷挂载等
YAML文件关键字太多,格式太乱了记不住
可以使用以下两个命令导出YAML文件
kubectl create deployment nginx --image=nginx:1.14 -o yaml --dry-run=client > my-deploy.yaml
对于一个正在运行的pod,也可以通过get命名导出
这是一个比较全的YAML模板
kubectl get deploy nginx -o yaml > nginx-deploy.yaml
可以用kebuctl explain来查看关键字的写法,以及其下级有什么字段
参考:
Kubernetes(k8s)中文文档 kubectl_Kubernetes中文社区
Kubernetes 之 kubectl 使用指南 - 知乎 (zhihu.com)
分类:
分布式
, kubernetes
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通