k8s陈述式资源管理(命令行)

1、资源管理

(1)陈述式资源管理 (常用------查、增)

使用kubectl工具进行命令行管理

①特点:对资源的增删查比较方便,对改不友好

②优点:90%以上的场景都可以满足

③缺点:命令冗长、复杂

(2)声明式资源管理 (常用------部署资源)

使用yml文件进行声明式资源管理

3 GUI图形化资源管理

2、kubectl命令详解

(1)查看

kubectl命令大全网站http://docs.kubernetes.org.cn/683.html

|--------------------|---------------------------------------------------------------------------------------------------|
| 查看版本信息 | kubectl version |
| 查看所有api的资源对象 | kubectl api-resources |
| ||
| 查看k8s的集群信息 | kubectl cluster-info |
| ||
| 自动补齐命令 | |
| 基本信息查看 ||
| 查看master节点的状态 | kubectl get cs |
| ||
| 查看默认命名空间内的pod信息 | kubectl get pod |
| ||
| 查看当前集群所有命名空间 | kubectl get namespaces |
| ||
| 查看指定命名空间里的pod | kubectl get pod -n 命名空间名称 |
| ||
| 查看默认命名空间内pod的详细信息 | kubectl get pod -o wide |
| ||
| 查看指定命名空间内的pod详细信息 | kubectl get pod -o wide -n 命名空间名称 |
| ||
| 查看node节点信息和状态 | kubectl get node |
| ||
| 查看node节点的详细信息 | kubectl get node -o wide |
| ||
| 查看已经部署好的pod的详细信息 | kubectl describe pod pod名称 |
| ||
| 查看指定命名空间里的pod的详细情况 | kubectl describe pod pod名称 -n 命名空间名称 |
| ||
| 动态查看pod日志 | kubectl logs -f pod名称 |
| ||
| 动态查看指定命名空间的pod日志 | kubectl logs -f pod名称-n 命名空间名称 |
| 创建命名空间 | kubectl create ns 名称 |
| ||
| 删除命名空间 | kubectl delete ns 名称 |
| ||
| 删除pod(没有真正删除) | kubectl delete pod pod名称 |
| 生成一个新的pod ||

(2)部署

1)deployment部署pod的两种方式

①陈述式部署(命令行)

②声明式部署(yml)

2)特点

****①滚动更新:****不是一次性把所有pod全部部署,而是依次部署,主要在pod更新时使用,逐步引入新的pod,逐步减少旧的pod

****②自我修复:****若有pod节点发生故障,deployment会自动启动新的pod进行代替

****③回滚:****若更新有问题,deployment会提供还原点,可以手动还原到未更新前的状态

****④扩容和缩容:****deployment可以随时调整pod的数量,以适应流量的变化

注:必须基于deployment创建的服务才能实现以上功能 (绝大多数都使用deployment创建)

|------------------------------------------|-------------------------------------------------------------------------------------------------|
| 查看默认命名空间里基于deployment创建的pod | kubectl get deployments.apps |
| ||
| 查看指定命名空间里deployment创建的pod | kubectl get deployments.apps -n kube-system |
| ||
| 查看默认空间里daemonsets创建的pod | kubectl get daemonsets.apps |
| daemonset不能在命令行创建,只能用yml文件来创建pod,后台运行创建,在每个节点上创建一个方式相同、版本相同的容器运行的pod。一般是依赖环境和重要组件,不会对这些资源进行操作 ||
| ||
| 创建pod (同一个命名空间pod不能重名) | kubectl create deployment pod名称 --image=nginx (--replicas=3) |
| 注:若是基于deployment方式创建的pod ,或基于daemonset方式创建的pod,均是由控制器创建的pod,使用delete删除pod无法删除,相当于重启pod。先删除控制器,才能删除pod,但删除控制器,所有基于这个控制器的pod全部被删除 (慎用) kubectl delete deployments.apps nginx ||
| kubectl delete deployments.apps nginx ||
| 不是基于控制器创建的pod (可以直接删除,很少用) | kubectl run pod名称 --image=nginx |
| ||
| 远程进入节点容器 | kubectl exec -it 容器名称 bash |
| 注:docker的exec只能在本机使用,kubectl的exec可以跨主机进入容器 ||
| ||
| 指定命名空间进入容器 | kubectl exec -it 容器名称 bash -n 命名空间名称 |
| ||
| 快速结束容器 (用于结束卡在销毁状态的pod) | kubectl delete pod nginx-6799fc88d8-j4hxc --force --grace-period=0 |
| --grace-period表示过度的存活期(默认30秒,可以让pod优雅的结束容器内的进程,然后退出pod) --grace-period=0表示立刻退出 ||
| ||
| 对deployment创建的pod扩、缩容 (仅限于deployment控制器) | kubectl scale deployment nginx1 --replicas=3 |
| 扩容: 缩容: ||
| 发布服务的service ||
| ||
| 查看当前命名空间的service | kubectl get svc |
| ||
| 删除service | kubectl delete svc nginx |
| ||
| service的类型 ||
| ****①ClusterIP:****创建service的默认类型,提供一个集群内部的虚拟IP地址,通过这个虚拟IP可以直接访问pod的资源,仅限于pod内部,无法对外提供访问 ②NodePort (常用) 在每个node节点上都开放一个相同的端口,外部可以通过node的本机IP+端口访问pod资源,这是集群外部访问service资源的一种方式(四层代理),基于deployment创建的pod可以使用这种方式 nodeip:nodeport(nodeport可随机指派,也可指定,范围30000~32767) ||
| 对外暴露service端口 | kubectl expose deployment nginx --port=80 --target-port=80 --name=nginx-service --type=NodePort |
| --port=80 service集群的端口(可随意指定) --target-port=80 pod内部容器的端口(服务固定的端口号) ||
| 10.96.26.83:集群内部的IP地址,外部不可以访问 80:对应的是内部的service 端口 30934:和内部的service的80端口做映射 ||
| pod内部的容器的端口是固定的,--port是service和容器映射端口,可以随意指定 --target-port是容器内部的服务端口 ||
| 修改service端口 | kubectl edit svc service名称 |
| ||
| ③LoadBalance:若service类型设定为LoadBalance,映射地址(云平台提供LoadBalance的地址,需要付费),这种用法仅用于公有云服务供应商在云台上设置的service的场景,外部访问,实现负载均衡 创建service,指定类型为LoadBalance ||
| ||
| ④ExternalName (常用):DNS映射,给service分配一个域名,通过域名来访问后端pod的资源,ExternalName的service类型不能提供负载均衡,必须设置一个LoadBalance地址才能实现负载均衡 ||
| 注:企业内部最常见的是
NodePort和ExternalName
结合一起使用 ||

3 更新、回滚、发布方式

项目的生命周期:创建------发布------更新------回滚------删除

|--------------------|---------------------------------------------------------------------|
| 更新服务版本 | kubectl set image deployment nginx nginx=nginx:1.22.0 |
| ||
| 查看还原点 | kubectl rollout history deployment nginx |
| 数字越大,就是最近的一次的操作 ||
| 设置还原点时加上标识便于识别还原点 | kubectl set image deployment nginx nginx=nginx:1.15****--record**** |
| ||
| 回滚 | kubectl rollout undo deployment nginx --to-revision=1 |
| ||
| 查看还原状态 | ①kubectl rollout status deployment nginx ②kubectl get pod -w动态查看 |
| ||
| 查看默认命名空间集群内的所有信息 | kubectl get all |
| ||
| 看默认命名空间集群内的所有详细信息 | kubectl get all -o wide |
| ||
| 查看指定命名空间集群内的所有详细信息 | kubectl get all -o wide -n 命名空间名称 |
| ||

相关推荐
运维螺丝钉1 小时前
docker安装应用
运维·docker·容器
optimistic_chen2 小时前
【Docker入门】cgroups 资源控制
linux·运维·ubuntu·docker·容器·cgroup
芥子沫3 小时前
书签管理工具使用:Readeck-Docker部署和使用技巧
运维·docker·容器·书签管理
ba_pi3 小时前
每天写点什么2026-01-19-docker如何使用GPU
运维·docker·容器
Gold Steps.3 小时前
K8S基于 Argo Rollouts 的高级版本发布实践
云原生·容器·kubernetes
七七powerful3 小时前
docker 部署dirsearch并进行目录遍历扫描
运维·docker·容器
王九思4 小时前
Docker访问权限问题
docker·云原生·容器
孤岛悬城4 小时前
61 K8s之Pod控制器与配置资源管理
云原生·容器·kubernetes
噎住佩奇4 小时前
kubeadm方式部署单节点k8s
云原生·容器·kubernetes
十月南城4 小时前
Kubernetes入门地图——核心对象、网络与存储的抽象关系与心智模型
网络·容器·kubernetes