文章目录
0官网
实验环境:
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 #删除