找回密码
 立即注册
快捷导航

[Docker/K8s] Kubernetes/k8s 应用部署

[复制链接]
茎肛互撸娃 2023-7-20 02:24:14 | 显示全部楼层

第一种,用命令(不推荐)
kubectl run testapp --image=ccr.ccs.tencentyun.com/k8s-tutorial/test-k8s:v1

部署一个Pod

apiVersion: v1
kind: Pod
metadata:
  name: test-pod
spec:
  # 定义容器,可以多个
  containers:
    - name: test-k8s # 容器名字
      image: ccr.ccs.tencentyun.com/k8s-tutorial/test-k8s:v1 # 镜像

部署命令:kubectl apply -f 你的yaml文件
哈看pod:kubectl get pod

部署DepLoyment

apiVersion: apps/v1
kind: Deployment
metadata:
  name: test-k8s    # 部署名字
spec:
  replicas: 2      # 要运行的副本数量(即:Pod的数量)
  # 用来查找关联的 Pod,所有标签都匹配才行
  selector:
    matchLabels:
      app: test-k8s    # 标签以key/value形式
  # 定义 Pod 相关数据
  template:
    metadata:
      labels:
        app: test-k8s # 这个必须和上面的写的标签全部一致才关联起来
    spec:
      # 定义容器,可以多个
      containers:
      - name: test-k8s   # 容器名字
        image: ccr.ccs.tencentyun.com/k8s-tutorial/test-k8s:v1 # 镜像

Deployment 通过 label 关联起来 Pods

Kubernetes/k8s 应用部署4954 作者:茎肛互撸娃 帖子ID:515

# 部署应用
kubectl apply -f app.yaml

# 查看 deployment
kubectl get deployment

# 查看 pod,并显示更多信息(包括pod的ip地址,所在节点等)
kubectl get pod -o wide

# 查看 某个pod 的详情
kubectl describe pod <pod-name>

# 查看某个pod输出的log日志
kubectl logs <pod-name>
kubectl logs pod/<pod-name> -f  # 类似 tail -f 效果

# 进入 某个Pod 容器终端, -c container-name 可以指定进入哪个容器。
kubectl exec -it <pod-name> -- bash
kubectl exec -it <pod-name> -c <container-name> -- bash

# 伸缩扩展副本(Pod)数量
kubectl scale deployment test-k8s --replicas=5

# 把集群内端口映射到节点
kubectl port-forward <pod-name> 8090:8080
# 暴露出外网8090端口,映射入Pod容器中的8080端口,访问hxxp://localhost:8080即可看到效果

# 查看历史
kubectl rollout history deployment test-k8s

# 回到上个版本
kubectl rollout undo deployment test-k8s

# 回到指定版本
kubectl rollout undo deployment test-k8s --to-revision=2

# 删除部署
kubectl delete deployment test-k8s

# 列出Pod Server Deployment等所有信息
kubectl get all

# 重新部署(即使你啥也没改)
kubectl rollout restart deployment test-k8s

# 命令修改镜像,--record 表示把这个命令记录到操作历史中
kubectl set image deployment test-k8s test-k8s=ccr.ccs.tencentyun.com/k8s-tutorial/test-k8s:v2-with-error --record

# 暂停运行,暂停后,对 deployment 的修改不会立刻生效,恢复后才应用设置
kubectl rollout pause deployment test-k8s

# 恢复
kubectl rollout resume deployment test-k8s

# 输出到文件
kubectl get deployment test-k8s -o yaml >> app2.yaml

# 删除全部资源(包括Pod、Depoloyment、Server等)
kubectl delete all --all

将 Pod 指定到某个节点运行:nodeselector

apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    env: test
spec:
  containers:
  - name: nginx
    image: nginx
    imagePullPolicy: IfNotPresent
  nodeSelector:     # 主要这里
    disktype: node1

工作负载分类

  • Deployment   (上面已经用过了)
    • 适合无状态应用,所有pod等价,可替代
  • StatefulSet
    • 有状态的应用,适合数据库这种类型。
  • DaemonSet
    • 在每个节点上跑一个 Pod,可以用来做节点监控、节点日志收集等
  • Job & CronJob
    • Job 用来表达的是一次性的任务,而 CronJob 会根据其时间规划反复运行。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

温馨提示

关于 注册码 问题

      由于近期经常大量注册机器人注册发送大量广告,本站开启免费入群领取注册码注册网站账号,注册码在群公告上贴着...

关于 注册码 问题

      由于近期经常大量注册机器人注册发送大量广告,本站开启免费入群领取注册码注册网站账号,注册码在群公告上贴着...

Archiver|手机版|小黑屋|DLSite

GMT+8, 2024-10-30 18:14

Powered by Discuz! X3.5 and PHP8

快速回复 返回顶部 返回列表