k8s中CRI、OCI、CRI-O、RUNC和containerd介绍

CRI(ContainerRuntimeInterface,容器运行时接口)是kubernetes定义的接口,定义了如何操作容器和镜像的统一规范,它主要包含ImageService和ContainerService。因为它已经是一个标准,所以你可以选择任何一个CRI的实现(containerd和CRI-O)来使用。CRI-O也是一个CRI的实现,它来自于RedHat/IBM等OCI(OpenContainerInitialtive)提供了容器镜像和运行容器的规范。runc是OCI的一个实现,它是一个创建和运行容器进程的工具。RUNC实际上是...

阅读全文

k8s组件kubelet功能和模块详解

kubelet是运行在每个节点上的主要的"节点代理",每个节点都会启动kubelet进程,用来处理Master节点下发到本节点的任务,按照PodSpec描述来管理Pod和其中的容器(PodSpec是用来描述一个pod的YAML或者JSON对象)。kubelet通过各种机制(主要通过apiserver)获取一组PodSpec并保证在这些PodSpec中描述的容器健康运行。kubelet默认监听四个端口,分别为10250、10255、10248、4194。LISTEN 0&...

阅读全文

k8s资源中的resourcequotas

k8s中可以对namespace来做资源限制,主要通过ResourceQuota对象来定义资源配额限制,它可以限制命名空间中某种类型的对象的总数目上限,也可以限制命令空间中的Pod可以使用的计算资源的总上限。首先我们可以检查是否本集群开启了资源配额kubectl api-resources | grep quota#返回resourcequotas             ...

阅读全文

k8s设置pod特权privileged的方法

k8s部署es的时候需要初始化很多linux的内核参数。但是文件系统挂载到pod容器中就会变成read-only,难以进行操作实现需求。所以需要给PODprivileged权限,然后在容器的初始化脚本或代码中去修改sysctl参数。创建POD/deployment/daemonset等对象时,给容器的spec指定securityContext.privileged=true即可设置到containers同级即可    securityContext:     ...

阅读全文

k8s扩容pv存储的方法

k8s之前配置存储卷容量太小,之前设置的容量规格已经不能满足现有资源存储,那么我们需要进行扩容kubernetes1.11版本中开始支持pvc创建后的扩容,这点很方便,但是还是有前提,是我们必须配置存储资源对象StorageClass如果配置了的话我们接着往下看,修改扩容的步骤比较简单,此次所有的配置修改可以直接查看上次的一个笔记:https://sulao.cn/post/826.html我们首先看下storageclasskubectl get scNAME     &nbs...

阅读全文

k8s安装prometheus

k8s安装prometheus我本地安装的k8s是1.19.9这个版本,需要找到对应的安装版本kube-prometheusstackKubernetes1.19Kubernetes1.20Kubernetes1.21Kubernetes1.22Kubernetes1.23release-0.7✔✔✗✗✗release-0.8✗✔✔✗✗release-0.9✗✗✔✔✗release-1.0✗✗✗✔✔main✗✗✗✔✔目前我这个版本对应的是prometheusrelease-0.7这个版本,那么我们就直接打开https://github.co...

阅读全文

查看ECTD中数据的方法

kubernetes的API对象的数据都保存在etcd中我们在实际环境中要管理ETCD需要使用ETCDCTL工具,所以我们需要下载相关工具下载地址是:https://github.com/etcd-io/etcd/releases目前最新版是3.5.4,我们下载解包,然后添加环境变量即可使用etcdctl工具wget https://github.com/etcd-io/etcd/releases/download/v3.5.4/etcd-v3.5.4-linux-amd64.tar.gztar -zxvf etcd-v...

阅读全文

k8s证书有效期修改

1.首先我们查看当前证书有效期,有几种方式可以查询第一种方式:kubeadm alpha certs check-expiration第二种方式:cd /etc/kubernetes/pkifor i in $(ls *.crt); do echo "===== $i ====="; openssl x509 -in $i -text -noo...

阅读全文

k8s调度策略nodename和nodeselector

在k8s中有几大核心组件,Scheduler调度器是其中的一个。调度器通过kubernetes的watch机制来发现集群中新创建且尚未被调度到Node上的Pod。调度器会将发现的每一个未调度的Pod调度到一个合适的Node上来运行。对每一个新创建的Pod或者是未被调度的Pod,kube-scheduler会选择一个最优的Node去运行这个Pod。然而,Pod内的每一个容器对资源都有不同的需求,而且Pod本身也有不同的资源需求。因此,Pod在被调度到Node上之前,根据这些特定的资源调度需求,需要对集群中的...

阅读全文

K8s配置管理configmap和secret

k8s中的secret和configmap是为了让POD和配置解耦,使得从集群外部可以想容器内部注入配置信息、环境变量等功能ConfigMap扮演了K8S集群中配置中心的角色,ConfigMap定义了Pod的配置信息,可以以存储卷的形式挂载至Pod中的应用程序配置文件目录,从ConfigMap中读取配置信息ConfigMap是明文保存的,如果用来保存数据库账号密码这类信息可以使用通过secret来保存,secret的功能和ConfigMap一样,不过secret是通过Base64的编码机制保存配置信息可以通过命令行的方式来创建configmap,如下ku...

阅读全文