K8s常用命令

Namespace

默认情况下,kubernetes集群中的所有的Pod都是可以相互访问的。但是在实际中,可能不想让两个Pod之间进行互相的访问,那此时就可以将两个Pod划分到不同的namespace下。kubernetes通过将集群内部的资源分配到不同的Namespace中,可以形成逻辑上的“组”,以方便不同的组的资源进行隔离使用和管理。

kubernetes在集群启动之后,会默认创建几个namespace

名称含义
default所有未指定Namespace的对象都会被分配在default命名空间
kube-node-lease集群节点之间的心跳维护,v1.13开始引入
kube-public此命名空间下的资源可以被所有人访问(包括未认证用户)
kube-system所有由Kubernetes系统创建的资源都处于这个命名空间

Namespace的名字遵循如下要求:

  1. 不能以kube-作为前缀。
  2. 最多63个字符。
  3. 只能是小写字母和数字,或者-中划线。
  4. 首字符必须是字母或数字。
  5. 尾字符必须是字母或数字。
  6. 无法更新。

备注:命名空间的命名规则可以使用正则[a-z0-9]([-a-z0-9]*[a-z0-9])?和最大63字符来约束。

查看namespace

kubectl get ns
或者
kubectl get namespace

在这里插入图片描述

创建namespace

(1)使用命令行方式创建

kubectl create namespace test-01

在这里插入图片描述

(2)使用yaml文件创建

创建一个名为test-02.yaml的yaml文件

apiVersion: v1
kind: Namespace
metadata:
  name: test-02

然后使用如下命令进行创建

kubectl create -f test-02.yaml
或
kubectl apply -f test-02.yaml

在这里插入图片描述

删除namespace

(1)命令行方式删除

kubectl delete ns/test-01

在这里插入图片描述

(2)使用yaml文件删除

如果Namespace是使用yaml文件创建的,也可以使用yaml文件进行删除

kubectl delete -f test-02.yaml

在这里插入图片描述

Pod

Pod 是 k8s 系统中可以创建和管理的最小单元,是资源对象模型中由用户创建或部署的最小资源对象模型,也是在 k8s 上运行容器化应用的资源对象。k8s 不会直接处理容器,而是通过 Pod。Pod 是由一个或多个 container 组成的。

Pod 是 Kubernetes 的最重要概念,每一个 Pod 都有一个特殊的被称为“根容器”的 Pause容器。Pause 容器对应的镜像属于 Kubernetes 平台的一部分,除了 Pause 容器,每个 Pod还包含一个或多个紧密相关的用户业务容器。

Kubernetes 集群中的 Pod 主要有两种用法:

  • 运行单个容器的 Pod:“每个 Pod 一个容器”模型是最常见的 Kubernetes 用例; 在这种情况下,可以将 Pod 看作单个容器的包装器,并且 Kubernetes 直接管理 Pod,而不是容器。

  • 运行多个协同工作的容器的 Pod: Pod 可能封装由多个紧密耦合且需要共享资源的共处容器组成的应用程序。 这些位于同一位置的容器可能形成单个内聚的服务单元 —— 一个容器将文件从共享卷提供给公众, 而另一个单独的“边车”(sidecar)容器则刷新或更新这些文件。 Pod 将这些容器和存储资源打包为一个可管理的实体。

查看Pod

查看默认命名空间的Pod

kubectl get pods

如果Pod指定了在某个命名空间的话,需要指定命名空间,否则无法查看。查看特定命名空间的Pod,比如Namespace为kube-system下的Pod

kubectl get pods -n kube-system
或
kubectl get pods --namespace kube-system

查看所有Pod

kubectl get pods -A

在这里插入图片描述

创建Pod

(1)命令行方式

kubectl run nginx --image=nginx

其中,nginx为pod名字,--image=nginx表示使用Nginx镜像。除此之外,还能用--image-pull-policy指定镜像拉取策略。k8s的镜像拉取策略主要有以下三种:

策略解释
Always总是从镜像仓库获取镜像。当标签为latest,默认为Always
Never禁止从仓库中获取镜像,只能使用本地镜像
IfNotPresent仅当本地没有镜像时,才从镜像仓库获取镜像。当标签为自定义时(不是latest),默认为IfNotPresent

查看pod,STATUS为Running就表示pod创建成功

kubectl get pods

在这里插入图片描述

通过describe命令确定ip

kubectl describe pod nginx

其中nginx为pod的名字

在这里插入图片描述

通过该ip访问nginx也确实起来了

在这里插入图片描述

(2)使用yaml文件创建

创建一个名为test_pod.yaml的yaml

apiVersion: v1  #api版本
kind: Pod       #创建的资源
metadata:
  name: pod-test    #Pod的名字
  namespace: default   #指定命名空间
  labels:
    name: pod-test  #Pod具有的标签
spec:
  containers:
  - name: pod-test    #Pod里容器的名字,这里必须要用-,不加就报错
    image: nginx:latest  #容器使用的镜像
    imagePullPolicy: IfNotPresent  #镜像拉取策略
    ports:
    - containerPort: 80  #容器暴露的端口,这里必须要用-,不加就报错

然后使用如下命令创建:

kubectl create -f test_pod.yaml

在这里插入图片描述

删除Pod

(1)命令行方式删除

kubectl delete pod nginx

其中,nginx是pod的名字。如果Pod在某个命名空间,也需要指定-n参数。如果删除速度比较慢的话可以加--force

在这里插入图片描述

(2)使用yaml文件

如果Pod是使用yaml文件创建的,也可以使用yaml文件删除

kubectl delete -f test_pod.yaml

在这里插入图片描述

(3)删除所有Pod

kubectl delete pods --all

执行容器命令

(1)执行pod的某个命令,默认使用pod的第一个容器执行

kubectl exec <pod-name> -- command

例如:让名为pod-test的pod执行ls命令

kubectl exec pod-test -- ls

在这里插入图片描述

(2)指定pod的某个容器执行命令

kubectl exec <pod-name> -c <container-name> -- date

在这里插入图片描述

(3)进入容器

kubectl exec -it <pod-name> -c <container-name> -- /bin/bash

用exit即可退出容器

在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

h0l10w

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值