k8s 部署基础

pod-缩写po

概念:Pod 类似于共享名字空间和文件系统卷的一组 Docker 容器。
简单部署

文件nginx-pod.yaml

1
2
3
4
5
6
7
8
9
10
11
12
apiVersion: v1
kind: Pod
metadata:
name: nginx
labels: #标签
app: nginx #标签为了后面service的selector
spec:
containers:
- name: nginx
image: nginx:alpine
ports:
- containerPort: 80

基本操作:

1
2
3
4
kubectl apply -f nginx-pod.yaml #部署pod
kubectl get po #查看pod
kubectl describe pods nginx #查看pod详情
kubectl delete -f nginx-pod.xml #删除

Pod 建议不要直接创建,而是使用工作负载资源创建的。原因:Kubernetes Pods 有确定的生命周期。在pod所在的节点重启之后,pod需要重新创建。

挂载卷

k8s volume挂载卷

service

概念:将运行在一组 Pods 上的应用程序公开为网络服务的抽象方法。
简单部署

文件nginx-service.yaml

1
2
3
4
5
6
7
8
9
10
11
12
13
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
type: NodePort
selector: #选择器
app: nginx #选择标签app=nginx的pod
ports:
- protocol: TCP
port: 9376 #映射端口,可以说是集群内服务端口,默认情况port设置成容器内部端口一致
targetPort: 80 #容器内端口
nodePort: 30000 #对外暴露端口,外网访问端口

基本操作

1
2
3
4
kubectl apply -f nginx-service.yaml #部署服务
kubectl get service #查看服务
kubectl describe service nginx-service #查看服务详情
kubectl delete -f nginx-service.yaml #删除服务

Deployment(工作负载)-缩写deploy

概念:一个 Deployment 为 PodReplicaSet 提供声明式的更新能力。
简单部署

文件nginx-Deployment.yaml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 2 #副本,默认值1
selector: #选择标签,创建后不可改变
matchLabels:
app: nginx #标签
template: #是一个pod的模版
metadata:
labels: #于外面的标签同步设置,要明确指定
app: nginx
spec:
volumes:
- name: nginx-data
persistentVolumeClaim:
claimName: nginx-pvc
containers:
- name: nginx
image: nginx:alpine
ports:
- containerPort: 80
volumeMounts:
- mountPath: "/usr/share/nginx/html"
name: nginx-data

基本操作

1
2
3
4
5
6
7
8
9
10
11
12
13
kubectl apply -f nginx-deployment.yaml #部署
kubectl get deploy #查看部署或者kubectl get deployment
kubectl describe deploy nginx-deployment #查看部署详情
kubectl delete -f nginx-deployment.yaml #删除部署
kubectl edit deploy/nginx-deployment #编辑部署
kubectl rollout status deployment/nginx-deployment #查看部署状态
kubectl rollout restart deploy/nginx-deployment #重新部署
kubectl get rs #查看部署副本期望与实际
kubectl rollout history deployment/nginx-deployment #查看历史版本
kubectl rollout history deployment/nginx-deployment --revision=2 #查看历史版本2的详细信息
kubectl rollout undo deployment/nginx-deployment #撤销当前版本
kubectl rollout undo deployment/nginx-deployment --to-revision=2 #回滚到指定版本
kubectl scale deployment/nginx-deployment --replicas=10 #缩放副本

CRD

概念定制资源(Custom Resource) 是对 Kubernetes API 的扩展,存取结构化的数据。

Operator