欠你们的 → k8s 集群搭建,除夕奉上!

开心一刻

  有一天,qq收到一个好友申请,验证消息上写的是:哥哥加我,我是妹妹

  我以为是性骚扰,就没加,直接回了一句:我喜欢少妇

  过了一会儿,姑姑就给我打了个电话:你妹妹qq加你,你怎么不同意,她想问你几道数学题,你说你喜欢少妇

  我:姑姑,你听我狡辩一下......

  祝大家除夕快乐!

节点准备

  基于 CentOS7 准备 3 个节点: master:192.168.0.100 、 node1:192.168.0.101 、 192.168.0.102 

   VirtualBox 搭建虚拟机的过程就不演示了,具体可参考如下两篇

    virtualBox安装centos,并搭建tomcat

    VirtualBox 下 CentOS7 静态 IP 的配置 → 多次踩坑总结,蚌埠住了!

  搭建好之后 IP 分配如下

Docker安装

  每个节点都需要安装 Docker 环境

  配置yum源

  安装&启动 Docker

  查看 Docker 版本

  配置加速

  因为有 一面墙 ,国内访问国外资源速度太慢,很有可能下载资源失败,需要配置国内镜像地址

  其中 xxxx 需要改成你们自己的

  注意,是每个节点都需要配置 Docker ,而非某个节点

K8S集群搭建

  基础环境

  所有节点都需要进行如下设置

  在创建虚拟机的时候,楼主已经把 hostname 设置好了,如果你们没设置,可以通过如下指令进行域名设置

  安装kubelet、kubeadm、kubectl

  每个节点都需要进行安装

  kubeadm引导集群

  每个节点下载镜像

  初始化主节点

  每个节点添加 master 域名映射

  只在 master 节点执行如下命令进行初始化

  当出现如下信息,则说明初始化成功

  如上信息中提到了几个点

    1、如果是常规用户,需要在主节点执行

      如果是 root 用户,则在主节点执行

      我们在主节点执行常规用户的命令

    2、需要部署网络组件

    3、其他节点执行如下命令,作为 master 节点加入到集群中

    4、其他节点执行如下命令,作为 worker 节点加入到集群中

  部署网络组件

  我们采用 calico 作为网络组件,在 master 执行如下命令

  我们看下集群状态

  目前只有一个主节点,再看下 pods 状态

  都在运行中,状态都正常

  Worker 节点加入集群

  在 k8snode1 、 k8snode2 节点执行

  在 master 节点查看集群节点状态: kubectl get nodes 

  再看下 pods 状态

总结

  1、 Docker  版本和 k8s 的版本最好对应上,否则容易出问题

  2、 k8s 网络有点复杂,感兴趣的可以仔细研究下

参考

  云原生实战

  云原生Java架构师的第一课K8s+Docker+KubeSphere+DevOps

本文转载于网络 如有侵权请联系删除

相关文章

  • iOS14适配【解决UITableViewCell兼容问题(往cell添加子视图的方式不规范)】

    文章目录前言I、问题分析 1.0其他分析视图层级的方法:私有API_printHierarchy和recursiveDescription1.1注意事项II、使用方法交换,全局修改 2.2.1cell.subviews2.2.2通过superview获取cell的也需做相关修改2.1全局修改2.2注意事项 2.3使用到的工具类seealso前言今天升级最新IDEXcode,准备适配iOS14API,结果发现app首页的cell中按钮也无法点击了。I、问题分析iOS14UITableViewCell的子试图不能点击或者滑动等手势响应问题,发现有问题的cell基本都是直接cell.addSubView(tempView1)复制这种方式添加的,通过Xcode自带的DebugViewHierarchy视图分析发现问题的原因是:被系统自带的UITableViewCellContentView遮挡在底部了所以需要改规范的做法cell.contentView.addSubView(tempView1)复制温馨提示:如果你用旧版的Xcode打包,而非使用Xcode12以上版本编译打包的话,是不会有问题

  • Establishing SSL connection without server identity verification is not recommended

    报错SpringBoot启动时报错:WedJun1710:13:14CST2020WARN:EstablishingSSLconnectionwithoutserver'sidentityverificationisnotrecommended.AccordingtoMySQL5.5.45+,5.6.26+and5.7.6+requirementsSSLconnectionmustbeestablishedbydefaultifexplicitoptionisn'tset.ForcompliancewithexistingapplicationsnotusingSSLtheverifyServerCertificatepropertyissetto'false'. YouneedeithertoexplicitlydisableSSLbysettinguseSSL=false,orsetuseSSL=trueandprovidetruststoreforservercertificateverification.复制解决在连接串后面加上useSS

  • 整理了 15 道 Spring Boot 高频面试题,年后跳槽必备

    什么是面霸?就是在面试中,神挡杀神佛挡杀佛,见招拆招,面到面试官自惭形秽自叹不如!松哥希望本文能成为你面霸路上的垫脚石!做Java开发,没有人敢小觑SpringBoot的重要性,现在出去面试,无论多小的公司or项目,都要跟你扯一扯SpringBoot,扯一扯微服务,不会?没用过?Sorry,我们不合适!今天松哥就给大家整理了15道高频SpringBoot面试题,希望能够帮助到刚刚走出校门的小伙伴以及准备寻找新的工作机会的小伙伴。1.什么是SpringBoot?传统的SSM/SSH框架组合配置繁琐臃肿,不同项目有很多重复、模板化的配置,严重降低了Java工程师的开发效率,而SpringBoot可以轻松创建基于Spring的、可以独立运行的、生产级的应用程序。通过对Spring家族和一些第三方库提供一系列自动化配置的Starter,来使得开发快速搭建一个基于Spring的应用程序。SpringBoot让日益臃肿的Java代码又重回简洁。在配合SpringCloud使用时,还可以发挥更大的威力。2.SpringBoot有哪些特点?SpringBoot主要有如下特点:为Spring开发提供一个

  • 【AI大咖】扒一下低调的Yoshua Bengio大神

    一头银灰相间的卷发,一对漫画式的粗眉,思考时频频上扬,微笑时又极具表现力,他就是今天的主人公——YoshuaBengio。130秒了解YoshuaBengioYoshuaBengio(约书亚·本吉奥)因深度学习工作与GeoffreyHinton和YannLeCun共同分享了2018年图灵奖,被公认为世界领先的AI专家和深度学习先驱。1964年,出生在法国巴黎,和Lecun童年生活在同一个城市的不同角落,现与Hinton一样选择生活在加拿大,拥有加拿大CIFARAI主席一职。Bengio大学就读于麦吉尔大学“计算机工程学”专业,1986-1991年继续修“计算机科学“到博士毕业,随后一段时间在麻省理工学院做博士后研究员,1992年到美国AT&T贝尔实验室LeCun小组做学习和视觉算法研究工作。1993年起,他一直在蒙特利尔大学教书育人,负责计算机科学与运筹学方向。他也是蒙特利尔学习算法研究所(MILA)创始人和科学主任。MILA,一家独立的非营利组织,世界上最大的深度学习研究小组,拥有来自地球上很多公司和AI创业公司的研究实验室。2代表性研究论文1、LeNet5卷积神经网络提出:

  • 计算机网络自学笔记:选路算法

    网络层必须确定从发送方到接收方分组所经过的路径。选路就是在网络中的路由器里的给某个数据报确定好路径(即路由)。一台主机通常直接与一台路由器相连接,该路由器即为该主机的默认路由器,又称为该主机的默认网关。每当某主机向外部网络发送一个分组时,该分组都被传送给它的默认网关。如果将源主机的默认网关称为源路由器,把目的主机的默认网关称为目的路由器。为一个分组从源主机到目的主机选路的问题于是可归结为从源路由器到目的路由器的选路问题。选路算法的目标很简单:给定一组路由器以及连接路由器的链路,选路算法要找到一条从源路由器到目的路由器的最好路径,通常一条好路径是指具有最低费用的路径。图G=(N,E)是一个N个节点和E条边的集合,其中每条边是来自N的一对节点。在网络选路的环境中,节点表示路由器,这是做出分组转发决定的节点,连接节点的边表示路由器之间的物理链路。一条边有一个值表示它的费用。通常一条边的费用可反映出对应链路的物理长度、链路速度或与该链路相关的费用。对于E中的任一条边(xy)可以用c(xy)表示节点x和y间边的费用。一般考虑的都是无向图,因此边(xy)与边(yx)是相同的并且开销相等。节点y也被

  • 吆喝科技CTO的纯干货分享:直击A/BTesting和美团推荐技术关键点!

    [NEW学堂]养码场的线上课程,以技术人员为核心的学习、交流、分享社群,全方位服务技术人和技术创业者。这里聚集了众多BAT/美团/京东/滴滴/360/小米/网易等知名互联网公司技术总监&技术负责人,他们在这里分享经验、招聘人才,与你一起成长。NEW学堂的第一课,场主邀请到吆喝科技CTO,原美团研发管理团队成员沈国阳,在养码场社群中展开了时长1小时的线上分享,围绕美团推荐技术、召回层/排序层关键技术、A/BTesting关键技术等进行了分享。这是一次充满诚意的分享,直达技术关键点。场主特地整理成篇,分享给参加活动但来不及完全消化与遗憾未能参加的小伙伴!干货长文,高能预警~推荐关键技术介绍推荐的基本框架上面这个框图的最顶层显示的是推荐系统对外的服务接口,每个展位有自己特定的接口形式。接口层会调用A/Btest配置模块,对接入的流量按照UUID、城市等维度进行分流量的配置。A/Btest对于推荐系统是很重要的基础模块,我们对这个模块的要求,是可以有友好的配置界面,灵活根据不同维度进行分流量配置,并且立即生效,无需重启服务。A/Btest配置模块之下,是推荐候选集的生成,排序和业务处理

  • Leetcode 171 Excel Sheet Column Number

    Relatedtoquestion ExcelSheetColumnTitleGivenacolumntitleasappearinanExcelsheet,returnitscorrespondingcolumnnumber.Forexample:A->1 B->2 C->3 ... Z->26 AA->27 AB->28复制字符串转数字类似于进制转换,可以理解为26进制转10进制classSolution{ public: inttitleToNumber(strings){ intres=0,base=1; for(inti=s.size()-1;i>=0;i--) { res+=base*(s[i]+1-'A'); base*=26; } returnres; } };复制

  • 腾讯云云函数获取函数异步事件状态api接口

    1.接口描述接口请求域名:scf.tencentcloudapi.com。 获取函数异步执行事件状态,事件状态保留3*24小时(从事件完成开始计时)。 默认接口请求频率限制:20次/秒。 APIExplorer提供了在线调用、签名验证、SDK代码生成和快速检索接口等能力。您可查看每次调用的请求内容和返回结果以及自动生成SDK调用示例。 2.输入参数以下请求参数列表仅列出了接口请求参数和部分公共参数,完整公共参数列表见公共请求参数。 参数名称 必选 类型 描述 Action 是 String 公共参数,本接口取值:GetAsyncEventStatus。 Version 是 String 公共参数,本接口取值:2018-04-16。 Region 是 String 公共参数,详见产品支持的地域列表,本接口仅支持其中的:ap-beijing,ap-chengdu,ap-chongqing,ap-guangzhou,ap-hongkong,ap-mumbai,ap-nanjing,ap-seoul,ap-shanghai,ap-shanghai-fsi

  • 通用管理后台模板

    经常需要搭建通用的管理后台,这次把所用到的技术汇总,方便日后查询。 1.项目框架:adminlte,其中的按钮,表单等都采用这个框架里面已提供好的,从而保证整个项目风格的统一。 2.表格工具,即时通讯工具,弹出层:layui。layui的表格插件,弹出层,即时IM做得还算可以,所以主要选用它来做这三方面的工作。 3.智能补全,日历,表单校验:sui;sui是淘宝后台的一个开源项目,这边主要用它的智能补全,表单校验等功能,好友一些其他组件,比如Tag,分页,进度条,load,步骤条等也挺好用的。 4.富文本编辑器:百度编辑器  

  • 解决部分在Debug模式下程序没问题但是Release模式下出现问题的方法

    编译策略介绍 关于优化级别:GCC_OPTIMIZATION_LEVEL描述如下 None:Donotoptimize.  [-O0]Withthissetting,thecompiler’sgoalistoreducethecostofcompilationandtomakedebuggingproducetheexpectedresults.Statementsareindependent:ifyoustoptheprogramwithabreakpointbetweenstatements,youcanthenassignanewvaluetoanyvariableorchangetheprogramcountertoanyotherstatementinthefunctionandgetexactlytheresultsyouwouldexpectfromthesourcecode.Fast:Optimizingcompilationtakessomewhatmoretime,andalotmorememoryforalargefunction.&

  • 从程序员到项目经理之程序员加油站 -- 不是人人都懂的学习要点(转发)

    学习是一种基础性的能力。然而,“吾生也有涯,而知也无涯。”,如果学习不注意方法,则会“以有涯随无涯,殆矣”。   一.学习也是一种能力 看到这个标题,有人会说:“学习,谁不会?”的确,学习就像吃饭睡觉一样,是人的一种本能,人人都有学习的能力。我们在刚出生的时候,什么也不知道,是一张真正的白纸,我们靠学习的本能,学会了走路、说话、穿衣服…后来,我们上学了,老师把书本上的知识一点一点灌输到我们的脑子里,我们掌握的知识越来越多,与此同时,我们学习能力却好像越来越差了,习惯了被别人喂饱,似乎忘记了怎么来喂自己了。 学习本来只是一种本能,算不上什么能力,然而,经过二十多年的不断学习,学习反而成为了一种真正的能力,因为我们慢慢失去了它,它就更显得珍贵。 在学校里我们基本上被动式学习,然而走出了象牙塔之后,不会再有人对你负责,不会有人主动教你,我们需要主动的学习。所谓的学习能力,其实就是自主学习的能力。   几年前,曾有一本风靡管理界的书,叫《第五项修炼》,这本书倡导建立学习型组织,因为从长远来看,一个组织唯一可持续的竞争优秀,就是比竞争对手更快更好的学习能力。 一个公司如此,一

  • 使用gulp构建项目,sass/less编译,js/css/html/image压缩,版本号处理

    使用gulp构建项目,sass/less编译,js/css/html/image压缩,版本号处理 以下配置能实现的功能 scss编译 js/css/html压缩 html引入静态资源版本号处理(缓存处理) 插件js以copy形式加入到打包项目中 项目文件改动任意处浏览器刷新   gulpfile.js constgulp=require('gulp'); constsass=require('gulp-sass')(require('sass'));//将scss编译成css constbrowserSync=require('browser-sync');//微型服务,当资源改动时,浏览器会自动刷新 constminifycss=require('gulp-minify-css');//css压缩插件 constuglify=require('gulp-uglify');//js压缩插件 constchanged=require('gulp-changed');//只编译更改过的文件 consthtmlmin=require('gulp-htmlmin');//压缩htm

  • 自定义程序启动脚本加入到supervisord下管理

    ubuntu14.04系统,直接通过apt-get安装即可 apt-getinstallsupervisord 复制 官网:http://www.supervisord.org/ 主配置文件 这个配置在/etc/supervisor/supervisord.conf 配置内容如下: root@xxx:/etc/supervisor/conf.d#grep-vE"(^;|^$)"/etc/supervisor/supervisord.conf [unix_http_server] file=/var/log/supervisord/supervisor.sock;(thepathtothesocketfile) [supervisord] logfile=/var/log/supervisord/supervisord.log;(mainlogfile;default$CWD/supervisord.log) logfile_maxbytes=50MB;(maxmainlogfilebytesb4rotation;default50MB) logfile_backups=10;(numo

  • Linux驱动学习之常用的模块操作命令

    1、常用的模块操作命令 (1)lsmod(listmodule,将模块列表显示),功能是打印出当前内核中已经安装的模块列表 (2)insmod(installmodule,安装模块),功能是向当前内核中去安装一个模块,用法是insmodxxx.ko (3)modinfo(moduleinformation,模块信息),功能是打印出一个内核模块的自带信息。,用法是modinfoxxx.ko,注意要加.ko,也就是说是一个静态的文件形式。 (4)rmmod(removemodule,卸载模块),功能是从当前内核中卸载一个已经安装了的模块,用法是rmmodxxx.ko rmmodxxx都可以 (5)剩下的后面再说,暂时用不到(如modprobe、depmod等)   2、模块的安装 (1)insmod与module_init宏。模块源代码中用module_init宏声明了一个函数(在我们这个例子里是chrdev_init函数),作用就是指定chrdev_init这个函数和insmod命令绑定 起来,也就是说当我们insmodmodule_test.ko时,insmod命令

  • 数据结构与算法(九):AVL树详细讲解

    数据结构与算法(一):基础简介 数据结构与算法(二):基于数组的实现ArrayList源码彻底分析 数据结构与算法(三):基于链表的实现LinkedList源码彻底分析 数据结构与算法(四):基于哈希表实现HashMap核心源码彻底分析 数据结构与算法(五):LinkedHashMap核心源码彻底分析 数据结构与算法(六):树与二叉树 数据结构与算法(七):赫夫曼树 数据结构与算法(八):二叉排序树 本文目录 一、二叉排序树性能问题 在上一篇中我们提到过二叉排序树构造可能出现的性能问题,比如我们将数据:2,4,6,8构造一颗二叉排序树,构造出来如下:  这肯定不是我们所希望构造出来的,因为这样一棵树查找的时候效率是及其低下的,说白了就相当于数组一样挨个遍历比较。 那我们该怎么解决这个问题呢?这时候就需要我们学习一下二叉平衡树的概念了,本系列设计的二叉平衡树主要包含AVL树以及红黑树,本篇主要讲解AVL树。 下面我们了解一下AVL树。 二、AVL树定义以及相关概念 AVL树定义 一棵AVL树是其每个结点的平衡因子绝对值最多相差1的二叉查找树。 平衡因子?这是什么鸟,别急,继

  • @RequestParam,@PathParam,@PathVariable等注解区别

    @RequestParam和@PathVariable注解是用于从request中接收请求的,两个都可以接收参数,关键点不同的是@RequestParam是从request里面拿取值,而@PathVariable是从一个URI模板里面来填充 @RequestParam看下面一段代码: http://localhost:8080/springmvc/hello/101?param1=10&param2=20 根据上面的这个URL,你可以用这样的方式来进行获取 publicStringgetDetails(@RequestParam(value="param1",required=true)Stringparam1,@RequestParam(value="param2",required=false)Stringparam2){...}@RequestParam支持下面四种参数 defaultValue如果本次请求没有携带这个参数,或者参数为空,那么就会启用默认值name绑定本次参数的名称,要跟URL上面的一样required这个参数是不是必须的value跟name一样的作用,是

  • java注解(一)

    什么是注解? 注解(Annotation)是JDK5的新特性,是一种特殊的类,作用类似于注释,相当于是一个标记,可以标记在一个类身上的不同位置,可以修饰不同的成员变量、方法甚至是类。简单来说:就是相当于一些类似于注释的信息和源程序中的元素绑定的一种技术,这种技术叫做注解。这种手段可以通过反射获取到元素对象,在获取到这个元素上面绑定的注解,通过绑定的注解获取里面配置信息,从而达到能够在程序运行阶段通过这些信息动态地改变程序的运行逻辑。 为什么使用注解? 1.能够灵活地使用框架提供的注解,最后能够读懂框架的源码 2.能够配合反射将代码书写更加的灵活,更加易于维护易于扩展,Properties配置,XML配置,注解配置[Java配置] 3.极大程度地简化了代码,提高了代码的可读性 怎么使用注解? 自定义注解并且使用 四种使用注解的方式: 格式一:@注解的名称(属性名1=属性值1,属性名2=属性值2,属性名3=属性值3,...属性名n=属性值n)  注意:如果有两个以上的属性,有多少个属性就必须给多少个属性赋值格式二:适用于注解只有一个成员  @注解的名称(属性值)格式三:适用

  • Google地球连接不到服务器的解决方法

    Google地球连接不到服务器的解决方法 1、运行中输入inetcpl.cpl点击确定按钮,如下图所示: 2、调出Internet选项卡,点击连接选项卡,如下图所示: 3、在连接界面,点击局域网设置,如下图所示: 4、在局域网设置界面勾选lan使用代理服务器,地址输入map.google.com,点击确定按钮,如下图所示: 5、重新启动Google地球就可以了,记住查看玩Google地球后取消局域网代理设置,否则其它网页会打不开,如下图所示: 6、GoogleEarth打不开如何处理? 1、打开hosts(目录C:\Windows\System32\drivers\etc),清空里面的所有内容。2、将以下几行字,复制到hosts文件里,保存退出,那就能正常运行GoogleEarth了!173.194.64.141www.panoramio.com173.194.46.19www.google.com173.194.46.1kh.google.com203.208.36.1kh.google.com203.208.36.2kh.google.com203.208.36.3kh.

  • php面试题

    面试很多次,分享一些遇到的笔试&面试问题 session和cookie的区别 session实现原理 session如何共享 禁用cookie如何使用session include和require区别  php取文件后缀名 php获取服务器和客户端IP php规范(取名、注释、自动加载) php运行模式 php设计模式 写个email检验正则 用php写个冒泡排序 用php写个二分法快速排序 输出给定字符串所有可能的子字符串,如abcd=>aabacadabcabdacdbbcbdbcdccddabcd 将递增数组的前若干项平移至末尾后的数组称为翻转数组([1,2,3,4]=>[3,4,1,2]),给定翻转数组求其中数值最小的元素值 tp框架有哪些不足 比较tp和yii2 count('dwfeefe')=? redis和memcached区别及各自使用场景 接口一般要遵循哪些设计规范 接口安全应该注意哪些 redis如何实现消息队列 网站性能优化需要考虑哪些 简述一个秒杀系统架构 apache运行模式有哪些 apache禁止访问指定目录如何实现 apac

  • 8_对象创建、static 关键字、静态变量和成员变量的区别、文档

    一、对象创建   Students=newStudent(); 步骤: (1)加载Student.class文件进内存; (2)在栈内存中为s开辟空间; (3)在堆内存为学生对象开辟空间; (4)对学生对象的成员变量进行默认初始化; (5)对学生对象的成员变量进行显示初始化; (6)通过构造方法对学生对象的成员变量赋值; (7)学生对象初始化完毕,把对象地址赋值给s变量。   二、static关键字 1、特点: (1)随着类的加载而加载; (2)优先于对象存在; (3)被类的所有对象共享; (4)可以通过类名直接调用。 2、注意事项: (1)在静态方法中没有this关键字; (2)静态方法只能访问静态的成员变量和成员方法。     三、静态变量和成员变量的区别 1、所属不同   静态变量属于类,所以也称为类变量;   成员变量属于对象,所以也称实例变量。 2、内存中位置不同   静态变量存储于方法区的静态区;   成员变量存储于堆内存。 3、内存出现的时间不同   静态变量随着类的加载而加载,随着类的消失而消失;   成员变量随着对象的创建而存在,随着对象

  • 获取时间的特殊字段TimeHelp

    publicclassDateHelp{ privatefinalstaticStringFORMAT_TIME="yyyy-MM-ddHH:mm:ss"; privatefinalstaticStringFORMAT_TO_DEFAULT_TIME="yyyy-MM-dd22:00:00"; /** *获取当前时间 * *@returnString(如:2019-06-2816:46:47) */ publicstaticStringgetTimeString(){ @SuppressLint("SimpleDateFormat") SimpleDateFormatdf=newSimpleDateFormat(FORMAT_TIME); Calendarcalendar=Calendar.getInstance(); returndf.format(calendar.getTime()); } /** *获取日期年份 * *@paramdatedate *@returnint(如:2019) */ publicstaticintgetYear(Datedate){ Calenda

相关推荐

推荐阅读