k8s集群命令使用

一: 查看信息

1.0 查看pod和node

kubectl get pod或node

bash 复制代码
#1.0  kubectl get node  查看node
[root@k8s-master ~]# kubectl get node 
NAME         STATUS   ROLES                  AGE   VERSION
k8s-master   Ready    control-plane,master   16d   v1.20.2
k8s-node1    Ready    <none>                 16d   v1.20.2
k8s-node2    Ready    <none>                 16d   v1.20.2
[root@k8s-master ~]# 

#2.0  kubectl get pod -A  # 查看pod ,这个-A表示所有命名空间
[root@k8s-master ~]# kubectl get pod -A
NAMESPACE     NAME                                       READY   STATUS    RESTARTS   AGE
kube-system   calico-kube-controllers-577f77cb5c-4wjcg   1/1     Running   1          16d
kube-system   calico-node-5nmgp                          1/1     Running   1          16d
kube-system   calico-node-pqtdr                          1/1     Running   1          16d
kube-system   calico-node-tjtzk                          1/1     Running   1          16d
kube-system   coredns-74ff55c5b-6lg2j                    1/1     Running   1          16d
kube-system   coredns-74ff55c5b-hm2kz                    1/1     Running   1          16d
kube-system   etcd-k8s-master                            1/1     Running   1          16d
kube-system   kube-apiserver-k8s-master                  1/1     Running   1          16d
kube-system   kube-controller-manager-k8s-master         1/1     Running   1          16d
kube-system   kube-proxy-4t425                           1/1     Running   1          16d
kube-system   kube-proxy-hd5vt                           1/1     Running   1          16d
kube-system   kube-proxy-xqngw                           1/1     Running   1          16d
kube-system   kube-scheduler-k8s-master                  1/1     Running   1          16d
[root@k8s-master ~]# 


# 3.0 kubectl get pod -n kube-system名称空间(查看指定namespace内POD)
[root@k8s-master ~]# kubectl get pod -n kube-system
NAME                                       READY   STATUS    RESTARTS   AGE
calico-kube-controllers-577f77cb5c-4wjcg   1/1     Running   1          16d
calico-node-5nmgp                          1/1     Running   1          16d
calico-node-pqtdr                          1/1     Running   1          16d
calico-node-tjtzk                          1/1     Running   1          16d
coredns-74ff55c5b-6lg2j                    1/1     Running   1          16d
coredns-74ff55c5b-hm2kz                    1/1     Running   1          16d
etcd-k8s-master                            1/1     Running   1          16d
kube-apiserver-k8s-master                  1/1     Running   1          16d
kube-controller-manager-k8s-master         1/1     Running   1          16d
kube-proxy-4t425                           1/1     Running   1          16d
kube-proxy-hd5vt                           1/1     Running   1          16d
kube-proxy-xqngw                           1/1     Running   1          16d
kube-scheduler-k8s-master                  1/1     Running   1          16d
[root@k8s-master ~]# 

# 4.0  kubectl get pod -A -o  wide  # -o参数表示详细观看

[root@k8s-master ~]# kubectl get pod -A -o wide 
NAMESPACE     NAME                                       READY   STATUS    RESTARTS   AGE   IP                NODE         NOMINATED NODE   READINESS GATES
kube-system   calico-kube-controllers-577f77cb5c-4wjcg   1/1     Running   1          16d   10.244.235.196    k8s-master   <none>           <none>
kube-system   calico-node-5nmgp                          1/1     Running   1          16d   192.168.255.166   k8s-master   <none>           <none>
kube-system   calico-node-pqtdr                          1/1     Running   1          16d   192.168.255.167   k8s-node1    <none>           <none>
kube-system   calico-node-tjtzk                          1/1     Running   1          16d   192.168.255.168   k8s-node2    <none>           <none>
kube-system   coredns-74ff55c5b-6lg2j                    1/1     Running   1          16d   10.244.235.197    k8s-master   <none>           <none>
kube-system   coredns-74ff55c5b-hm2kz                    1/1     Running   1          16d   10.244.235.198    k8s-master   <none>      

2.0 查看描述信息(重要)

kubectl describe pod名称

bash 复制代码
kubectl describe pod kube-proxy-bdtpg -n kube-system  # 上面是pod的状态,下面是容器的状态

3.0 查看pod运行日志

kubectl logs pod名称 -n 命名空间

bash 复制代码
# kubectl logs -f   kube-proxy-bdtpg -n kube-system

4.0 查看service服务

查看service服务(网络服务): kubectl get svc

bash 复制代码
[root@k8s-master ~]# kubectl get service 
NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP   16d
[root@k8s-master ~]# 


核心字段:TYPE(访问类型)、CLUSTER-IP(集群固定 IP)、PORT(S)(端口映射);
4 种类型:ClusterIP (集群内)、NodePort (节点访问)、LoadBalancer (云厂商公网)、ExternalName (访问外部);
核心逻辑:Pod 的 IP 是临时的,Service 的 IP 是永久的,所有访问走 Service;

5.0 查看集群信息

6.0 查看pod官方说明书

bash 复制代码
# 查看帮助信息
$ kubectl explain deployment
$ kubectl explain deployment.spec
$ kubectl explain deployment.spec.replicas

二: 资源管理

创建资源: 根据资源清单

  • kubectl apply or create -f <SOURCE_FILENAME>.yaml

删除资源: 根据资源清单

  • kubectl delete -f <SOURCE_FILENAME>.yaml

修改资源:根据反射出的etcd中的配置内容, 生产中不允许该项操作, 且命令禁止(应使用资源清单的形式)

  • kubectl edit <SOURCE_NAME> <SOURCE_NAME_RANDOM_ID> -n
bash 复制代码
kubectl edit = 直接修改 etcd 的核心配置,无校验、无记录、无回滚,生产环境绝对禁止;
etcd 是 K8s 的大脑,直接修改 etcd 就像给运行中的心脏做手术,风险致命;
生产环境修改配置的唯一正确方式:改本地 yaml 文件 → kubectl apply -f xxx.yaml;
K8s 是声明式 API,我们只需要声明最终要什么状态,让 K8s 自己去实现,而不是手动修改当前状态。

三: Yaml语法解析

1.0 简介

YAML是一个类似 XML、JSON 的标记性语言。它强调以数据为中心,并不是以标识语言为重点。因而YAML本身的定义比较简单,号称"一种人性化的数据格式语言"。

2.0 语法要求

YAML的语法比较简单,主要有下面几个:

  • 1、大小写敏感

  • 2、使用缩进表示层级关系

  • 3、缩进不允许使用 tab,只允许空格 (低版本限制)

  • 4、缩进的空格数不重要,只要相同层级的元素左对齐即可

  • 5、# 表示注释

yaml语法支持的几种数据类型:

  • 1、纯量:单个的、不可再分的值

  • 2、对象:键值对的集合,又称为映射(mapping)/ 哈希(hash)/ 字典(dictionary)

  • 3、数组:一组按次序排列的值,又称为序列(sequence)/ 列表(list)

补充:

  • 1、书写yaml切记: 后面要加一个空格
  • 2、如果需要将多段yaml配置放在一个文件中,中间要使用---分隔

3.0 创建namespace

通过声明式配置yaml 创建名称空间

  • 1.0 制作yaml文件
bash 复制代码
# vim namespace.yaml

apiVersion: v1              #api版本
kind: Namespace         #定义资源对象类型(可以是Pod,Service,Deployment)
metadata:                    #元数据
	name: webserver #命名空间的名字
  • 2.0 应用配置清单
bash 复制代码
# kubectl apply -f namespace.yaml
  • 3.0 查看命名空间
bash 复制代码
kubectl get namespace
  • 4.0 删除命名空间
bash 复制代码
# 删除名称空间[注意,这将删除名称空间下的所有资源]
$ kubectl delete namespace webserver

面试重点: kubectl apply和create的区别是什么?

create 是一次性创建命令,资源已存在时报错,仅适用于确认资源不存在的场景; apply 是声明式管理命令,支持创建 / 更新资源,重复执行无故障,是日常使用的首选; 核心区别:create 只有创建能力,apply 兼具创建和增量更新能力。

追问:

  • 获取当前资源的配置(可选,用于对比) kubectl get deploy nginx -o yaml > nginx-current.yaml
  • 编辑配置文件(修改需要更新的字段,比如副本数、镜像版本) vim nginx-deploy.yaml
  • 执行 apply 更新(核心命令) kubectl apply -f nginx-deploy.yaml
  • 验证更新结果 kubectl get deploy nginx # 查看副本数、状态 kubectl describe deploy nginx # 查看详细更新日志(比如镜像是否更新)
markdown 复制代码
1. 更新镜像版本
修改 yaml 中 spec.template.spec.containers[0].image 字段
yaml
spec:
  template:
    spec:
      containers:
        - name: nginx
          image: nginx:1.25 # 从 1.24 改成 1.25

2. 调整副本数
修改 spec.replicas 字段
yaml
spec:
  replicas: 5 # 从 3 改成 5


3. 添加环境变量
在 containers[0].env 中新增字段
yaml
containers:
  - name: nginx
    env:
      - name: ENV_NAME
        value: "prod"

追问:除 create/apply 外,常用的 K8s 资源管理命令?

  • 查看kubectl get

  • 详情kubectl describe

  • 获取 yaml 资源信息kubectl get -o yaml

  • 在线修改资源kubectl edit

  • 替换资源kubectl replace

  • 删除资源kubectl delete 说明:删除老资源,建立新资源,服务会短暂不可用

  • 批量应用配置kubectl apply -f dir/

  • 版本回滚kubectl rollout

示例:kubectl rollout undo deploy nginx 回滚 Deployment 版本

相关推荐
冰封之寂2 小时前
Docker 资源管理终极指南:CPU、内存与 IO 的精细化控制
linux·运维·服务器·docker·云计算
Linux-18742 小时前
分布式链路追踪系统之skywalking java agent 的使用、skywalking web界面简介
云原生·skywalking·分布式链路追踪系统·应用程序性能监控·halo博客系统·skywalking java agent·skywalking web 简介
xiaoye-duck2 小时前
《Linux系统编程》Linux 系统多线程(五):<线程同步与互斥>线程互斥(上):从条件变量到生产者消费者模型详解
linux·线程
小柯南敲键盘3 小时前
图片翻译API接入与自动化实现指南
运维·python·自动化
952364 小时前
Docker - 基础
运维·后端·docker·容器
Promise微笑4 小时前
智能激光清障仪选型指南:高效运维与安全保障的关键考量
运维·安全
Code_Ignis4 小时前
docker国内可用源(持续维护)
运维·docker·容器
一叶龙洲4 小时前
向日葵远程Ubuntu,支持隐私屏
linux·运维·ubuntu
酷可达拉斯5 小时前
Linux操作系统-shell编程之Grep与正则表达式
linux·运维·服务器·正则表达式·centos
寒水馨5 小时前
Linux下载、安装llama.cpp-b10068(附安装包llama-b10068-bin-ubuntu-vulkan-x64.tar.gz)
linux·ubuntu·llm·llama·本地部署·llama.cpp·推理引擎