一、创建资源的方式
Kubernetes 支持两种方式创建资源:
-
命令
-
配置文件
1.1、用 kubectl 命令直接创建
特点:
1. 简单直观快捷,上手快。
2. 适合临时测试或实验。
kubectl run httpd-deployment --image=httpd --replicas=2 # --replica参数1.19版本后废弃
在命令行中通过参数指定资源的属性。
1.2、通过配置文件和 kubectl apply 创建
特点:
-
配置文件描述了what,即应用最终要达到的状态;
-
配置文件提供了创建资源的模板,能够重复部署;
-
可以像管理代码一样管理部署;
-
适合正式的、跨环境的、规模化部署;
-
熟悉yaml语法。
httpd-deployment.yaml:文件:
apiVersion: apps/v1 # 当前配置格式的版本
kind: Deployment # kind 是要创建的资源类型
metadata: # metadata 是该资源的元数据,name 是必需的元数据项
name: httpd-deployment # pod名称
spec: # spec 部分是该 Deployment 的规格说明
selector: # 通过标签选择被控制的pod
matchLabels:
app: httpd
replicas: 3 # 通过replicas声明pod个数是3
template: # template 定义 Pod 的模板,这是配置文件的重要部分
metadata: # metadata 定义 Pod 的元数据,至少要定义一个 label。label 的 key 和 value 可以任意指定
labels: # 给pod打上标签app=httpd
app: httpd
spec: # spec 描述 Pod 的规格,此部分定义 Pod 中每一个容器的属性,name 和 image 是必需的。
containers: # 声明容器的名称、镜像、端口
- name: httpd
image: httpd
ports: # 需要暴露的端口库号列表
- containerPort: 8080
部署应用:kubectl apply -f httpd-deployment.yaml
通过kubectl get查看httpd-deployment的各种资源:
Deployment、ReplicaSet、Pod 都已经就绪。
如果要删除资源,执行 kubectl delete deployment httpd-deployment 或者 kubectl delete -f httpd-deployment.yaml。
二、Scale UP/Down
伸缩(Scale Up/Down)是指在线增加或减少 Pod 的副本数。
直接修改deployment.yaml文件中的spec.replicas值,然后kubectl apply -f httpd-deployment.yaml
三、k8s故障切换
https://www.cnblogs.com/benjamin77/p/9901775.html k8s的故障切换(failover)
3 个 httpd 副本分别运行在 node1 和 node2 上。现在模拟 node2 故障,关闭该节点(halt -h或者关机)。
等待一段时间,Kubernetes 会检查到 node2 不可用,将 node2 上的 Pod 标记为 Unknown 状态,并在 node1 上新创建两个 Pod,维持总副本数为 3。
当 node2 恢复后,Unknown 的 Pod 会被删除(pod的状态 Unkown状态 变为 Terminating 状态 最后这些pod会消失),不过已经运行的 Pod 不会重新调度回 node2。