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...

阅读全文

k8s亲和性和反亲和性

k8s中的亲和性主要是用来做pod的调度策略,可以使pod调度到满足指定条件的节点通常我们还需要给node设置标签,pod通过设置的label标签相关的策略可以使pod关联到对应的label节点上我们先来看下测试环境的node标签kubectl get node --show-labelsNAME         STATUS   ROLES     &...

阅读全文

K8s存储资源对象StorageClass

今天学习下持久化存储的资源对象StorageClass,这个出现主要是通过StorageClass的定义,管理员可以将存储资源定义为某种类型的资源,比如快速存储、慢速存储等,kubernetes根据StorageClass的描述就可以非常直观的知道各种存储资源的具体特性了,这样就可以根据应用的特性去申请合适的存储资源了。我们此处存储还是用NFS,创建StorageClass大概有以下几步1)创建Service Account用来管控NFS provisioner在k8s集群中运行的权限2)创建StorageClass,负责...

阅读全文

K8s存储emptyDir/hostPath/pv与pvc

K8s存储emptyDir、hostPath、pv和pvcpod容器组在宕机或者删除以后,数据会随着pod的销毁而消失,所以需要使用一些存储方案来做数据的持久化,目前有很多存储方案,主要有emptyDir、hostPath、NFS、云存储我们下面就通过例子来看看上述几种存储方式的区别1.emptyDiremptyDir类型的volume在pod分配到node上时被创建,kubernetes会在node上自动分配一个目录,因此无需指定宿主机node上对应的目录文件。这个目录的初始内容为空,当Pod从node上移除时,emptyDir中的数据会被永久删除。e...

阅读全文

K8s配置master可运行调度pod

默认配置下Kubernetes不会将Pod调度到Master节点,看官网意思是说有安全的考量但是我们本地资源有限,也顺便学习下k8s的污点相关知识,所以先看下如何让master也可以参与进行pod的调度可以使用一下命令进行查看kubectl describe node k8s-master |grep TaintsTaints:             node-role....

阅读全文

k8s配置使用ipvs替代iptables做代理转发

从k8s的1.8版本开始,kube-proxy引入了IPVS模式,IPVS模式与iptables同样基于Netfilter,但是采用的hash表,因此当service数量达到一定规模时,hash查表的速度优势就会显现出来,从而提高service的服务性能。1.k8s开启ipvs的方法首先我们需要在内核中开启相关模块cat >> /etc/sysctl.conf << EOFnet.ipv4.ip_forward = 1net.bridge.bridge-nf-ca...

阅读全文

k8s集群中service中的port/nodePort/targetPort/hostPort的区别

Service定义了pods的逻辑集合和访问这个集合的策略。Pods集合是通过定义Service时提供的Label选择器完成的Service的引入旨在保证pod的动态变化对访问端透明,访问端只需要知道service的地址,由service来提供代理Service的抽象使得前端客户和后端Pods进行了解耦,支持ClusterIP,NodePort以及LoadBalancer三种类型1.portk8s集群内部服务之间访问service的入口。即clusterIP:port是service暴露在clusterIP上的端口,例如mysql容器暴露了3306端...

阅读全文

k8s新增node节点一直notready状态的解决方法

今天在原有的k8s集群上新增一个节点,在使用kubeadmjoin命令增加node节点成功以后,等了5分钟,在master上查看新加节点状态一直是notready状态,然后进行排查在node节点上执行命令查看kubelet日志journalctl -f -u kubelet日志如下:Mar 09 13:52:46 k8s-cpu-node2 kubelet[12975]: E0309 13:52:46.191060   12975&n...

阅读全文

K8s相关组件功能原理介绍

一个K8s集群由master和node节点组成,master和node上分别包含一些组件,那么我们今天就来看下这两部分分别包含什么组件,并进行简单学习一、Naster节点主要包含APIServer、Scheduler、Controllermanager、etcd几大组件。1.APIServer提供其他模块之间的数据交互和通信的枢纽(其他模块通过APIServer查询或修改数据,只有APIServer才直接和etcd进行交互)Kubernetes集群中,APIServer扮演着通信枢纽的位置。APIServer不仅负责和etcd交互(其...

阅读全文