二、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可以自动补全

 

posted @ 2020-10-22 21:15  SoleMemory  阅读(626)  评论(0)    收藏  举报