" name="sm-site-verification"/>
侧边栏壁纸
博主头像
PySuper博主等级

千里之行,始于足下

  • 累计撰写 203 篇文章
  • 累计创建 14 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

Kubernetes使用

PySuper
2020-06-18 / 0 评论 / 0 点赞 / 14 阅读 / 4944 字
温馨提示:
所有牛逼的人都有一段苦逼的岁月。 但是你只要像SB一样去坚持,终将牛逼!!! ✊✊✊

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 logs pod_name
      • 显示pod中的容器,在运行中产生的日志信息
    • 进入容器
      • kubectl exec -it pod_name /bin/bash

发布应用

通过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上下载镜像
    • 完成更新
0

评论区