k8s命令总结

kubectl命令解释

kubectl [command] [type] [name] [flags]

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

**type**:指定资源类型,比如deployment、pod、service

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

**flags**:指定额外的可选参数

输出示例

#进入POD里面输入 pod名称 和 命名空间名称
kubectl exec -it 【pod_name】 -n 【dev】 /bin/bash

#查看pod日志 pod名称 和 命名空间名称
kubectl logs 【pod_name】  -n 【dev】

# 查看所有pod
kubectl get pod -n dev

# 查看某个pod
kubectl get pod pod-name -n dev

# 查看某个pod,以yaml格式展示结果
kubectl get pod pod-name -o yaml

命令式操作:namespace/pod的创建和删除

命名空间namespace简写ns:相当于是一个小房间,与其他空间进行隔离
-n 代表指定空间

#查看namespce
[root@k8s-master ~]# kubectl get ns
#创建namespce
[root@k8s-master ~]# kubectl create ns dev
#在dev空间下创建指定nginx版本
[root@k8s-master ~]# kubectl run pod --image=nginx:1.17.1 -n dev 
#查看dev空间下创建的nginx-pod
[root@k8s-master ~]# kubectl get pod -n dev

在这里插入图片描述

#删除dev下面的pod
[root@k8s-master ~]# kubectl delete pod pod-cbb995bbf-729tp -n dev
#删除dev命名空间
[root@k8s-master ~]# kubectl delete ns dev

在这里插入图片描述

命令+yaml操作:namespace/pod的创建和删除

说明:指定namespace空间名为dev,指定pod名为nginxpod,在空间dev下,指定容器名称和镜像版本

#创建一个nginxpod.yaml文件
apiVersion: v1
kind: Namespace
metadata:
  name: dev

---

apiVersion: v1
kind: Pod
metadata:
  name: nginxpod
  namespace: dev
spec:
  containers:
  - name: nginx-containers
    image: nginx:latest
#创建
[root@k8s-master ~]# kubectl create -f nginxpod.yaml 
#查看
[root@k8s-master ~]# kubectl get -f nginxpod.yaml 
#删除
[root@k8s-master ~]# kubectl delete -f nginxpod.yaml

在这里插入图片描述

命令apply+yaml操作:namespace/pod创建

kubectl apply -f nginxpod.yaml

如果资源不存在,就创建,相当于 kubectl create
如果资源已存在,就更新,相当于 kubectl patch
在这里插入图片描述

扩展:kubectl如果想要在node节点上运行,需要把 ~/.kube 目录下的文件都拷贝到节点上
[root@k8s-master ~]# ls ~/.kube
[root@k8s-master ~]# scp -r ~/.kube node01:~/

在这里插入图片描述

namespace简称ns

主要作用是实现多套环境的资源隔离或者多租户的资源隔离

#查看所有命名空间
[root@k8s-master ~]# kubectl get ns
#创建dev空间
[root@k8s-master ~]# kubectl create ns dev
#查看dev空间
[root@k8s-master ~]# kubectl get ns dev
#删除dev空间
[root@k8s-master ~]# kubectl delete ns dev

#查看ns详情  命令:kubectl describe ns ns名称
[root@master ~]# kubectl describe ns default
Name:         default
Labels:       <none>
Annotations:  <none>
Status:       Active  # Active 命名空间正在使用中  Terminating 正在删除命名空间

# ResourceQuota 针对namespace做的资源限制
# LimitRange针对namespace中的每个组件做的资源限制
No resource quota.
No LimitRange resource.

yaml配置方式

apiVersion: v1
kind: Namespace
metadata:
  name: dev

Pod

Pod是k8s集群进行管理的最小单元,程序要运行必须部署在容器中,而容器必须存在于Pod中。

Pod可以认为是容器的封装,一个Pod中可以存在一个或者多个容器。

# 创建并运行
# 命令格式: kubectl run (pod控制器名称) [参数] 
# --image  指定Pod的镜像
# --port   指定端口
# --namespace  指定namespace
kubectl run nginx --image=nginx:1.17.1 --port=80 --namespace=dev
#查看pod信息
kubectl get pod -n dev
#查看pod运行的节点IP等信息
kubectl get pod -n dev -o wide
#查看pod运行日志
kubectl logs nginx -n dev
#用describe分析pod启动相关信息
kubectl describe  pod nginx -n dev
#查看dev空间下的deploy名称
kubectl get deploy -n dev
#删除dev空间下nginx1的deploy,对应的pod就被删除了
kubectl delete deploy nginx1  -n dev

yaml配置方式

apiVersion: v1
kind: Pod
metadata:
  name: nginx
  namespace: dev
spec:
  containers:
  - image: nginx:latest
    name: pod
    ports:
    - name: nginx-port
      containerPort: 80
      protocol: TCP

Lable

Label作用就是在资源上添加标识,用来对它们进行区分和选择
标签需要 key=value

#查看dev空间下的pod标签
kubectl get pod -n dev --show-labels
#添加标签为 version=1.0
kubectl label pod nginx -n dev  version=1.0
#更新标签 version=2.0 
kubectl label pod nginx -n dev  version=2.0 --overwrite
#筛选标签等于 version=2.0 的
kubectl get pod -n dev -l version=2.0 --show-labels
#删除标签 version
kubectl label pod nginx -n dev version-

yaml配置方式

apiVersion: v1
kind: Pod
metadata:
  name: nginx
  namespace: dev
  labels:
    version: "3.0" 
    env: "test"
spec:
  containers:
  - image: nginx:latest
    name: pod
    ports:
    - name: nginx-port
      containerPort: 80
      protocol: TCP

Deployment简称deploy

k8s中Pod控制器的种类有很多,Deployment是其中一种

# 命令格式: kubectl create deployment名称  [参数] 
# --image  指定pod的镜像
# --port   指定端口
# --replicas  指定创建pod数量
# --namespace  指定namespace
# 创建一个deploy名字为nginx 镜像是nginx:latest 端口80  pod副本数replicas=3 空间dev
kubectl run nginx --image=nginx:latest --port=80 --replicas=3 -n dev
#查看deploy,pod
kubectl get deploy,pod -n dev
#查看deploy详细信息
kubectl describe deploy nginx -n dev
#删除delpoy后,下面的pod也都会删除
kubectl delete deploy nginx -n dev

yaml配置方式

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
  namespace: dev
spec:
  replicas: 3
  selector:
    matchLabels:
      run: nginx
  template:
    metadata:
      labels:
        run: nginx
    spec:
      containers:
      - image: nginx:latest
        name: nginx
        ports:
        - containerPort: 80
          protocol: TCP

Service简称svc

Service可以看作是一组同类Pod对外的访问接口。借助Service,应用可以方便地实现服务发现和负载均衡。

#创建svc集群内网访问  --type=ClusterIP
#暴露svc 暴露deploy名称是:nginx的 svc名称设置为:svc-nginx1 类型是:ClusterIP 端口:80 目标端口:80
kubectl expose deploy nginx --name=svc-nginx1 --type=ClusterIP --port=80 --target-port=80 -n dev
#创建svc集群外网访问  --type=NodePort
kubectl expose deploy nginx --name=svc-nginx2 --type=NodePort --port=80 --target-port=80 -n dev
#查看vc
kubectl get svc -n dev
#删除svc
kubectl delete svc svc-nginx1 -n dev

yaml配置方式

apiVersion: v1
kind: Service
metadata:
  name: svc-nginx
  namespace: dev
spec:
  clusterIP: 10.109.179.232 #固定svc的内网ip
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    run: nginx
  type: ClusterIP

镜像拉取说明

创建pod-imagepullpolicy.yaml文件

apiVersion: v1
kind: Pod
metadata:
  name: pod-imagepullpolicy
  namespace: dev
spec:
  containers:
  - name: nginx
    image: nginx:1.17.1
    imagePullPolicy: Never # 用于设置镜像拉取策略
  - name: busybox
    image: busybox:1.30

imagePullPolicy,用于设置镜像拉取策略,kubernetes支持配置三种拉取策略:

  • Always:总是从远程仓库拉取镜像(一直远程下载)
  • IfNotPresent:本地有则使用本地镜像,本地没有则从远程仓库拉取镜像(本地有就本地 本地没远程下载)
  • Never:只使用本地镜像,从不去远程仓库拉取,本地没有就报错 (一直使用本地)

默认值说明:

如果镜像tag为具体版本号, 默认策略是:IfNotPresent

如果镜像tag为:latest(最终版本) ,默认策略是always

进入kubectl的pod下面的容器命令

# 命令: kubectl exec  pod名称 -n 命名空间 -it -c 容器名称 /bin/sh  
# 使用这个命令就可以进入某个容器的内部,然后进行相关操作了
[root@k8s-master01 pod]# kubectl exec pod-busybox -n dev -it -c busybox /bin/sh
<think>好的,我现在需要帮助用户查找与Kubernetes相关的命令列表及用法。根据用户提供的引用资料,我需要整理这些信息,并确保符合用户的要求。首先,用户提到了多个引用,其中引用[2]和引用[3]详细列出了kubectl命令分类和具体子命令,而引用[4]和引用[5]则提供了创建Pod和添加hosts解析的示例。我需要将这些信息系统地组织起来,让用户能够清晰地了解不同命令的类别和用途。 首先,我应该按照命令的分类来划分,比如基本命令、运行和调试命令、高级命令等,这样用户查找起来更方便。引用[3]已经将命令分成了基本命令、运行和调试、高级命令和其他命令,这可能是一个很好的结构。接下来,我需要确保每个命令都有简短的说明,并引用对应的参考资料,比如引用[2]或引用[3]来支持这些分类和描述。 另外,用户可能需要具体的用法示例,比如如何使用kubectl create或kubectl apply。引用[4]中提到了使用YAML文件创建资源的方法,比如pod - def.yaml,以及kubectl run创建Pod的例子。这些示例需要被包含在相应的命令解释中,帮助用户理解如何实际操作。 同时,用户可能对如何查看资源状态、调试容器等常见操作感兴趣,比如使用kubectl describe、kubectl logs等命令。引用[3]中提到的describe、logs、exec等命令都属于运行和调试类别,这部分需要详细说明每个命令的作用和示例。 需要注意的是,用户要求回答中引用的段落末尾自然地添加引用标识,例如[^1]。因此,在整理每个命令或示例时,必须确认其对应的引用来源,并正确标注。例如,命令分类的信息来自引用[3],创建资源的部分来自引用[4],hosts解析来自引用[5]等。 此外,用户可能希望了解如何组合使用这些命令,或者在不同场景下应该使用哪些命令。比如,创建资源时可以选择create或apply,而调试时可能需要logs和exec的组合。在整理过程中,需要考虑到这些实际应用场景,给出相应的建议和示例。 最后,生成的相关问题需要围绕用户可能进一步询问的方向,比如如何创建特定资源、如何调试Pod中的容器、如何扩展应用实例数量等。这些问题应该基于提供的引用内容,确保答案在现有资料中有据可依。 总结下来,我的回答结构应该是: 1. 分类列出Kubernetes命令,如基本命令、运行与调试、高级命令等,每个类别下列出具体命令及其用途,并标注引用来源。 2. 提供常用命令的具体用法示例,如create、apply、run等,结合引用中的YAML文件和命令行示例。 3. 添加其他实用技巧,如hosts解析的设置方法,引用[5]中的内容。 4. 生成相关问题,引导用户深入了解具体命令的使用或场景应用。 需要确保所有命令和示例正确无误,引用标记准确,并且语言简洁明了,符合中文表达习惯。同时,避免使用任何Markdown格式,保持回答的自然流畅。</think>### Kubernetes 命令列表及用法 #### 一、命令分类与功能 1. **基本命令** - `create`:通过文件或输入创建资源,例如: ```bash kubectl create -f pod-def.yaml # 使用YAML文件创建Pod[^4] ``` - `get`:查看资源状态,如`kubectl get pods` - `delete`:删除资源,如`kubectl delete pod nginx` - `edit`:直接编辑资源配置 - `explain`:查看资源文档(如字段说明)[^3] 2. **运行与调试命令** - `logs`:查看容器日志,例如: ```bash kubectl logs nginx-pod -c nginx-container # 查看指定Pod内容器的日志 ``` - `exec`:在容器内执行命令,如: ```bash kubectl exec -it nginx-pod -- /bin/bash # 进入Pod的交互式终端 ``` - `describe`:显示资源详细信息(如事件、状态),例如: ```bash kubectl describe pod nginx-pod # 诊断Pod启动失败原因 ``` 3. **高级命令** - `apply`:通过文件声明式管理资源(推荐用于生产环境): ```bash kubectl apply -f deployment.yaml # 创建或更新资源 ``` - `scale`:手动扩缩容,如: ```bash kubectl scale deployment/nginx --replicas=3 # 将实例数调整为3 ``` 4. **快速操作命令** - `run`:快速启动临时Pod: ```bash kubectl run nginx --image=nginx # 创建一个运行nginx镜像的Pod ``` #### 二、实用示例 1. **通过YAML创建资源** 编写`deployment.yaml`后执行: ```bash kubectl apply -f deployment.yaml # 创建Deployment ``` 2. **添加本地Hosts解析** 在Pod配置中添加: ```yaml hostAliases: - ip: 192.168.1.135 hostnames: - "test.app.com" # 自定义域名解析[^5] ``` 3. **资源暴露与访问** ```bash kubectl expose deployment nginx --port=80 # 将Deployment暴露为Service ``` #### 三、命令语法结构 通用格式: ```bash kubectl [command] [资源类型] [名称] [flags] ``` - **示例**: ```bash kubectl get pods -n default # 查看default命名空间的Pod[^2] ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值