k8s中创建busybox容器,使用deployment和pod的区别,
Kubernetes(四) - Pod和Deployment
k8s(Kubernetes)中Pod,Deployment,ReplicaSet,Service之间关系分析
Pod最小的单元
Pod封装了一个或多个应用程序的容器(比如nginx等),存储资源,唯一的网络IP以及管理容器的一些选项
Pod标示的是一个部署单元,可以理解为Kubernetes中的应用程序的单个实例,它可能由单个容器组成,也可能由少量紧密耦合并共享资源的容器组成。
如果多个容器在同一Pod下他们公用一个IP所以不能出现重复的端口号,比如在一个Pod下运行两个nginx就会有一个容器异常,一个Pod下的多个容器可以使用localhost来访问对方端口
应为Pod是最小的单元如果在Pod中容器出现异常终止了是不会重启,在实际使用场景下基本不会直接使用Pod而是使用Deployment部署自己的应用
Deployment部署
在早期版本使用Replication Controller对Pod副本数量进行管理,在新的版本中官方推荐使用Deployment来代替RC,Deployment相对RC有这些好处
Deployment拥有更加灵活强大的升级、回滚功能,并且支持滚动更新
使用Deployment升级Pod只需要定义Pod的最终状态,k8s会为你执行必要的操作(RC要自己定义如何操作)
busybox.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: busybox-deployment
spec:
replicas: 1
selector:
matchLabels:
app: busybox
template:
metadata:
labels:
app: busybox
spec:
restartPolicy: Always
containers:
- name: busybox
command:
- sleep
- "3600"
image: busybox:1.28.3
# cat<<EOF | kubectl apply -f -
# apiVersion: v1
# kind: Pod
# metadata:
# name: busybox
# namespace: default
# spec:
# containers:
# - name: busybox
# image: busybox:1.28.3
# command:
# - sleep
# - "3600"
# imagePullPolicy: IfNotPresent
# restartPolicy: Always
# EOF