k8s相关命令

一、Kubectl是什么

控制K8S通信的命令工具。

格式:

kubectl [command] [TYPE] [NAME] [FLAGS]

二、Kubectl命令

1.查看容器命令

bash 复制代码
kubectl get pod == kubectl get pod  -n default
#查看当前的命名空间的pod
kubectl get pod -A
#查看所有命名空间的pod
kubectl describe pod podName
#查看pod的日志

2.标签

bash 复制代码
#列出指定标签的pod 或node
kubectl get node -l nodeNum=node2
kubectl get pod  -l project  --show-labels
节点标签
bash 复制代码
kubectl label nodes node-1 nodeNum=node2
#给节点添加标签
kubectl get node  --show-labels
#查看节点的标签
kubectl label node node-1 node2-
#给节点删除标签
pod标签
bash 复制代码
kubectl get pod --show-labels
#查看标签
kubectl label pod my-replicaset-55w9w release=v1
#动态给pod打标签
格式化输出:
bash 复制代码
-o wide	
kubectl get pods pods NAME -o wide	
kubectl get nodes -o wide 
#查看扩展信息

-o json
kubectl get pod nginx11 -o json
#以json格式输出

-o yaml
kubectl get pod nginx11 -o yaml
kubectl get pod kube-system-sddcd  -n kube-system -o yaml
#以yaml格式输出

-o name
kubectl get pod -o name
#仅显示资源的名称

3.信息查看

bash 复制代码
kubectl api-resources
#列出 Kubernetes API 中所有可用的资源类型
kubectl get service
#列出集群中所有的 Service 资源
kubectl explain pod
#查看命令说明
kubectl version
#查看kube集群版本
kubectl cluster-info
# 查看集群信息

3.执行yaml文件

bash 复制代码
kubectl apply -f  case1.yaml
 #执行yaml文件
kubectl delete -f case1.yaml
 #删除pod

4.Namespace相关命令

命名空间适用于存在很多跨多个团队或项目的用户的场景。对于只有几到几十个用户的集群,根本不需要创建或考虑命名空间。

作用:

通常一个项目使用一个名称空间(命名空间),目的是为了隔离网络环境。

名称的资源限制:

如果命名空间添加资源限制,其后的每一个pod都要添加资源限制内容。

bash 复制代码
kubectl get namespace
# 列出集群环境所有的namespace
kubectl create ns test
# 创建一个namespace
kubectl config set-context --current --namespace=test
# 切换当前默认的namespace
kubectl config view
# 查看当前namespace
kubectl get pod -n test
#删除命名空间
#如果删除test命名空间,则test命名空间下的所有pod也一并删除。

三、yaml文件

Kubernetes 的 YAML 文件用于定义和配置 Kubernetes 资源。每种资源(如 Pod、Service、Deployment 等)都有其特定的 YAML 配置格式。

基本结构

一个典型的 Kubernetes YAML 文件包含以下主要部分:

apiVersion: 指定资源所用的 Kubernetes API 版本。
kind: 指定资源的类型,如 Pod、Service、Deployment 等。
metadata: 包含资源的元数据,如名称、标签、注解等。
spec: 资源的详细规格或配置。

示例:
bash 复制代码
apiVersion: v1  # API 版本,v1 表示这是 Kubernetes 的稳定版本
kind: Pod       # 资源类型,这里是 Pod,表示要创建一个 Pod 对象
metadata:
  name: my-pod  # Pod 的名称,用于在集群中唯一标识这个 Pod
spec:
  containers:
  - name: my-container   # 容器的名称,用于在 Pod 中唯一标识这个容器
    image: my-image:latest  # 容器使用的镜像,格式为 <镜像名>:<标签>,这里是 my-image 的 latest 标签
    imagePullPolicy: Always  # 镜像拉取策略,这里设置为 Always,表示每次启动容器时都从镜像仓库拉取最新的镜像
imagePullPolicy(Pod 拉取镜像策略)有三个取值:

Always 每次都下载最新镜像
Never 不会尝试获取镜像,如果镜像已经以某种方式存在本地,kubelet 尝试启动容器;否则,会启动失败
IfNotPresent 只有当镜像在本地不存在时才会拉取

默认镜像拉取策略:

当你(或控制器)向 API 服务器提交一个新的 Pod 时,你的集群会在满足特定条件时设置 imagePullPolicy 字段:

1.如果你省略了 imagePullPolicy 字段,并且容器镜像的标签是 :latest,imagePullPolicy 会自动设置为 Always

2.如果你省略了 imagePullPolicy 字段,并且没有指定容器镜像的标签,imagePullPolicy 会自动设置为 Always

3.如果你省略了 imagePullPolicy 字段,并且为容器镜像指定了非 :latest 的标签,imagePullPolicy 就会自动设置为 IfNotPresent

相关推荐
Johny_Zhao2 小时前
Docker + CentOS 部署 Zookeeper 集群 + Kubernetes Operator 自动化运维方案
linux·网络安全·docker·信息安全·zookeeper·kubernetes·云计算·系统运维
代码老y5 小时前
Docker:容器化技术的基石与实践指南
运维·docker·容器
掘金-我是哪吒9 小时前
分布式微服务系统架构第156集:JavaPlus技术文档平台日更-Java线程池使用指南
java·分布式·微服务·云原生·架构
阿里云云原生11 小时前
Serverless JManus: 企业生产级通用智能体运行时
云原生
Kookoos15 小时前
ABP VNext + Tye:本地微服务编排与调试
微服务·云原生·架构·tye
掘金-我是哪吒20 小时前
分布式微服务系统架构第157集:JavaPlus技术文档平台日更-Java多线程编程技巧
java·分布式·微服务·云原生·架构
掘金-我是哪吒20 小时前
分布式微服务系统架构第155集:JavaPlus技术文档平台日更-Java线程池实现原理
java·分布式·微服务·云原生·架构
朱杰jjj20 小时前
Docker容器中无法使用vim、vi命令处理
docker·容器·vim
东林牧之21 小时前
CICD[软件安装]:docker安装gitlab
docker·容器·gitlab
cui_hao_nan1 天前
Docker后端部署
运维·docker·容器