kube-controller-manager运行控制器,它们是处理集群中常规任务的后台线程 Controller Manager就是集群内部的管理控制中心,由负责不同资源的多个Controller构成,共同负责集群内的Node.Pod等所有资源的管理,比如当通过Deployment创建的某个Pod发生异常退出时,RS Controller便会接受并处理该退出事件,并创建新的Pod来维持预期副本数. 几乎每种特定资源都有特定的Controller维护管理以保持预期状态,而Controller M…
Etcd是Kubernetes集群中的一个十分重要的组件,用于保存集群所有的网络配置和对象的状态信息. 整个kubernetes系统中一共有两个服务需要用到etcd用来协同和存储配置,分别是 网络插件flannel.对于其它网络插件也需要用到etcd存储网络的配置信息 kubernetes本身,包括各种对象的状态和元信息配置 Etcd是CoreOS基于Raft开发的分布式key-value存储,可用于服务发现.共享配置以及一致性保障(如数据库选主.分布式锁等) ETCD的主要功能: 基本的key…
Kubernetes Scheduler是一个策略丰富.拓扑感知.工作负载特定的功能,调度器显著影响可用性.性能和容量.调度器需要考虑个人和集体的资源要求.服务质量要求.硬件/软件/政策约束.亲和力和反亲和力规范.数据局部性.负载间干扰.完成期限等.工作负载特定的要求必要时将通过 API 暴露. kube-scheduler是Kube-Master相关的3个服务之一(ApiServer.Controller Manager.Scheduler),是有状态的服务,会修改集群的状态信息. 如果多个m…
kube-apiserver集群规划 主机名 角色 IP地址 mfyxw30.mfxyw.com kube-apiserver主 192.168.80.30 mfyxw40.mfyxw.com kube-apiserver从 192.168.80.40 温馨提示:这里部署文档以mfyxw30.mfyxw.com主机为例,另外两台主机安装部署方法类似 1.下载kubernetes软件 kubernetes的github链接:https://github.com/kubernetes kuberne…
API Server简介 Kubernetes API Server提供了K8S各类资源对象(如:pod.RC.Service等)的增删改查及watch等HTTP Rest接口,是整个系统的数据总线和数据中心. Kubernetes API Server功能如下: 1.提供了集群管理的REST API接口(包括认证授权.数据校验以有集体状态变更) 2.提供其他模块之间的数据交互和通信的枢纽(其它模块通过api server查询或者修改数据,只有它才能 直接操作etcd) 3.是资源配额控制的入口…
kube-proxy是Kubernetes的核心组件,部署在每个Node节点上,它是实现Kubernetes Service的通信与负载均衡机制的重要组件; kube-proxy负责为Pod创建代理服务,从apiserver获取所有server信息,并根据server信息创建代理服务,实现server到Pod的请求路由和转发,从而实现K8s层级的虚拟转发网络 在k8s中,提供相同服务的一组pod可以抽象成一个service,通过service提供的统一入口对外提供服务,每个service都有一个…
集群规划 主机名 角色 IP地址 mfyxw30.mfyxw.com kubelet 192.168.80.30 mfyxw40.mfyxw.com kubelet 192.168.80.40 注意:这里部署文档以mfyxw30.mfyxw.com主机为例,另外一台运算节点安装部署方法类似 1.创建生成kubelet证书签名请求(csr)的JSON配置文件 在运维主机mfyxw50.mfyxw.com上操作 [root@mfyxw50 cert]#cat > /opt/certs/kubelet…
Flannel简介 ​ Flannel是CoreDNS团队针对Kubernetes设计的一个网络规划服务,简单来说,它的功能是让集群中的不同节点主机创建的Docker容器都具有全集群唯一的虚拟IP地址.但在默认的Docker配置中,每个Node的Docker服务会分别负责所在节点容器的IP分配.Node内部的容器之间可以互相访问,但是不能跨主机(Node)网络相互间是不能直接通信的.Flannel设计目的就是为集群中所有节点重新规划IP地址的使用规则,从而使得在不同的节点上的容器能够获得"同属一…
四层反向代理集群规划 主机名 角色 IP地址 mfyxw10.mfyxw.com 4层负载均衡(主) 192.168.80.10 mfyxw20.mfyxw.com 4层负载均衡(从) 192.168.80.20 keepalived中的两种模式 (1)master->backup模式 一旦主库宕机,虚拟ip会自动漂移到从库,当主库修复后,keepalived启动后,还会把虚拟ip抢占过来,即使设置了非抢占模式(nopreempt)抢占ip的动作也会发生. (2)backup->backup模…
二进制安装K8s之部署kubectl 我们把k8s-master 也设置成node,所以先master上面部署node,在其他机器上部署node也适用,更换名称即可. 1.在所有worker node创建工作目录: #创建过就忽略 mkdir -p /data/k8s/{bin,config,ssl,logs} 复制二进制文件 cp kubelet kube-proxy /data/k8s/bin/ 2.创建配置文件kubelet #不同版本的pause不不一样 cat > /data/k8s/…
二进制安装K8s之部署kube-apiserver 一.生成 kube-apiserver 证书 1.自签证书颁发机构(CA) cat > ca-config.json <<EOF { "signing": { "default": { "expiry": "87600h" }, "profiles": { "kubernetes": { "expiry&qu…
二进制安装K8s 之 部署ETCD集群 一.下载安装cfssl,用于k8s证书签名 二进制包地址:https://pkg.cfssl.org/ 所需软件包: cfssl 1.6.0 cfssljson 1.6.0 cfssl-certinfo 1.6.0 wget https://github.com/cloudflare/cfssl/releases/download/v1.6.0/cfssl_1.6.0_linux_amd64 -O cfssl wget https://github.com…
二进制安装K8s之部署CoreDNS 和Dashboard CoreDNS 和Dashboard 的yaml文件在 k8s源代码压缩包里面可以找到对应的配置文件,很多人从网上直接下载使用别人的,会导致问多问题,k8s aipverson 每个版本略有不同. 下载与自己集群版本一样的源码文件,这里使用1.20 wget https://storage.googleapis.com/kubernetes-release/release/v1.20.9/kubernetes.tar.gz #解压 ta…
二进制安装K8s之部署kube-proxy 1.创建配置文件 cat > /data/k8s/config/kube-proxy.conf << EOF KUBE_PROXY_OPTS="--logtostderr=false \\ --v=2 \\ --log-dir=/data/k8s/logs \\ --config=/data/k8s/config/kube-proxy-config.yml" EOF 2.配置参数文件 cat > /data/k8s/c…
二进制安装K8s之部署CIN网络 部署CIN网络可以使用flannel或者calico,这里介绍使用calico ecd 方式部署. 1.下载calico二进制安装包 创建所需目录 mkdir -p /data/k8s/calico/{bin,config,logs} Calico 网络配置NetworkManager. NetworkManager 操作默认网络命名空间中接口的路由表,其中 Calico veth 对被锚定以连接到容器.这会干扰 Calico 代理正确路由的能力. 在 at 创…
二进制安装K8s 之 部署kube-controller-manager 1.创建配置文件 cat > /data/k8s/config/kube-controller-manager.conf << EOF KUBE_CONTROLLER_MANAGER_OPTS="--logtostderr=false \\ --v=2 \\ --log-dir=/data/k8s/logs \\ --leader-elect=true \\ --kubeconfig=/data/k8s/…
二进制安装K8s之部署kube-scheduler 1.创建配置文件 cat > /data/k8s/config/kube-scheduler.conf << EOF KUBE_SCHEDULER_OPTS="--logtostderr=false \\ --v=2 \\ --log-dir=/data/k8s/kubernetes/logs \\ --leader-elect \\ --kubeconfig=/data/k8s/config/kube-scheduler.k…
1.下载heapster镜像 在运维主机(mfyxw50.mfyxw.com)执行 [root@mfyxw50 ~]# docker pull quay.io/bitnami/heapster:1.5.4 2.对heapster打标签并上传至私有仓库 在运维主机(mfyxw50.mfyxw.com)执行 [root@mfyxw50 ~]# docker images | grep heapster [root@mfyxw50 ~]# docker tag quay.io/bitnami/heap…
1.下载dashboard镜像 在运维主机(mfyxw50.mfyxw.com)上执行命令 [root@mfyxw50 ~]# docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kubernetes-dashboard-amd64:v1.10.1 2.对dashboard打标签并上传到私有仓库 在运维主机(mfyxw50.mfyxw.com)上执行命令 [root@mfyxw50 ~]# docker images |…
K8S的DNS实现了服务在集群"内"被自动发现,如何使得服务在Kuberneters集群"外"被使用和访问呢,有二种方法 1)使用NodePort型的Service ​ 注意:无法使用kube-proxy的ipvs模型,只能使用iptables模型 2)使用Ingress资源 注意:Ingress只能调度并暴露7层应用,特指http和https协议,一般建议用在http协议上 Ingress是K8S API的标准资源类型之一,也是一种核心资源.它其实就是一组基于域名…
在运维主机上(mfyxw50.mfyxw.com)准备Coredns镜像文件,以docker镜像文件的方式部署到Kubernetes集群中去. 1.下载coredns镜像 [root@mfyxw50 ~]# docker pull coredns/coredns:1.6.9 [root@mfyxw50 ~]# docker tag faac9e62c0d6 harbor.od.com/public/coredns:v1.6.9 2.将打好标签的coredns上传到私有仓库 [root@mfyxw…
在实际生产环境中,部署好的集群稳定就行了,但是,如果需要使用到新的功能或当前版本出现了严重的漏洞,都建议做升级,本教程是将node节点从v1.15.10版本平滑升级到v1.15.12版本,如果升级到相对应的版本后,发现不稳定的情况,也可以通过相同的方法进行降级,不管是升级还是降级,都需要一台升级/降级好后再对下一台进行操作,不建议一起进行 1.查看原集群的Node节点的版本号 在master上(mfyxw30.mfyxw.com或mfyxw40.mfyxw.com)任意一台主机执行命令 [roo…
flannel之SNAT规则优化的目的是由于在K8S中的容器内,访问不同宿主机中的容器的资源的时候,日志文件会记录为宿主机的IP地址,而不是记录为容器本身自己的IP地址,建议在不同的宿主机上的容器互访的时候,在日志文件中查询到的IP地址均为容器的真实的IP地址.如下图所示,是为宿主机或进入宿主机的容器中进行curl访问另外node节点的容器,都会被记录成宿主机的IP地址,这样就会导致不同宿主机的容器互访,会经过一次SNAT转换,而实际上,不同宿主机容器之间的访问,应该会被记录为容器的实际IP地址…
1.Kubernetes节点信息情况 主机名 简称 角色 IP地址 操作系统 mfyxw10.mfyxw.com mfyxw10 K8S代理节点1 192.168.80.10 CentOS7.7 mfyxw20.mfyxw.com mfyxw20 K8S代理节点2 192.168.80.20 CentOS7.7 mfyxw30.mfyxw.com mfyxw30 K8S运算节点1 192.168.80.30 CentOS7.7 mfyxw40.mfyxw.com mfyxw40 K8S运算节点1…
在IP地址为192.168.80.50,机器名为mfyxw50上搭建私有仓库harbor harbor下载地址: harbor下载连接地址:https://github.com/goharbor/harbor/releases/tag/v1.10.0 平时访问GitHub的时候非常慢,特别是对于稍大项目Clone的时候就会更慢,当Clone项目的时候,可以将github地址变成github.com.cnpmjs.org就会获得加速 更改的harbor下载地址:https://github.com…
注意:需要安装Docker的机器为mfyxw30.mfyxw40.mfyxw50 集群规划 主机名 角色 IP地址 mfyxw30.mfyxw.com Docker 192.168.80.30 mfyxw40.mfyxw.com Docker 192.168.80.40 mfyxw50.mfyxw.com Docker 192.168.80.50 1.安装到最新的内核** #CentOS7.x系统自带的3.10.x内存存在一些Bugs,导致运行的Docker.Kubernetes不稳定,建议升级…
1.修改主机名 hostnamectl set-hostname mfyxw10 hostnamectl set-hostname mfyxw20 hostnamectl set-hostname mfyxw30 hostnamectl set-hostname mfyxw40 hostnamectl set-hostname mfyxw50 2.关闭selinux和firewalld systemctl stop firewalld && systemctl disable firewa…
1.在mfyxw50机器上分别下载如下几个文件:cfssl.cfssl-json.cfssl-certinfo cfssl下载连接地址: https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 cfssl-json下载连接地址: https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64 cfssl-certinfo下载连接地址:https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-…
下载kubernetes服务端 [root@hdss7-21 ~]# cd /opt/src [root@hdss7-21 src]# wget https://dl.k8s.io/v1.15.2/kubernetes-server-linux-amd64.tar.gz [root@hdss7-21 src]# tar -xf kubernetes-server-linux-amd64.tar.gz [root@hdss7-21 src]# mv kubernetes /opt/release/…
在Master节点部署组件 在部署Kubernetes之前一定要确保etcd.flannel.docker是正常工作的,否则先解决问题再继续. 创建 CA 证书 mkdir -p /iba/master-ca cd /iba/master-ca cat > ca-config.json << EOF { "signing": { "default": { "expiry": "87600h" }, "…