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 kubectl 命令表 _ Kubernetes(K8S)中文文档_Kubernetes中文社区

kubectl 命令概览 · Kubernetes 中文指南——云原生应用架构实战手册 (jimmysong.io)

posted @ 2022-04-06 16:44  aganippe  阅读(305)  评论(0编辑  收藏  举报