k8s常用的指令
Kubernetes资源管理与操作
1. 查看K8S集群的资源类型
通过kubectl api-resources
命令可以查看Kubernetes集群中可用的资源类型:
[root@master231 pods]# kubectl api-resources
该命令返回一列资源信息,包括资源名称、缩写、API版本、是否命名空间、资源类型等。例如:
- ConfigMap(cm)
- Pod(po)
- Service(svc)
- Node(no)
- 等等
2. 创建资源清单的目录
[root@master231 ~]# mkdir -pv /oldboyedu/manifests/pods
[root@master231 ~]# cd /oldboyedu/manifests/pods
3. 编写资源清单规范
apiVersion
:声明API的版本号,每个资源都有其对应的版本。kind
:指定资源的类型。metadata
:指定资源的元数据信息,包括名称、标签、名称空间等。spec
:资源的期望运行状态。status
:资源的实际运行状态,由Kubernetes组件维护。
4. 编写Pod资源清单
例如,创建一个名为xiuxian-v1
的Pod:
[root@master231 pods]# cat 01-pods-xiuxian-single.yaml
apiVersion: v1
kind: Pod
metadata:
name: xiuxian-v1
spec:
nodeName: worker232
containers:
- image: registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1
name: xiuxian
5. 创建资源
[root@master231 pods]# kubectl create -f 01-pods-xiuxian-single.yaml
如果Pod已经存在,create
命令会报错。要避免这种情况,可以使用apply
命令:
[root@master231 pods]# kubectl apply -f 01-pods-xiuxian-single.yaml
apply
命令在资源存在时不会报错,会显示unchanged
。
create
与apply
命令的区别:
- create:资源不存在时创建,若资源已存在则报错。
- apply:资源不存在时创建,资源已存在时更新。
6. 查看资源列表
[root@master231 pods]# kubectl get pods -o wide
返回资源的详细信息,如Pod的名称、状态、重启次数、IP地址等。
7. 删除资源
[root@master231 pods]# kubectl delete -f 01-pods-xiuxian-single.yaml
8. Pod内运行多个容器
环境准备:
通过docker load
命令加载并推送两个镜像到Harbor仓库。
[root@worker233 ~]# docker load -i alpine-v3.20.2.tar.gz
[root@worker233 ~]# docker tag alpine:3.20.2 harbor.oldboyedu.com/oldboyedu-linux/alpine:3.20.2
[root@worker233 ~]# docker push harbor.oldboyedu.com/oldboyedu-linux/alpine:3.20.2
创建包含两个容器的Pod:
[root@master231 pods]# cat 02-pods-xiuxian-alpine-multiple.yaml
apiVersion: v1
kind: Pod
metadata:
name: xiuxian-v2
spec:
nodeName: worker232
containers:
- image: harbor.oldboyedu.com/oldboyedu-web/xiuxian:v2
name: xiuxian
- image: harbor.oldboyedu.com/oldboyedu-linux/alpine:3.20.2
name: alpine
stdin: true
应用资源:
[root@master231 pods]# kubectl apply -f 02-pods-xiuxian-alpine-multiple.yaml
9. 使用kubectl exec
在容器中执行命令
查看Pod的IP地址:
[root@master231 pods]# kubectl exec xiuxian-v1 -- ifconfig
可以查看每个容器的IP地址。
在特定容器内执行命令:
[root@master231 pods]# kubectl exec xiuxian-v2 -c xiuxian -- sh
在xiuxian
容器中执行sh
命令。
查看容器内的进程:
/ # ps -ef
10. K8S声明式API与响应式API的对比
- 声明式API:需要编写资源清单文件(YAML文件),通过命令行
kubectl apply
来管理资源。修改后,需要重新应用资源清单文件才能生效。 - 响应式API:通过命令行直接操作资源,修改后立即生效。
11. 标签管理
查看资源的标签:
[root@master231 pods]# kubectl get pods -o wide --show-labels
添加标签:
[root@master231 pods]# kubectl label -f 01-pods-xiuxian-single.yaml school=oldboyedu class=linux92
删除标签:
[root@master231 pods]# kubectl label pods xiuxian-v1 address-
修改标签:
[root@master231 pods]# kubectl label -f 01-pods-xiuxian-single.yaml class=Linux92 --overwrite
12. 基于标签过滤资源
过滤Pod:
[root@master231 pods]# kubectl get pods -o wide --show-labels -l class=Linux92
删除基于标签过滤的Pod:
[root@master231 pods]# kubectl delete pods -l class=Linux92
13. 查看Pod的详细信息
使用kubectl describe
命令查看Pod或节点的详细信息:
[root@master231 pods]# kubectl describe pods xixi
14. 修改Pod的网络名称空间为宿主机模式
修改Pod配置以使用宿主机的网络:
[root@master231 pods]# cat 04-pods-hostNetwork.yaml
apiVersion: v1
kind: Pod
metadata:
name: xiuxian-hostnetwork
labels:
apps: xiuxian
school: oldboyedu
class: linux92
spec:
hostNetwork: true
nodeName: worker232
containers:
- image: registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1
name: xiuxian
创建Pod:
[root@master231 pods]# kubectl apply -f 04-pods-hostNetwork.yaml
使用宿主机IP访问Pod:
[root@master231 pods]# curl 10.0.0.232
总结
- 声明式管理:需要资源清单和
kubectl apply
。 - 响应式管理:通过命令行直接操作。
- 标签管理:可以通过标签来过滤和管理资源。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)