etcd

kubernetes的架构设计

感情迁移 提交于 2019-11-29 04:46:27
一.kubernetes集群包含有节点代理kubelet和master组件(APIs, Scheduler, ect.)。一切都基于分布式的存储系统。 二.kubernetes集群架构图: 解析: 1.在这张系统架构图中,把服务分为运行在工作节点上的服务和组成集群级别控制板的服务。 2.kubernetes节点有运行应用容器必备的服务,而这些都是受master控制的。 3.docker是每个节点运行的基础,docker负责所有具体的镜像的下载和容器的运行。 4.kubernetes主要由以下几个核心组件组成: a.etcd保存了整个集群的状态; b.apiserver提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制; c.controller manager负责维护集群的状态,如:故障检测、自动扩展、滚动更新等; d.scheduler负责资源调度,按照预定的调度策略将Pod调度到相应的机器上; e.kubelet负责维护容器的生命周期,同时也负责Volume(CVI)和网络(CNI)的管理; f.Container runtime负责镜像管理及Pod和容器的真正运行; g.kube-proxy负责为Service提供cluster内部的服务发现和负载均衡; 5.kubernetes的相关推荐的附加组件: a.kube-dns负责为整个集群提供DNS服务

解决k8s报错No API token found for service account "default", retry after the token is automatically

强颜欢笑 提交于 2019-11-29 04:45:53
1、首先生成密钥: openssl genrsa -out /etc/kubernetes/serviceaccount.key 2048 2、编辑/etc/kubenetes/apiserver 添加以下内容: KUBE_API_ARGS="--service_account_key_file=/etc/kubernetes/serviceaccount.key" 3、再编辑/etc/kubernetes/controller-manager 添加以下内容: KUBE_CONTROLLER_MANAGER_ARGS="--service_account_private_key_file=/etc/kubernetes/serviceaccount.key" 最后无论是哪种解决方式都需要再重启kubernetes服务: systemctl restart etcd kube-apiserver kube-controller-manager kube-scheduler 来源: oschina 链接: https://my.oschina.net/u/3852748/blog/3131662

彻底搞懂etcd raft选举、数据同步

ε祈祈猫儿з 提交于 2019-11-29 04:11:53
etcd raft选举机制 etcd 是一个分布式的k/V存储系统。核心使用了RAFT分布式一致性协议。一致性这个概念,它是指多个服务器在状态达成一致,但是在一个分布式系统中,因为各种意外可能,有的服务器可能会崩溃或变得不可靠,它就不能和其他服务器达成一致状态。这样就需要一种Consensus协议,一致性协议是为了确保容错性,也就是即使系统中有一两个服务器当机,也不会影响其处理过程。 为了以容错方式达成一致,我们不可能要求所有服务器100%都达成一致状态,只要超过半数的大多数服务器达成一致就可以了,假设有N台服务器,N/2 +1 就超过半数,代表大多数了。 raft协议核心要点: Leader选举(Leader Election) 日志同步 (Log Replication) leader收到client的更新请求后,会讲更新的内容同步给所有follower。 集群状态的正确性 (Safety) 保证日志的一致性 保证选举的正确性 服务器状态: leader 处理所有客户端交互,日志复制等,一个任期只有一个。 follower 完全被动的选民,是只读的。 candidate 候选人,可以被选举为新领导。 状态之间的转换: 任期(terms) 如上图,蓝色代表 Election 模式,绿色代表 Operation 模式 在每个任期内最多一个leader 有些可能没有leader

k8s简装部署

会有一股神秘感。 提交于 2019-11-29 03:30:35
yum源配置: wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo yum update etcd部署: yum -y install etcd 修改etcd配置: ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379" ETCD_NAME="etcd-master" ETCD_ADVERTISE_CLIENT_URLS="http://etcd-master:2379" systemctl start etcd.service systemctl enable etcd.service kubernetes-master部署: yum -y install kubernetes-master 修改master节点kubernetes-master配置: apiserver: KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0" KUBE_API_PORT="--port=8080" KUBELET_PORT="--kubelet-port=10250" KUBE_ETCD_SERVERS="--etcd-servers=http://etcd-master:2379"

k8s 基础 pod创建流程

♀尐吖头ヾ 提交于 2019-11-29 03:08:34
Pod是Kubernetes中最基本的部署调度单元,可以包含container,逻辑上表示某种应用的一个实例。例如一个web站点应用由前端、后端及数据库构建而成,这三个组件将运行在各自的容器中,那么我们可以创建包含三个container的pod。本文将对Kubernetes的基本处理流程做一个简单的分析。 Pod的创建流程如下图所示(图片来源于网络): 具体的创建步骤包括: 1、客户端提交创建请求,可以通过API Server的Restful API,也可以使用kubectl命令行工具。支持的数据类型包括JSON和YAML。 2、API Server处理用户请求,存储Pod数据到etcd。 3、调度器通过API Server查看未绑定的Pod。尝试为Pod分配主机。 4、过滤主机 (调度预选):调度器用一组规则过滤掉不符合要求的主机。比如Pod指定了所需要的资源量,那么可用资源比Pod需要的资源量少的主机会被过滤掉。 5、主机打分(调度优选):对第一步筛选出的符合要求的主机进行打分,在主机打分阶段,调度器会考虑一些整体优化策略,比如把容一个Replication Controller的副本分布到不同的主机上,使用最低负载的主机等。 6、选择主机:选择打分最高的主机,进行binding操作,结果存储到etcd中。 7、kubelet根据调度结果执行Pod创建操作: 绑定成功后

kubeadm配置高可用etcd集群

巧了我就是萌 提交于 2019-11-29 01:42:29
k8s默认在控制平面节点上的kubelet管理的静态pod中运行单个成员的etcd集群,但这不是高可用的方案。 etcd高可用集群至少需要三个成员组成。 etcd默认端口为2379,2380,三个节点的这两个端口都要能通。 可以在kubeadm配置文件更改默认端口。 这个实验有五个服务器。 我开的腾讯云香港服务器做的实验,网速很快,ssh稳定。 百度云没测。 阿里云测试不给力。 推荐 腾讯云 。 k8s1: master1 k8s2: node1 k8s3: haproxy k8s4: master2 k8s5: master3 1.首先在k8s master1上安装kubeadm,kubelet,kubectl,然后kubeadm init,最后kubectl get nodes,确认k8s1 master1准备就绪。 k8s安装: ubuntu18安装kubernetes v1.15 2.分别在k8s node1,k8s master2,k8s master3上安装kubeadm,kubectl,kubelet k8s安装: ubuntu18安装kubernetes v1.15 3.在k8s master1上的kubeadm-init.out文件找到join worker node和 join control-plane node的命令。 4.分别在k8s

Rancher 2.2.5发布,CVE修复,支持K8S 1.15

余生颓废 提交于 2019-11-28 21:37:47
2019年7月16日,Rancher Labs发布了Rancher全新版本2.2.5,该版本修复了近期发现的安全漏洞CVE-2019-13209,正式支持Kubernetes 1.14,对最新的Kubernetes 1.15也提供了实验性支持,除此之外还带来了一系列功能与优化。 目前,Rancher的Latest和Stable版本信息如下: CVE修复:CVE-2019-13209 Rancher 2.2.5修复了新近被发现的安全漏洞CVE-2019-13209。该问题最初是由Workiva的Matt Belisle和Alex Stevenson发现并报告,受影响的Rancher版本包括v2.0.0-v2.0.15、v2.1.0-v2.1.10、v2.2.0-v2.2.4。Rancher v1.6不受影响。 该漏洞称为“跨站点Websocket劫持攻击”。攻击者可以通过被攻击者的角色/权限来访问由Rancher管理的集群。它要求被攻击者登录到Rancher服务器,然后访问由开发者托管的第三方站点。一旦完成,开发人员就能够利用被攻击者的权限和身份对Kubernetes API执行命令。更多详情介绍可查看: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13209 在Rancher 2.2.5发布同期,Rancher

28.kubernetes

放肆的年华 提交于 2019-11-28 20:39:00
1.kubernetes介绍 1.1k8s核心功能 1.自我修复 2.服务发现和负载均衡 3.自动部署和回滚 4.弹性伸缩 1.2k8s应用场景 1.方便业务升级,增加新功能 2.支持更好的性能扩展 3.k8s弹性伸缩 1.3k8s核心组件和架构 2.安装 2.1环境准备 建议使用7.4,7.5会有些问题 [root@k8s-node1 ~]# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) [root@k8s-node1 ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 10.0.0.11 k8s-master 10.0.0.12 k8s-node1 10.0.0.13 k8s-node2 [root@k8s-master ~]# systemctl stop firewalld [root@k8s-master ~]# systemctl disable firewalld [root@k8s-master ~]# cat

基于容器的ETCD集群脚本

笑着哭i 提交于 2019-11-28 20:03:51
其实是从上一篇的脚本里剥离出来的。 加深一下印象吧。 docker run \ -d \ -p ${ETCD_CLI_PORT}:${ETCD_CLI_PORT} \ -p ${ETCD_CLU_PORT}:${ETCD_CLU_PORT} \ --volume=${etcd_data_dir}:${etcd_data_dir} \ --volume=${pki_dir}:${pki_dir} \ --name etcd ${REGISTRY}/etcd-amd64:${ETCD_VERSION} \ /usr/local/bin/etcd \ --data-dir=/etcd-data --name ${THIS_HOST} \ --initial-advertise-peer-urls http://${THIS_HOST}:${ETCD_CLU_PORT} \ --listen-peer-urls http://0.0.0.0:${ETCD_CLU_PORT} \ --advertise-client-urls https://${THIS_HOST}:${ETCD_CLI_PORT} \ --listen-client-urls https://0.0.0.0:${ETCD_CLI_PORT} \ --initial-cluster ${CLUSTER} \ -

ETCD TLS 配置的坑

走远了吗. 提交于 2019-11-28 20:00:31
一、环境准备 环境总共 3 台虚拟机,系统为centos7 , 1个 master,2 个 etcd 节点,master 同时也作为 node 负载 pod,在分发证书等阶段将在另外一台主机上执行,该主机对集群内所有节点配置了 ssh 秘钥登录 IP 节点 192.168.0.153 master、node、etcd 192.168.0.154 master、node、etcd 192.168.0.164 master、node、etcd 由于 Etcd 和 Kubernetes 全部采用 TLS 通讯,所以先要生成 TLS 证书, 证书生成工具采用 cfssl 二、证书相关处理 1、证书说明 证书名称 配置文件 用途 etcd-root-ca.pem etcd-root-ca-csr.json etcd 根 CA 证书 etcd.pem etcd-gencert.json、etcd-csr.json etcd 集群证书 2、CFSSL 工具安装 首先下载 cfssl,并给予可执行权限,然后扔到 PATH 目录下 wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64 chmod +x cfssl_linux-amd64