k8s之陈述式资源管理

1.kubectl命令

kubectl version 查看k8s的版本

kubectl api-resources 查看所有api的资源对象的名称

kubectl cluster-info 查看k8s的集群信息

kubectl get cs 查看master节点的状态

kubectl get pod 查看默认命名空间内的pod的信息

kubectl get ns 查看当前集群所有的命名空间

kubectl get pod -n kube-system 查看指定的命名空间内的pod 需要加-n

kubectl get pod -o wide 查看默认命名空间内pod的详细信息

kubectl get pod -n kube-system -o wide 查看指定命名空间的详细信息

kubectl get pod -o wide -n kube-system 查看指定命名空间的详细信息

kubectl get node 查询节点的信息和状态

kubectl get node -o wide 查看node节点的详细信息

kubectl get pod

kubectl describe pod nginx-6799fc88d8-4kv8x 查看已经部署好的pod的详细信息

kubectl get ns

kubectl get pod -n kube-system

kubectl describe pod -n kube-system etcd-master01 查看命名空间里的pod的详细信息

kubectl logs nginx-6799fc88d8-4kv8x 查看pod的日志

kubectl logs -f nginx-6799fc88d8-4kv8x 动态查看pod的日志

kubectl logs -f etcd-master01 -n kube-system 查看不同命名空间里的pod日志

kubectl create ns guoqi 创建命名空间

kubectl get ns 查看命名空间

kubectl delete ns guoqi 删除指定命名空间

kubectl delete pod nginx-6799fc88d8-4kv8x 删除指定pod

先声明动作: create delete get 对象 ns pod service 对象名称 guoqi nginx nginx1 nginx2

2.deployment 的部署pod

陈述式部署:命令行

声明式:yaml文件部署

滚动更新:不是一次性的把所有pod全部部署,而是一个个来。pod的更新时使用,逐步的引入新的pod,逐步的减少旧的pod

自我修复:如果有pod节点发送故障,deployment会自动启动新的pod来进行代替

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

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

上述的功能必须是基于deployment创建的服务才可以,绝大多数的pod都是使用deployment创建的

kubectl get deployment.apps -n kube-system 查询命名空间通过deployment创建的pod

kubectl get daemonset.apps -n kube-system

daemonset 不能通过命令行创建,只能在yaml文件当中定义这种创建方式

后台运行创建,在每个节点上都创建一个相同方式的,相同版本的容器运行的pod

一般都是依赖环境和重要组件,一般也不会对这些资源进行操作

kubectl create deployment nginx-dn --image=nginx --replicas=3

kubectl create ns guoqi

kubectl create deployment nginx-dn --image=nginx --replicas=3 -n guoqi

kubectl get pod -n guoqi

如果是基于deployment方式创建的pod,或者是daemonset创建的pod,是由控制器创建的pod,是由delete删除pod是删除不掉的,相当于重启pod

kubectl delete deployment.apps nginx-guoqi -n guoqi

kubectl get pod -n guoqi

基于deployment方式创建pod,一旦删除的deployment,基于deployment,基于这个deployment创建的pod都睡删除,慎用)

3.远程进入节点容器

kubectl get pod -o wide

kubectl exec -it nginx-6799fc88d8-8jbcr bash

##docker的exec只能在本机内部使用,不能跨主机。kubectl exec 跨主机进入容器

kubectl create deployment nginx --image=nginx -n guoqi

kubectl get pod -n guoqi -o wide

kubectl exec -it nginx-6799fc88d8-s59sn -n guoqi bash

kubectl delete pod nginx-6799fc88d8-vnc4h --force --grace-period=0

grace-period:表示过度存活周期,默认是30秒,可以让pod快速的结束容器内的进程,然后退出pod

=0 表示立刻停止pod 必须要force

主要用于结束卡在销毁状态的pod

对deployment创建的pod进行扩容

kubectl scale deployment nginx-guoqi --replicas=3 扩容

kubectl scale deployment nginx-guoqi --replicas=1 缩容

把服务的service进行发布

kubectl get svc 查看当前服务

kubectl delete svc nginx 删除服务

4.service的类型

ClusterIP 创建service的默认类型,提供一个集群内部的虚拟ip地址,这是service的默认类型,通过虚拟ip直接访问pod的资源,无法对外提供访问

NodePort:会在每个node节点上都开放一个相同的端口。外部可以通过node的本机ip+端口访问pod资源,集群外部访问service资源的一种方式,四层代理

modeip:nodeport

随机指派,也可以指定 30000-32767

基于deployment创建的pod,可以使用的方式

kubectl expose deployment nginx --port=80 --target-port=80 --name=nginx-service --type=NodePort

--port=80 service集群的端口

--target-port=80 pod内部容器的端口

root@master01 \~\]# kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 \ 443/TCP 23h nginx-service NodePort 10.96.25.213 \ 80:32206/TCP 12s ## 10.96.25.213 集群内部的ip地址,外部是不可以访问这个ip的地址 80:对应的是内部的service的端口 32206:和内部service的80端口做映射 kubectl edit svc nginx1-service 进yaml修改服务端口 ![](https://file.jishuzhan.net/article/1740968519941492738/6f4e89efb257e69a9ed847b6da6ce51b.webp) LoadBalancer:如果service的类型设定为LoadBalancer,映射地址(云平台提供LoadBalancer的地址)这种用法仅用于公有云服务共用商在云台上设置的service的场景。外部来访问,实现负载均衡。LoadBalancer这个是地址是要付费的。创建好了service,指定类型为LoadBalancer,会给你提供一个地址来代理pod内部的ip地址 ExternalName:DNS映射,给service分配一个域名,通过域名来访问后端的pod资源。ExternalName的service类型,不能提供负载均衡,必须要设置LoadBalancer的地址才能实现 kubectl edit svc nginx2-service ![](https://file.jishuzhan.net/article/1740968519941492738/75e967c5a251fdbeecb339ebdfffb380.webp) kubectl get pod -o wide vim /etc/hosts 10.244.2.9 www.123.cc 总结: service的类型: ClusterIP 创建service的默认类型,提供一个集群内部的虚拟ip地址,这是service的默认类型,通过虚拟ip直接访问pod的资源,无法对外提供访问 NodePort:会在每个node节点上都开放一个相同的端口。外部可以通过node的本机ip+端口访问pod资源,集群外部访问service资源的一种方式,四层代理 LoadBalancer:如果service的类型设定为LoadBalancer,映射地址(云平台提供LoadBalancer的地址)这种用法仅用于公有云服务共用商在云台上设置的service的场景。外部来访问,实现负载均衡。LoadBalancer这个是地址是要付费的。创建好了service,指定类型为LoadBalancer,会给你提供一个地址来代理pod内部的ip地址 ExternalName:DNS映射,给service分配一个域名,通过域名来访问后端的pod资源。ExternalName的service类型,不能提供负载均衡,必须要设置LoadBalancer的地址才能实现

相关推荐
能不能别报错9 小时前
K8s学习笔记(十六) 探针(Probe)
笔记·学习·kubernetes
一水鉴天10 小时前
整体设计 逻辑系统程序 之18 Source 容器(Docker)承载 C/P/D 三式的完整设计与双闭环验证 之2
docker·架构·认知科学·公共逻辑
能不能别报错10 小时前
K8s学习笔记(十四) DaemonSet
笔记·学习·kubernetes
飞快的蜗牛12 小时前
利用linux系统自带的cron 定时备份数据库,不需要写代码了
java·docker
火星MARK12 小时前
k8s面试题
容器·面试·kubernetes
香吧香13 小时前
Docker Registry 使用总结
docker
赵渝强老师13 小时前
【赵渝强老师】Docker容器的资源管理机制
linux·docker·容器·kubernetes
haicome14 小时前
deepseek部署
docker·ragflow·deepseek 部署
能不能别报错14 小时前
K8s学习笔记(十五) pause容器与init容器
笔记·学习·kubernetes
稚辉君.MCA_P8_Java15 小时前
kafka解决了什么问题?mmap 和sendfile
java·spring boot·分布式·kafka·kubernetes