K8S 使用(1)- 基本命令

根据上文完成部署k8s后,我们需要了解如何使用k8s.首先我们需要了解如何使用K8S的一些基础命令及主要概念。

尚不清楚如何部署的请参考:单master部署简要步骤

如果您熟悉了k8s基本命令,可以跳过此章节。

目录

先看一下这张图

2. 节点  node

3. pod - 最小可部署的计算单元

4. 服务  service

5. 部署控制器 deployment

4. 任务/作业  job


先看一下这张图

1. 命名空间  namespace

此处的命名空间就如同代码语言中命名空间,主要起分组的作用。

  • 创建一个namespace
kubectl create namespace <namespace名称>

执行后,系统会提示:
namespace/dev created

  • 获取namespace
kubectl get ns

运行结果示例:

NAME              STATUS   AGE
default           Active   18h
kube-flannel      Active   59m
kube-node-lease   Active   18h
kube-public       Active   18h
kube-system       Active   18h

大家可以看到,此处ns就是namesapce的缩写

默认的namespace是default

2. 节点  node

node是k8s主要的载体单位,承载1个或多个pod。有master和子节点的区分。常规master节点不安装业务pod。

节点信息通过k8s api控制(增删查改),并保存在etcd上。

节点可以是真是主机,也可以是虚拟设备。

Pod、容器与Node的关系图:

查看节点信息

kubectl describe node <节点名称>

3. pod - 最小可部署的计算单元

1 pod = 1 Pause容器 + n * User Container  

Pod里的多个业务容器:共享Pause容器的IP、共享Pause容器挂接的Volume(数据卷)

  • 在此namespace下创建并运行一个nginx的Pod
kubectl run pod --image=nginx:latest -n dev


kubectl run --generator=deployment/apps.v1 is DEPRECATED and will be removed in a future version. Use kubectl run --generator=run-pod/v1 or kubectl create instead.
deployment.apps/pod created

  • 查看namespace ( 这里是dev)下的pod
kubectl get pod -n dev


NAME  READY   STATUS    RESTARTS   AGE
pod-xx   1/1     Running   0          21s

此外常用参数还有--show-labels,显示pod标签

[root@n22 ~]# kubectl get pods --show-labels
NAME                   READY   STATUS      RESTARTS   AGE    LABELS
hello-28104718-2v2xp   0/1     Completed   0          5m8s   controller-uid=ee2cf0e0-59de-4656-8713-ae0c182edae5,job-name=hello-28104718

  • 删除指定的pod
kubectl delete pod nginx-7cbb8cd5d8-b28pc

成功提示:pod "nginx-7cbb8cd5d8-b28pc" deleted

  • 删除指定的namespace,这里是dev
kubectl delete ns dev

成功提示:namespace "dev" deleted

4. 服务  service

service引入主要是解决pod的动态变化,提供统一的访问入口。

5. 部署控制器 deployment

一个 Deployment 为 Pod 和 ReplicaSet 提供声明式的更新能力。

使用场景:
    1、创建一个Deplyment对象来生成对应的ReplicaSet,并完成Pod副本的创建过程。
    2、检查Deployment的状态来看部署动作是否完成(Pod副本的数量是否达到预期的值)。
    3、更新Deployment以创建新的Pod(eg:镜像升级)。
    4、如果当前Deployment不稳定,则回滚到一个早先的Deployment版本。
    5、暂停和恢复Deployment,以便于一次性修改多个PodTemplateSpec 的配置项,之后再恢复Deployment,进行新的发布。
    6、扩容和所容。扩容情况下,Deployment可以应对更高的负载。
    7、查看Deployment的状态,以此作为发布是否成功的指标。
    8、清理不再需要的旧版本ReplicaSets。

这里需要说明几点:

     1、development不是必须的

     2、development可以被用来管理多个pod,避免用户单独维护pod

  • 查看创建的deployment
kubectl get deployments
  • 创建deployment

        一般采用yaml配置文件的方式创建development ,配置文件参考:集群管理 | Kubernetes

kubectl apply -f nginx-deployment.yaml 
  • 更新deployment

        更新版本

kubectl set image deployment/nginx nginx=nginx:1.22.1

        查看更新进度

kubectl rollout status deployment/nginx

        编辑deployment来更新,编辑保存后会自动更新配置

kubectl edit deployment/nginx
  • 删除deployment

如果同一个配置文件中包含多个资源对象,可以批量删除

kubectl delete -f https://k8s.io/examples/application/nginx-app.yaml

单个deployment删除

kubectl delete deployment/nginx

4. 任务/作业  job

任务是定时执行指定任务的一个功能,比较常用的。Linux服务之前通常使用crontab完成。 

使用yanml文件进行配置

应用配置文件:

kubectl apply -f k8scron-job-cron.yaml 

删除job

# 删除指定job

kubectl delete job <job-name>

# 删除已完成job
kubectl delete job $(kubectl get jobs | awk '$3 ~ 1' | awk '{print $1}')

# 删除未完成job
kubectl delete job $(kubectl get jobs | awk '$3 ~ 0' | awk '{print $1}')

可以看作资源对象的有:Node、Pod、Replication Controller、Service

参考文章:

 K8S核心概念及名词讲解(kubernetes 前言篇)_爵影子的博客-CSDN博客 k8s之Service_k8s service_江南道人的博客-CSDN博客

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值