Kubectl命令指南

一.认识kubectl

kubectl是kubernetes集群的命令行工具。kubectl用于跟apiserver(集群访问的入口)进行通信,将用 户的命令组织并转化为apiserver能识别的信息,进而实现管理k8s的各种资源。

-命令格式

kubectl .[command].[type].[name].[flags]
-命令说明

comand:指定要对资源执行的操作,例如create、get、delete等等

type:指定资源类型,比如deployment、pod、service,可以指定单数、复数和缩写形式

name:指定资源的名称,名称大小写敏感

flags:指定额外的可选参数
-命令举例:
#查看所有node

kubectl get nodes / kubectl get node / kubectl get no
#查看某个pod
kubectl get pod pod名字

#查看所有pod,以"宽屏"格式展示结果

kubectl get pod -o wide

二.认识kubernetes资源

这一部分,针对kubectl命令的"type"部分展开讲解。kubernetes中所有的内容都抽象为资源,可以通过下面的命令进行查看:
查看所有资源

kubectl api-resources

结果各个列的含义说明如下

NAME 资源的名称

SHORTNAMES 资源的简写名称

APIVERSION 资源的版本

NAMESPACED 可否用命名空间隔离

KIND 资源的类型
特别说明:用命名空间隔离的资源,操作该资源时需要增加-n参数指定所属的命名空间名字。

三.对资源的操作

这一部分,针对kubectl命令的"comand"部分展开讲解。

Kubectl分为"声明式管理" 和 "命令式管理"
声明式管理:

apply -f yaml文件
命令式管理:

创建: create | expose

更新: scale | annotate | label

删除: delete

资源查看: get | describe

容器管理: logs | exec | cp

集群管理: chuster-info | version | drain

3.1命令式管理

命令式管理,顾名思义即编写命令时直接管理资源,学习时和测试的场景下使用频繁。

3.1.1创建和删除

定义一个Deployment(自动新建pod)来运行Nginx

kubectl create deploy my-nginx --image=nginx:latest

对外暴露Nginx(自动新建service)

kubectl expose deploy my-nginx --port=80 --type=Nodeport

3.1.2资源查看

常用的包括get、describe。get用于查看资源当前的状态,describe用于查看资源的详细信息。
#查看my-nginx的pod状态
kubectl get pod | grep my-nginx
#查看my-nginx的service状态
kubectl get svc my-nginx
#查看my-nginx的pod详细信息
kubectl describe pod my-nginx
#查看my-nginx的service详细信息
kubectl describe svc my-nginx

3.1.3容器管理

常用的包括logs、exec和cp。

logs 查看pod的容器日志,如果pod中仅一个容器,可省略容器名称

kubectl logs -f pod名[-c container名]
#exec进入nginx-container的容器内
kubectl exec -it pod名[-c container名]--/bin/bash
#cp用于pod和外部的文件交换,该命令依赖于容器镜像中的"tar"命令
yum update && yum install tar
tar --version
#pod中容器的文件复制到本地(tar默认相对路径,而不是绝对路径;自动创建不存在的目录)
kubectl cp pod名:source local [-c container名]
#本地的文件复制到pod中容器
上一条命令交换 source和local位置即可

3.2声明式管理
mar kdown

声明式管理,是通过YANL文件直接配置和管理资源。YAML是一种简洁的非标记性语言,实战中多以此方式管理集群。
定义Deployment:
#api的版本,通过"kubectl api-versions"查看当前K85可用的版本列表
apiVersion: apps/v1
#资源类型,通过"kubectl api-resources"可查看
kind: Deployment
#资源的元数据
metadata:
#资源的标签
labels:
app: my-nginx
#资源名
name: my-nginx
#资源所在命名空间(默认default)
namespace: default
#资源的规格(资源详细配置)
spec:
#副本数量(默认1)
replicas: 1
#标签选择器
selector:
#匹配标签,需与上面的标签定义的app保持一致
matchLabels:
app: my-nginx
#模板
temnlate:
#模板元数据
metadata:
#模板的标签
labels
app:my-nginx
#模板详细配置
spec:
#Pod容器列表
containers:
#容器名字
name: nginx-container
#容器镜像
image: nginx: latest
容器暴露的端口列表
ports
containerPort: 80
暴露Nginx服务:
#api的版本,通过"kubectl api-versions"查看当前K8s可用的版本列表
apiVersion:v1
#资源类型,通过"kubectl api-resources"可查看
kind: Service
#资源的元数据
metadata:
#资源名
name:my-nginxl
#资源所在命名空间(默认default)
namespace: default
#资源的规格(资源详细配置)
spec:
#服务类型
type: NodePort
#标签选择器(据此与my-nginx Deployment关联)
selector:
app:my-nginx
#服务的端口列表
ports:
#服务监听的容器端口
port: 80

服务端口

targetPort: 80
节点端口(默认在30000~32767自动分配)
nodePort:30080
使用命令快速生成YAML:
#试运行
kubectl create deploy my-nginx --image=nginx:latest --dry-run=client -b yaml
kubectl expose deploy my-nginx --port=80 --type=NodePort --dry-run=client -o yaml
#导出已运行
kubectl get deploy my-ninx -o yaml > nginx.yaml

相关推荐
小周技术驿站2 小时前
Docker服务详解
运维·docker·容器
zjeweler2 小时前
开发者资源一站式获取:高效查找服务器折扣与学习资料指南
运维·服务器
Devin~Y2 小时前
大厂Java面试实战:Spring Boot + Redis + Kafka + Kubernetes + RAG 的三轮追问(附答案解析)
java·spring boot·redis·spring cloud·kafka·kubernetes·resilience4j
光电笑映2 小时前
Linux C/C++ 开发工具(下):make/Makefile、进度条小程序与 gdb 调试器
linux·c语言·c++
lizz312 小时前
使用 nsys + gdb 寻找阻塞 API (cuKernelSetAttribute) 并解决
linux·cuda·sglang
南境十里·墨染春水2 小时前
linux学习进展 网络基础
linux·网络·学习
实心儿儿2 小时前
Linux —— 基础IO - 一切皆文件 + 缓冲区
linux·运维·服务器
实心儿儿2 小时前
Linux —— 基础IO - 自己实现libc库
linux
zjeweler2 小时前
云服务搭建游戏服务器实战指南
运维·服务器·游戏