二、pod部署方式
使用kubectl命令部署应用
kubectl create deployment 名称 --image=镜像名称或路径
可以通过kubectl create --help查看支持的资源,一般网站、api、微服务都是用deployment部署
后面加上 --dry-run=client可以测试命令是否正确,不会真正创建(clent可能需要改为false)
在 --dry-run=client基础上,后面再加上-o yaml>导出文件名,可以导出ymal文件(导出的文件中有一个时间戳null的一行和status,把这两行删掉即可)
如果有问题可以执行排查:kubectl describe pod {pod名称}
使用yaml文件部署
# 可通过kubectl api--version查看,一般1.16以后都是使用apps/v1版本 apiVersion: apps/v1 kind: Deployment # 命名空间可通过kubectl get namespace查看 metadata: name: web-deployment namespace: default spec: # 副本数,一个副本代表启一个实例,如果一个pod挂了,那么会在其他副本再启一个 replicas: 3 selector: matchLabels: # 标签选择器,一般写两个,上面项目名,下面应用名,控制器通过这个标签关联下面的pod project: java-projerct app: java-demo # 以下是Pod模板 template: metadata: labels: # 与标签选择器中的名称一致 project: java-projerct app: java-demo spec: containers: - name: web image: lizhenliang/java-demo # 镜像拉取策略 imagePullPolicy: IfNotPresent ports: - containerPort: 80 # 如果要启动第二个容器,下面继续写 - name: web2 image: nginx # 如果是私有镜像仓库,必须要登陆,这个为了指定登陆私有镜像仓库的凭据 imagePullSecrets: -name: myregistrykey
创建完之后执行:kubectl apply -f {yaml文件名}
生成yaml模板可以通过官网或者执行:
kubectl create deployment web --image=lizhenliang/java-demo --dry-run -o yaml > web.yaml
--dry-run 表示只是测试,并不真正执行
-o yaml 表示显示语句的yaml文件内容
注意通过改方式生成的yaml模板要删除里面的creationTimestamop:null
kubectl命令行和yaml部署区别
1、kubectl适合快速能完成部署任务
2、yaml适合复杂任务
3、yaml方便复用
导出yaml文件
通过kubectl get deployment查看创建了哪些deployment
然后执行kubectl get deployment 应用名 -o yaml
小技巧
字段缩写:
比如deployment,通过kubectl api-resources| more查看,左边的长格式,右边是缩写格式
pod容器字段忘记拼写,可以通过kubectl explain pods.spec.containers
命令补全:
安装yum install bash-completion
执行source <(kubectl completion bash)
source /usr/share/bash-completion/bash_completion
然后按tab可以自动补全
浙公网安备 33010602011771号