k8s(三):命令行工具kubectl与核心技术Pod

本文深入探讨了Kubernetes(k8s)的命令行工具kubectl的使用,包括其基本语法和示例。Pod作为k8s的核心概念,承载着容器化应用,具有资源共享、生命周期管理和网络平坦等特性。文章还介绍了Pod的拉取镜像策略、资源限制、重启策略以及健康检查。此外,详细阐述了影响Pod调度的因素,如节点选择器、节点亲和性和污点与污点容忍,这些都是精细调整和管理k8s集群的关键要素。
摘要由CSDN通过智能技术生成

1. kubectl

1.1 概述

是k8s集群的命令行工具,通过kubectl能够对集群本身进行管理,并能够在集群上进行容器化应用的安装部署;

1.2 kubectl命令语法

kubectl [command] [TYPE] [NAME] [flags]
  1. command: 指定要对资源执行的操作。例如:create、get、describe 和 delete
  2. TYPE:指定资源类型,资源类型是大小写敏感的,开发者能够以单数、复数和缩略的形式。例如:
kubectl get pod pod1

kubectl get pods pod1

kubectl get po pod1
  1. NAME: 指定资源的名称,名称也是大小写敏感的。如果省略名称,则会显示所有资源,例如:
kubectl get pods
  1. flags: 指定可选的参数。例如:-s或-server参数指定kubernates API server的地址和端口。

1.3 kubectl命令举例

【todo 待拓展】

2. 核心技术-Pod

2.1 概述

  1. Pod是k8s系统中可以创建和管理的最小单元,是资源对象模型中由用户创建或部署的最小资源对象模型,也是在k8s上运行容器化应用的资源对象,其他的资源对象都是用来支撑或扩展Pod对象功能的,比如控制器对象是用来管控Pod对象的,Service或者Ingress资源对象是用来暴露Pod引用对象的,PersistentVolume资源对象是用来为Pod提供存储功能等等,k8s不会直接处理容器,而是Pod,Pod是由一个或多个container组成的。

  2. Pod是k8s最重要的概念,每一个Pod都有一个特殊的被称为"根容器"的Pause容器。pause容器对应的镜像属于k8s平台的一部分,除了pause容器,每个pod还包含一个或多个紧密相关的业务容器。
    在这里插入图片描述

2.2 Pod特性

  1. 资源共享
    一个pod中的多个容器可以共享存储和网络,可以看作一个逻辑的主机
    一个pod中的多个容器可以共享存储卷,这个存储卷会被定义为Pod的一部分,并且可以挂载到改pod里的所有容器的文件系统上

  2. 生命周期短暂
    当pod所在节点发生故障,那么改节点上的pod会被调度到其他节点,需要注意的是,被重新调度的pod是一个全新的pod,跟之前的Pod没有关系。

  3. 平坦的网络
    K8s集群中,所有的pod都在同一个共享网络地址空间中,也就是说每个pod都可以通过其他pod的IP地址来实现访问

2.3 拉取镜像策略

在这里插入图片描述

2.4 资源限制

在这里插入图片描述

2.5 重启策略

在这里插入图片描述

2.6 健康检查

在这里插入图片描述

2.7 影响pod调度的属性

2.7.1 资源限制

在这里插入图片描述

2.7.2 节点选择器标签

(1)在使用节点选择器之前,首先需要对节点创建标签.
(为名称为node1的节点添加env_role=prod的标签)

kubectl label node node1 env_role=prod

(2)然后pod中指定节点选择器
在这里插入图片描述
表示将该pod调度到env_role=dev的标签节点上

2.7.3 节点的亲和性nodeAffinity

节点亲和性和之前nodeSelector基本一样,都是根据节点上的标签约束来决定pod调度到哪些节点上的。
(1)硬亲和性
约束条件必须满足。意味着必须部署在满足这些条件的节点上
在这里插入图片描述
(2)软亲和性
尝试满足。意思是最好部署在满足这些条件的节点上。
在这里插入图片描述

2.7.4 污点和污点容忍Taint

前面说到的nodeSelector和nodeAffinity都是pod的属性,调度时候实现; 而Taint污点不做普通分配调度,是节点属性。
(1)污点值有三个:
NoSchedule:一定不被调度
PreferNoSchedule:尽量不被调度
NoExceute:不会调度,并且还会驱逐Node中的已有pod
(2)查看节点污点情况

kubectl describe node k8snode1 | grep Taint

(3)节点添加污点
添加NoSchedule污点,则pod一定不会被调度到该节点上

kubectl taint node k8snode1 env_role=yes:NoSchedule

(4)节点删除污点

kubectl taint node k8snode1 env_role:NoSchedule-

(5)污点容忍度配置
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值