第一种,用命令(不推荐)
kubectl run testapp --image=ccr.ccs.tencentyun.com/k8s-tutorial/test-k8s:v1
部署一个Pod
apiVersion: v1
kind: Pod
metadata:
name: test-pod
spec:
# 定义容器,可以多个
containers:
- name: test-k8s # 容器名字
image: ccr.ccs.tencentyun.com/k8s-tutorial/test-k8s:v1 # 镜像
部署命令:kubectl apply -f 你的yaml文件
哈看pod:kubectl get pod
部署DepLoyment
apiVersion: apps/v1
kind: Deployment
metadata:
name: test-k8s # 部署名字
spec:
replicas: 2 # 要运行的副本数量(即:Pod的数量)
# 用来查找关联的 Pod,所有标签都匹配才行
selector:
matchLabels:
app: test-k8s # 标签以key/value形式
# 定义 Pod 相关数据
template:
metadata:
labels:
app: test-k8s # 这个必须和上面的写的标签全部一致才关联起来
spec:
# 定义容器,可以多个
containers:
- name: test-k8s # 容器名字
image: ccr.ccs.tencentyun.com/k8s-tutorial/test-k8s:v1 # 镜像
Deployment 通过 label 关联起来 Pods
# 部署应用
kubectl apply -f app.yaml
# 查看 deployment
kubectl get deployment
# 查看 pod,并显示更多信息(包括pod的ip地址,所在节点等)
kubectl get pod -o wide
# 查看 某个pod 的详情
kubectl describe pod <pod-name>
# 查看某个pod输出的log日志
kubectl logs <pod-name>
kubectl logs pod/<pod-name> -f # 类似 tail -f 效果
# 进入 某个Pod 容器终端, -c container-name 可以指定进入哪个容器。
kubectl exec -it <pod-name> -- bash
kubectl exec -it <pod-name> -c <container-name> -- bash
# 伸缩扩展副本(Pod)数量
kubectl scale deployment test-k8s --replicas=5
# 把集群内端口映射到节点
kubectl port-forward <pod-name> 8090:8080
# 暴露出外网8090端口,映射入Pod容器中的8080端口,访问hxxp://localhost:8080即可看到效果
# 查看历史
kubectl rollout history deployment test-k8s
# 回到上个版本
kubectl rollout undo deployment test-k8s
# 回到指定版本
kubectl rollout undo deployment test-k8s --to-revision=2
# 删除部署
kubectl delete deployment test-k8s
# 列出Pod Server Deployment等所有信息
kubectl get all
# 重新部署(即使你啥也没改)
kubectl rollout restart deployment test-k8s
# 命令修改镜像,--record 表示把这个命令记录到操作历史中
kubectl set image deployment test-k8s test-k8s=ccr.ccs.tencentyun.com/k8s-tutorial/test-k8s:v2-with-error --record
# 暂停运行,暂停后,对 deployment 的修改不会立刻生效,恢复后才应用设置
kubectl rollout pause deployment test-k8s
# 恢复
kubectl rollout resume deployment test-k8s
# 输出到文件
kubectl get deployment test-k8s -o yaml >> app2.yaml
# 删除全部资源(包括Pod、Depoloyment、Server等)
kubectl delete all --all
将 Pod 指定到某个节点运行:nodeselector
apiVersion: v1
kind: Pod
metadata:
name: nginx
labels:
env: test
spec:
containers:
- name: nginx
image: nginx
imagePullPolicy: IfNotPresent
nodeSelector: # 主要这里
disktype: node1
工作负载分类
- Deployment (上面已经用过了)
- StatefulSet
- DaemonSet
- 在每个节点上跑一个 Pod,可以用来做节点监控、节点日志收集等
- Job & CronJob
- Job 用来表达的是一次性的任务,而 CronJob 会根据其时间规划反复运行。
|