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 命名空间名称 |
| ||

相关推荐
巅峰程序12 小时前
[docker]拉取镜像失败
docker·容器·eureka
MonkeyKing_sunyuhua14 小时前
sudo docker ps才能查看,docker ps不能查看问题
docker·容器·eureka
小龙在山东14 小时前
使用Docker快速部署FastAPI Web应用
docker·容器·fastapi
苏格拉真没有底14 小时前
docker配置代理解决不能拉镜像问题
运维·docker·容器
A ?Charis17 小时前
我来讲一下-Service Mesh.
云原生·service_mesh
ciao-lk18 小时前
docker desktop运行rabittmq容器,控制台无法访问
docker·容器
严格要求自己19 小时前
nacos-operator在k8s集群上部署nacos-server2.4.3版本踩坑实录
云原生·容器·kubernetes
少吃一口就会少吃一口19 小时前
k8s笔记
云原生·容器·kubernetes
葡萄皮Apple19 小时前
[CKS] K8S ServiceAccount Set Up
服务器·容器·kubernetes
星海幻影20 小时前
云原生-docker安装与基础操作
网络·安全·docker·云原生·容器