文章目录
-
- [`kubectl [command] [TYPE] [NAME] [flags]`](#
kubectl [command] [TYPE] [NAME] [flags]
) - [`kubectl run 资源名称 --image=镜像名称 --port=端口号`](#
kubectl run 资源名称 --image=镜像名称 --port=端口号
) - [`kubectl create -f 配置文件名称.yaml` `kubectl apply -f 配置文件名称.yaml`](#
kubectl create -f 配置文件名称.yaml
kubectl apply -f 配置文件名称.yaml
) - 快速编写yaml文件,通过命令导出新的yaml文件
- Kubernetes常见资源类型和缩写
- [`kubectl [command] [TYPE] [NAME] [flags]`](#
kubectl [command] [TYPE] [NAME] [flags]
- commad:对资源具体的操作,如create创建、 get获取 、 delete删除
- TYPE:指定资源类型,大小写敏感
- NAME:指定资源的名称,大小写敏感,如果省略名称则显示所有资源
- flags:指定可选的参数,如可用-s或者-server指定Kubernetes API server的地址和端口
example:
bash
#获取全部节点
kubectl get node
#获取全部pod
kubectl get pod
#查看某个pod内容
kubectl get pod pod_name
#获取全部名称空间
kubectl get ns
#查看创建的资源
kubectl get pod,svc,deploy
# 删除nginx pod,如果是靠deploy控制器创建的pod, 直接删除则会自动创建新的;
kubectl delete pod pod名称
# 如果需要删除则直接删除depoly控制器即可,pod会被删除
kubectl delete deploy xdclass-nginx
kubectl delete svc xdclass-nginx
kubectl run 资源名称 --image=镜像名称 --port=端口号
bash
kubectl run xdclass-nignx-pod --image=nginx:1.23.0 --port=80
kubectl create deployment xdclass-nginx --image=nginx:1.23.0
kubectl create -f 配置文件名称.yaml
kubectl apply -f 配置文件名称.yaml
yaml 例子:
yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx-deployment
spec:
replicas: 1
selector:
matchLabels:
app: nginx-pod
template:
metadata:
labels:
app: nginx-pod
spec:
containers:
- name: nginx
image: nginx:1.23.0
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- image: nginx:1.23.0
name: pod
ports:
- name: nginx-port
containerPort: 80
protocol: TCP
**kubectl create 和 kubectl apply的区别: **
- kubectl create 命令首次执行时会创建资源,当再次执行的时候会报错,因为资源名称在同一命名空间内是唯一的
- kubectl apply在首次执行的时候也会创建对应的资源,当再次执行的时候会根据配置文件进行升级、扩容等操作,即使配置文件没有变化也不影响
快速编写yaml文件,通过命令导出新的yaml文件
bash
#创建nginx资源文件并且不启动资源
kubectl create deployment xdclass-nginx --image=nginx:1.23.0 -o yaml --dry-run=client > nginx.yaml
#查看nginx.yaml
cat nginx.yaml
pod的yaml文件示例:
yaml
# pod的最基础的yaml文件最少需要以下的几个参数
apiVersion: v1 # API版本号,注意:具有多个,不同的对象可能会使用不同API
kind: Pod # 对象类型,pod
metadata: # 元数据
name: string # POD名称
namespace: string # 所属的命名空间
spec: # specification of the resource content(资源内容的规范)
containers: # 容器列表
- name: string # 容器名称
image: string # 容器镜像
必须存在的属性
参数名 | 字段类型 | 说明 |
---|---|---|
version | String | k8s API的版本,可使用kubectl api-versions命令查询 |
kind | String | 这里指定k8s资源的类型,比如Pod、Deployment |
metadata | Object | 元数据对象,固定写值metadata |
metadata-name | String | 元数据对象的名字,比如命名pod的名字 |
metadata-namespace | String | 元数据对象的命名空间 |
spec | Object | 详细定义对象,固定值写Spec |
spec.container[] | list | spec对象的容器列表定义 |
spec.container[].name | String | 容器对象的名字 |
spec.container[].image | String | 定义要用到的对象名称 |
Kubernetes常见资源类型和缩写
:::warning
常用资源分类和缩写
- 节点 nodes ,缩写 no
- 名称空间 namespaces,缩写ns
- pod资源 pods, 缩写 po
- pod控制器
- replicasets,缩写rs
- deployments,缩写 deploy
- 服务发现
- 统一pod对外接口 services ,缩写 svc
- 统一pod对外接口ingress ,缩写 ing
- 存储资源
- persistentvolumes,缩写pv
- persistentvolumeclaims,缩写pvc
:::
常用资源操作命令
命令分类 | 命令 | 翻译 |
---|---|---|
基本命令 | create | 创建资源 |
delete | 删除资源 | |
edit | 编辑资源 | |
get | 获取资源 | |
patch | 更新资源 | |
explain | 解释资源 | |
运行和调试 | run | 运行指定的镜像 |
expose | 暴露服务 | |
describe | 描述资源内部信息 | |
logs | 打印容器在 pod 中的日志 | |
attach | 进入运行中的容器 | |
exec | 执行容器中的一个命令 | |
cp | 在Pod内外复制文件 | |
scale | 扩容/缩容Pod的数量 | |
autoscale | 扩容/缩容Pod的数量 | |
高级命令 | apply | rc |
label | 标签 | |
其他命令 | cluster-info | 集群信息 |
version | 版本 |