【Linux39-2】pod、资源清单的书写、pod生命周期(探针)、init初始化容器、控制器(Deployment、ReplicaSet、DaemonSet、Job、Cronjob)

本文深入探讨Kubernetes中的Pod、控制器如Deployment、ReplicaSet、DaemonSet、Job、Cronjob,以及Pod的生命周期、初始化容器、资源扩缩容、Service的外部访问和更新回滚等核心概念。
摘要由CSDN通过智能技术生成

0官网


kubectl命令官网详解

pod官网文档

Deployment官网文档


实验环境:
master端:server2:192.168.17.2
node端:server3:192.168.17.3
harbor仓库:server1:192.168.17.1


1. pod与控制器


  • pod 是可以在 Kubernetes 中创建和管理的、最小的可部署的计算单元
  • Pod (就像在鲸鱼荚或者豌豆荚中)是一组(一个或多个) 容器; 这些容器共享存储、网络、以及怎样运行这些容器的声明。 Pod 中的内容总是并置(colocated)的并且一同调度,在共享的上下文中运行。 Pod 所建模的是特定于应用的“逻辑主机”,其中包含一个或多个应用容器, 这些容器是相对紧密的耦合在一起的。 在非云环境中,在相同的物理机或虚拟机上运行的应用类似于在同一逻辑主机上运行的云应用。
  • 就 Docker 概念的术语而言,Pod 类似于共享名字空间和文件系统卷的一组 Docker 容器。
  • 每个 Pod 都旨在运行给定应用程序的单个实例。如果希望横向扩展应用程序(例如,运行多个实例 以提供更多的资源),则应该使用多个 Pod,每个实例使用一个 Pod。 在 Kubernetes 中,这通常被称为 副本(Replication)。 通常使用一种工作负载资源及其控制器 来创建和管理一组 Pod 副本。

1.1 创建与删除pod


集群内部可以访问,外部无法直接访问

  • 创建pod:
kubectl run nginx --image=myapp:v1

在这里插入图片描述
在这里插入图片描述

  • 删除pod:
kubectl delete pod nginx

1.2 Deployment控制器管理pod


  • 创建
kubectl create deployment nginx --image=myapp:v1

在这里插入图片描述

用pod命令删除后会又自动创建一个新的
kubectl delete pod nginx-67f9d9c97f-zk7z5 

在这里插入图片描述

  • 彻底删除
kubectl delete deployments nginx

1.3 扩容与缩容


--replicas:在deployment控制器的基础上

kubectl scale deployment --replicas=2 nginx 

1.4 创建service并外部访问


1)ClusterIP:默认类型,自动分配一个仅集群内部可以访问的虚拟IP

kubectl expose deployment nginx --port=80

在这里插入图片描述
在这里插入图片描述

2)NodePort 暴露端口:外部客户端访问(可以通过NodeIP:NodePort来访问)

  • 修改类型为NodePort
kubectl edit svc nginx (修改  type: NodePort)

在这里插入图片描述
在这里插入图片描述

  • 创建时指定类型为NodePort:
kubectl expose deployment nginx --port=80 --type=NodePort

1.5 更新与回滚


更新pod镜像

kubectl set image deployment nginx myapp=myapp:v2

在这里插入图片描述


回滚

1.查看历史版本
kubectl rollout history deployment nginx
2.回滚
kubectl rollout undo deployment nginx --to-revision=1

在这里插入图片描述
在这里插入图片描述

2. 资源清单


kubectl api-versions :查询命令
kubectl explain pod 查询帮助文档

  • apiVersion:group/version 指明api资源属于哪个群组和版本,同一个组可以有多个版本
  • kind:标记创建的资源类型
  • metadata:元数据
    • name:对象名称,
    • namespace:对象所属的命名空间,
    • labels:指定资源标签(键值数据)
  • spec:定义目标资源的期望状态

简单pod示例

kubectl apply -f pod.yml #创建
kubectl delete -f pod.yml #删除
#pod.yml
apiVersion: v1
kind: Pod
metadata:
  name: nginx
  namespace: default
spec:
  containers:
  - name: nginx
    image: myapp:v1
    imagePullPolicy: IfNotPresent

在这里插入图片描述

Deployment控制器示例

kubectl apply -f deployment.yml #创建
kubectl delete -f deployment.yml #删除
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值