随笔 - 378  文章 - 0  评论 - 5  阅读 - 6085

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

createapply命令的区别:

  • 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
  • 响应式管理:通过命令行直接操作。
  • 标签管理:可以通过标签来过滤和管理资源。
posted on   Leo-Yide  阅读(23)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示