deployment
- deployment
- 创建指定数量的pod
- 检查pod健康状态和数量
 
- 创建deployment
# 使用Kubard创建
# run创建
kubectl run nginx-dep1 --image=nginx:1.8 --replicas=1    # 创建(只生成一个副本)
kubectl get deployment    # 查看
# 使用yaml文件创建
vim ngx-dep.yaml    # 创建yaml文件
kubectl apply -f ngx-dep.yaml    # 执行yaml文件
ngx-dep.yaml文件
apiVersion: apps/v1 # 指定api版本信息
kind: Deployment    # 指定创建的是什么,创建对象的类型
metadata:   # 指定原数据信息
    name: ngx-dep3  # 创建的deployment的名称
    labels: # 设置标签(标签名、标签值),作用:过滤筛选特定容器
        apps: ngx # 标签名称:标签的值 | (名称可以任意取)
        type: weservice
spec:   # 设置deployment中的详细信息
    replicas: 1   # 指定副本数量
    selector:     # 选择器
        matchLabels:    # 标签选择器
            app: ngx    # 过滤app标签,app的值为ngx的
    template:   # 创建pod的时候,基于什么模板来创建pod
        metadata:   # 创建的pod的原数据信息
            labels: # 创建的pod的标签
                app: ngx
                type: webService
        spec:   # 指定创建的pod的具体的设置信息
            containers:
            - name: nginx
              image: nginx:1.8
状态查询
- 查看k8s对象状态
- kubectl get 资源类型 [-0 wide 查看更详细的信息]
- 资源类型:
- node
- pod
- service
- deployment
- namespace
- … …
 
- 选项
- n:指定名称空间(namepase)
- A:显示所有名称空间中的资源
 
 
- 资源类型:
- kubectl describe 资源类型
- kubectl describe pod pod_name -n namespace
- 默认名称空间中:kubectl describe pod myweb-5b79bf86d4-9cs2h
- 其他名称空间中:kubectl describe pod kuboard-5cb789755d-44p9j
 
 
- kubectl describe pod pod_name -n namespace
- kubectl logs pod_name
- 显示pod中的容器,在运行中产生的日志信息
 
- 进入容器
- kubectl exec -it pod_name /bin/bash
 
 
- kubectl get 资源类型 [-0 wide 查看更详细的信息]
发布应用
通过yaml文件创建deployment,通过deployment创建pod,发布pod应用
ngx-svc.yaml
apiVersion: v1
kind: Service
metadata:
    name: ngx-svc
    labels:
        app: ngx
spec:
    selector:
        app: ngx
    ports:  # 把pod中容器的端口暴露出来
    - name: nginx-ports
      protocol: TCP # 使用的是什么协议
      port: 80  # 暴露80端口(pod和service通信的端口)
      nodePort: 32002   # 映射的端口:30000-32767(客户端访问的)
      targetPort: 80    # 将收到请求转发到pod的80端口
    type: NodePort  # 类型
# 创建
kubectl apply -f ngx-svc.yaml
# 查看
kubectl get service
# 通过任意一个worker节点的指定端口号即可访问
# 主要通过selector的标签选择器来实现pod和service的关联
服务伸缩(scalling)
如何实现自动伸缩?
根据客户端的请求流量实现弹性管理(修改副本数量)
# 编辑pod对应的yaml文件
vim ngx-dep.yaml
# 修改 replicas: 1   # 指定副本数量
# 再重新创建就可以了
kubectl apply -f ngx-dep.yaml
滚动更新
集群中有多个容器,在更新的时候,多个容器,
依次发生变化
创建出来一个pod,更新掉一个pod
# 查看所有的pod
kubectl get pods
# 查看pod的详细信息
kubectl describe pod nginx-dep1-6dd5d75f8b-zns64
vim ngx-dep.yaml
# 通过yaml文件,重新创建pod
kubectl apply -f  ngx-dep.yaml
# 查看指定标签app=ngx的pod的状态
watch kubectl get pods -l ngx
- 实际使用
- 先要编写Dockerfile,通过Dockerfile创建镜像
- 系统镜像
- 运行镜像(项目运行的环境)
- 项目镜像(写好的项目)
 
- 将镜像文件发布到dockerhub上
- 通过编写yaml文件,从dockerhub上下载镜像
- 完成更新
 
- 先要编写Dockerfile,通过Dockerfile创建镜像
 
             
           
             
                         
             
            
评论区