部署应用到k8s集群,并进行基本管理
直接运行命令部署pod
kubectl run testapp --image=ccr.ccs.tencentyun.com/k8s-tutorial/test-k8s:v1
使用yaml文件进行pod部署
#创建yaml文件app.yaml
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 app.yaml
将 Pod 指定到某个节点运行:nodeselector
>apiVersion: v1 >kind: Pod >metadata: name: nginx labels: env: test >spec: containers: - name: nginx image: nginx imagePullPolicy: IfNotPresent nodeSelector: disktype: ssd
使用yaml文件进行deployment部署
#创建yaml文件app.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
# 部署名字
name: test-k8s
spec:
replicas: 2
# 用来查找关联的 Pod,所有标签都匹配才行
selector:
matchLabels:
app: test-k8s
# 定义 Pod 相关数据
template:
metadata:
labels:
app: test-k8s
spec:
# 定义容器,可以多个
containers:
- name: test-k8s # 容器名字
image: ccr.ccs.tencentyun.com/k8s-tutorial/test-k8s:v1 # 镜像
#部署
kubectl apply -f app.yaml
常用命令
部署应用
kubectl apply -f app.yaml
查看pod列表
kubectl get pod -o wide
查看deployment
kubectl get deployment
查看pod的详细信息
kubectl describe pod pod的name
查看pod的日志
kubectl logs pod的name
-f 持续查看
进入pod容器的命令行
kubectl exec -it pod的name -- bash
如果pod中有多个容器,需要 -c 容器名字 进入指定容器
修改deployment中的pod副本数量
#将name为test-k8s的deployment副本数量修改为5
deployment test-k8s --replicas=5
#也可以修改yaml文件后重新apply
pod端口映射到宿主机
kubectl port-forward pod的name(或者service/服务的name) 宿主机端口:pod端口
查看历史
kubectl rollout history deployment deployment的name
回滚到之前版本
# 回到上个版本
kubectl rollout undo deployment deployment的name
# 回到指定版本
kubectl rollout undo deployment deployment的name --to-revision=2
删除部署
kubectl delete deployment deployment的name
kubectl delete pod pod的name
更多命令
# 查看全部
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
# 删除全部资源
kubectl delete all --all