kubernetes 要求集群内各节点(包括 master 节点)能通过 Pod 网段互联互通。flannel 使用 vxlan 技术为各节点创建一个可以互通的 Pod 网络,使用的端口为 UDP 8472。
最近准备系统地学习一下 k8s,所以第一件事就是搭建环境,本篇文章就来记录一下自己在 CentOS 系统上搭建 k8s 环境的经历。
声明: 如果您有更好的技术与作者分享,或者商业合作; 请访问作者个人网站 http://www.esqabc.com/view/message.html 留言给作者。 如果该案例触犯您的专利,请在这里:http://www.esqabc.com/view/message.html 留言给作者说明原由 作者一经查实,马上删除。
最新版的v1.16.2试过了,一直无法安装完成,安装到kubeadm init那一步执行后,报了很多错,如:node xxx not found等。centos7都重装了几次,还是无法解决。用了一天都没安装完,差点放弃。后来在网上搜到的安装教程基本都是v1.16.0的,我不太相信是v1.16.2的坑所以先前没打算降级到v1.16.0。没办法了就试着安装v1.16.0版本,竟然成功了。记录在此,避免后来者踩坑。
上一篇博客记录了一下在 CentOS 下搭建 k8s 环境的方式,主要是使用的 shell 脚本执行安装部署命令。但是执行脚本终究只能人工执行,而且无法大批量安装,而本篇博客就使用批量执行工具 ansible 来自动化安装 k8s 环境。
k8s集群创建service(服务)后,集群内pod所在节点可以访问该服务,但其它节点无法正常访问该服务,调试解决后,觉得过程挺有意义,遂记录下整个调试解决过程。
最近被业务折腾的死去活来,实在没时间发帖,花了好多个晚上才写好这篇帖子,后续会加油的!
作者:无聊的学习者 来源:见文末 在国内安装 K8S,一直是大家很头痛的问题,各种麻烦,关键是还不知道需要下载什么工具。蛋疼。而且大部分国内教程要么太老,要么太挫。今天就来告诉大家如何在国内愉快的安装K8S。 安装环境 使用的是 kubeadm 进行安装,过程基本安装官方教程来的。 类目 型号 平台 阿里云 VPC 系统 Centos 7.3 Docker 版本 1.12.6 K8S版本 1.6.* 虽然写的是阿里云 VPC,但是虚拟机也支持。影响不大。 节点 作用
之前我们解决了跨主机间容器间通信的问题,但是这也只能说我们铺好了路,村里通路了,但是其实作为 k8s 来说,还有好多其他的问题等待着我们解决。今天我们就通过这些问题来看看 k8s 的 CNI 的设计。CNI 到底究竟是个什么东西,到底是不是和你想的一样那么困难。
etcd是CoreOS团队于2013年6月发起的开源项目,基于go语言开发,目标是构建一个高可用的分布式键值(key-value)数据库。etcd内部采用raft协议作为一致性算法。
和上文中的 Deployment 一样,DaemonSet 也是一种副本管理机制,和 Deployment 可以在每个 Node 上运行好几个 Pod 副本不同的是,DaemonSet 始终保证每个 Node 最多只会运行一个副本,就像它的名称一样,作为一只看门狗(Daemon)守护在主人家里。
k8s的网络模型假定了所有的Pod都在一个可以直接连通的扁平的网络空间中, 这在GCE(Google Compute Engine)里面是线程的网络模型, Kubernetes假定这个网络已经存在. 而在私有云里搭建Kubernetes集群, 就不能假定这个网络已经存在了. 我们需要自己实现这个网络假设, 将不同节点上的Docker容器之间的互相访问先打通, 然后运行Kubernetes.
在以前系列文章中我们以学习为目的介绍了二进制手动安装k8s集群,这里也是一个系列文章,同样以学习为目的,我们介绍k8s集群网络。对于网络基本涉及两个方面,一是到各个服务的网络间负载均衡,另一个是网络间的通讯。
上次我跟大家简单介绍了一下Kubernetes的各个组件及其含义,本期本来计划带领大家一起学习一些常用命令,但我认为这种方式可能无法达到学习的效果。有可能你们会直接忘记,甚至可能没有兴趣去学。我也理解,心想这跟我有什么关系,我本地又搭建不起来K8s。
在之前的k8s实践中,我们使用minikube搭建了k8s环境,为了更真实的展示生产级别的k8s,本节课采用kubeadm来搭建master+worker集群,实现k8s集群,master、worker在虚拟机上来执行,中间遇到了超级多的坑,在这里系统的总结一下,分上下两篇进行讲解。
http://jevic.blog.51cto.com/2183736/1881455
为了更方便远程分发文件和执行命令,本实验配置master节点到其它节点的 ssh 信任关系。
BorgMaster:负责请求分发,整个集群的大脑 BorgLet:真正运行的节点,提供计算 sheduler:调度器,将数据写入到Paxos(键值对数据库)BorgLet监听Paxos数据库,如果发现有自己的请求则处理相应的任务
Kubernetes(通常称为"K8S")是Google开源的容器集群管理系统。其设计目标是在主机集群之间提供一个能够自动化部署、可拓展、应用容器可运营的平台。Kubernetes通常结合docker容器工具工作,并且整合多个运行着docker容器的主机集群,Kubernetes不仅仅支持Docker,还支持Rocket,这是另一种容器技术。Kubernetes是一个用于容器集群的自动化部署、扩容以及运维的开源平台。通过Kubernetes, 可以快速有效地响应用户需求: -> 快速而有预期地部署应用; -> 极速地扩展你的应用; -> 无缝对接新的应用功能; -> 节省资源,优化硬件资源的使用;
一篇文章围绕一张图,讲述一个主题。不过这个主题偏大,我估计需要好几篇文章才能说得清楚。
最新版高可用安装:https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/high-availability/
docker 运行和管理容器,kubelet 通过 Container Runtime Interface (CRI) 与它进行交互。
你是否之前看过 k8s 的网络部分,第一次看是否会觉得很困难?或者说你有没有想过为什么 k8s 要这样设计它的网络,跨主机之间的网络通信究竟是怎么实现的?今天就来搞一篇干货,其实想写这个很久了,但是一直拖延症,这次正好碰到了一个新的点想让我仔细重新审视一下。
在讨论Kubernetes网络之前,让我们先来看一下Docker网络。Docker采用插件化的网络模式,默认提供bridge、host、none、overlay、maclan和Network plugins这几种网络模式,运行容器时可以通过–network参数设置具体使用那一种模式。
Docker自2013年发行以来,得到了飞速的发展,直至今日已经成为了基础架构中必不可缺的一份子,也是构建企业云平台的有效手段。而作为容器编排及管理的利器的kubernetes,已经与docker紧紧绑在一起,K8S对docker提供了更加原生的支持,同时提供了资源调度、容器生命周期管理、负载均衡、弹性伸缩、高可用等底层功能。
阿里云K8S集群网络目前有两种方案,一种是flannel方案,另外一种是基于calico和弹性网卡eni的terway方案。Terway和flannel类似,不同的地方在于,terway支持Pod弹性网卡,以及NetworkPolicy功能。
业务反馈有部署集群的节点上的pod无法做域名解析。pod到coredns pod网络不通。登录到节点查看日志发现flannel有如下报错:
本系列文章,我们将在Ubuntu Server 18.04上搭建k8s环境进行入门学习。为了使用原生的Ubuntu Server 18.04,我们将使用multipass来创建多台Ubuntu Server 18.04虚拟环境。也就是说,如果你想完整参考本系列博客学习,你电脑上应当安装并能正常运行multipass,如果你想了解multipass基本操作,可以参考我写的另一篇博客:【使用Multipass管理Ubuntu虚拟机】。本文演示k8s集群搭建步骤,并不涉及k8s基础知识,你可能对文章的一些专业词语感到默生,但没有关系,我们在后面会循序渐进地介绍k8s知识。
1.1 环境准备介绍 角色 IP地址 操作系统 配置 kubernetes docker master 192.168.199.100 centos7.x 2核/2G/50G 1.18.0 18.06.3 node1 192.168.199.101 centos7.x 2核/2G/50G 1.18.0 18.06.3 node2 192.168.199.102 centos7.x 2核/2G/50G 1.18.0 18.06.3 1.2 准备工作 1.2.1 关闭防火墙 systemctl
| 导语 前面介绍了很多K8S的概念以及架构方面的东西,这里我们说说K8S的网络。云计算里面的网络向来是复杂的,因为里面牵扯到硬件网络跟虚拟网络的交互。尤其是虚拟网络,比较抽象,如果不搞清楚,一些问题排障将寸步难行。
服务器:172.17.17.20-22 三个服务器 (深信服aCloud虚拟化平台)
前面我写了关于k8s环境部署的几篇文章,k8s部署还是比较麻烦的,所以是有必要考虑一键部署的方案,这里借助ansible playbook来实现k8s环境的一键部署,实现快速部署的目的。关于k8s传统部署详细过程可以参考以下文章:
在上一个小系列文章《ASP.NET Core on K8S学习初探》中,通过在Windows上通过Docker for Windows搭建了一个单节点的K8S环境,并初步尝试将ASP.NET Core WebAPI项目部署到了K8S,把玩了一下快速部署和实例伸缩。这个系列开始,会继续学习K8S以及在Linux上搭建集群来深入把玩。本篇会回顾一下K8S的基本概念以及架构组成,然后会通过Kubeadm快速地搭建一个K8S集群供后续学习把玩之用。
我们都知道 Kubernetes 是一个容器编排平台,可以用来管理我们的容器集群。但是如果我们只是作为学习来使用的话,Kubernetes 未免有些太重了,有些人的本机估计都没有办法来运行完整的 3 实例(一个 master,两个 agent)的集群环境。虽然网上也有使用 vagrant 和 machine 的部署方式,但是使用和配置还是比较复杂的。而 k3s 就是为了解决上述问题,应运而生的。
bilibili视屏地址: 6.复习-重新安装k8s集群_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili
这次部署是使用的二进制方式进行安装,部署的版本是v1.13.1,使用了三台机器做的k8s集群,没有对master做成集群,表如下:
0. 前言 上一篇中,我们介绍了多节点部署 kubernetes 集群,并通过 haproxy+keepalived 实现 Master 节点的负载均衡 其中 haproxy+keepalived 以 tcp 模式实现了正向代理和负载均衡 其实 haproxy 可以采用 http 模式工作,并通过 option redispatch 配置实现后端某个真实服务器挂掉后重新转发请求 但是如果我们希望实现在特定 http 状态码出现时,重试请求 因此本篇文章我们采用 nginx 作为负载均衡组件 1. 实验环境
k8s,即kubernetes是用于自动部署,扩展和管理容器化应用程序的开源系统。详细的描述就不多说了,官网有更详细的内容。简单来说,k8s,是一个可以操作多台机器调度部署镜像的平台。在k8s中,可以使用集群来组织服务器。集群中会存在一个master节点,该节点是kubernetes的控制节点,负责调度服务器中被称为Node的其他资源。
如果系统本身自带得镜像地址,服务器在国外,下载速度会很慢,可以打开 /etc/apt/sources.lis 替换为国内得镜像源。
在当 xxl-job 遇上 docker → 它晕了,我也乱了!,有两个场景没给大家演示,先补上
安装花了2天时间,总结了各种坑,就是为了让大家在学习k8s的时候不在从入门到放弃。
我们知道 Kubernetes(或 K8s)是用于管理容器化工作负载和服务的便携式开源平台。它有助于在集群中编排和管理 pod 中的应用程序。它还有效地改进了任务,例如重新部署的零停机时间或容器的自我修复。
Flannel是CoreOS团队针对Kubernetes设计的一个网络规划服务,简单来说,它的功能是让集群中的不同节点主机创建的Docker容器都具有全集群唯一的虚拟IP地址。
本篇文章是一个系列,介绍如何用binary的方式手动安装k8s集群,目的是来更好的理解学习k8s。以学习和理解为目的,所以这里的每个组件都是一步一步手动来安装,以便有实践和理解。对于生产环境,如果host在自己的data center里,那么请专业的infrastructure架构师和devops团队来搭建生产级别的集群。如果是在公有云(AWS/GCP/Azure/阿里云/腾讯云)上搭建生产环境,请仔细阅读相关文档,不清楚的问题及时提交工单。
本篇文章来介绍,K8S纯三层网络的实现原理,主要以Flannel 的 host-gw 模式和 Calico为例来介绍,是本人对K8S网络学习整理的第三篇学习笔记。
本文是通过ansible-playbook的roles功能实现二进制批量自动安装部署Kubernetes集群服务。本想做成离线版本,但由于coredns,ingress,dashboard插件需要拉取镜像,(这里把flannel做成非容器安装版)如需容器版去https://github.com/flannel-io/flannel中获取yaml文件
K8S 1.10.1版本部署
K8s定义了一个网络模型,目的是给Pod,service等使用者提供一个简单、一致的网络视图和使用体验,对它们屏蔽宿主机环境的网络拓扑的同时,也屏蔽网络模型实现上的细节。
master到node做免密认证 ssh-keygen ssh-copy-id root@192.168.1.237 ssh-copy-id root@192.168.1.100 ssh-copy-id root@192.168.1.188
领取专属 10元无门槛券
手把手带您无忧上云