专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

云原生稳定性和可扩展性更强的k8s高可用方案讲解与实战操作

  一、概述
  在前面我的文章里或者网上其它资料讲高可用方案,基本上大多数使用KeepalivedVIP的方案,但是这种方案并不是最佳的,还有更优的高可用方案,下面将详细介绍。如果小伙伴对k8smasterKeepalivedVIP的方案不了解的,可以参考我这篇文章:云原生Kubernetes(k8s)最完整版环境部署(V1。24。1)
  二、架构
  三、开始部署1)节点信息
  hostname
  IP
  角色
  local168182110
  192。168。182。110
  master
  local168182111
  192。168。182。110
  node
  local168182112
  192。168。182。110
  node
  local168182113
  192。168。182。113
  master
  local168182130
  192。168。182。130
  master2)前期准备(所有节点)1、配置hosts192。168。182。110local168182110192。168。182。111local168182111192。168。182。112local168182112192。168。182。113local168182113192。168。182。130local1681821302、配置互信直接一直回车就行sshkeygensshcopyidi。sshidrsa。pubrootlocal168182110sshcopyidi。sshidrsa。pubrootlocal168182111sshcopyidi。sshidrsa。pubrootlocal168182112sshcopyidi。sshidrsa。pubrootlocal168182113sshcopyidi。sshidrsa。pubrootlocal1681821303、时间同步yuminstallchronyysystemctlstartchronydsystemctlenablechronydsystemctlstatuschronydchronycsources4、关闭防火墙systemctlstopfirewalldsystemctldisablefirewalld5、禁用SELinux临时关闭setenforce0永久禁用sedisSELINUXenforcingSELINUXdisabledetcselinuxconfig6、关闭swap临时关闭;关闭swap主要是为了性能考虑swapoffa可以通过这个命令查看swap是否关闭了free永久关闭sedris。swap。etcfstab7、设置bridgenfcalliptablescatEOFsudoteeetcmodulesload。dk8s。confoverlaybrnetfilterEOFsudomodprobeoverlaysudomodprobebrnetfilter设置所需的sysctl参数,参数在重新启动后保持不变catEOFsudoteeetcsysctl。dk8s。confnet。bridge。bridgenfcalliptables1net。bridge。bridgenfcallip6tables1net。ipv4。ipforward1EOF应用sysctl参数而不重新启动sudosysctlsystem3)安装容器docker(所有节点)配置yum源cdetcyum。repos。d;mkdirbak;mvCentOSLinuxbakcentos7wgetOetcyum。repos。dCentOSBase。repohttp:mirrors。aliyun。comrepoCentos7。repo安装yumconfigmanager配置工具yumyinstallyumutils设置yum源yumconfigmanageraddrepohttp:mirrors。aliyun。comdockercelinuxcentosdockerce。repo安装dockerce版本yuminstallydockerce启动并设置开机自启设置为开机自启并现在立刻启动服务now:立刻启动服务systemctlenablenowdocker查看版本号dockerversion查看版本具体信息dockerversionDocker镜像源设置修改文件etcdockerdaemon。json,没有这个文件就创建配置dockercgroup驱动程序systemd添加以下内容后,重启docker服务:catetcdockerdaemon。jsonEOF{registrymirrors:〔http:hubmirror。c。163。com〕,execopts:〔native。cgroupdriversystemd〕}EOF加载systemctlrestartdocker查看systemctlstatusdocker4)配置k8syum源(所有节点)catetcyum。repos。dkubernetes。repoEOF〔k8s〕namek8senabled1gpgcheck0baseurlhttps:mirrors。aliyun。comkubernetesyumreposkubernetesel7x8664EOF5)开始安装kubeadm,kubelet和kubectl(所有节点)查找所有的版本,这里选择1。23。x版本yumshowduplicateslistkubeletdisableexcludeskubernetes:禁掉除了这个kubernetes之外的别的仓库yuminstallykubelet1。23。6kubeadm1。23。6kubectl1。23。6disableexcludeskubernetes设置为开机自启并现在立刻启动服务now:立刻启动服务systemctlenablenowkubelet查看状态,这里需要等待一段时间再查看服务状态,启动会有点慢systemctlstatuskubelet查看版本kubectlversionyuminfokubeadm6)使用kubeadm初始化集群(第一个master节点)
  最好提前把镜像下载好,这样安装快dockerpullregistry。aliyuncs。comgooglecontainerskubeapiserver:v1。23。6dockerpullregistry。aliyuncs。comgooglecontainerskubecontrollermanager:v1。23。6dockerpullregistry。aliyuncs。comgooglecontainerskubescheduler:v1。23。6dockerpullregistry。aliyuncs。comgooglecontainerskubeproxy:v1。23。6dockerpullregistry。aliyuncs。comgooglecontainerspause:3。6dockerpullregistry。aliyuncs。comgooglecontainersetcd:3。5。10dockerpullregistry。aliyuncs。comgooglecontainerscoredns:v1。8。6
  集群初始化kubeadminitapiserveradvertiseaddress192。168。182。110imagerepositoryregistry。aliyuncs。comgooglecontainerskubernetesversionv1。23。6controlplaneendpoint192。168。182。110servicecidr10。1。0。016podnetworkcidr10。244。0。016v5imagerepositorystring:这个用于指定从什么位置来拉取镜像(1。13版本才有的),默认值是k8s。gcr。io,我们将其指定为国内镜像地址:registry。aliyuncs。comgooglecontainerskubernetesversionstring:指定kubenets版本号,默认值是stable1,会导致从https:dl。k8s。ioreleasestable1。txt下载最新的版本号,我们可以将其指定为固定版本(v1。22。1)来跳过网络请求。apiserveradvertiseaddress指明用Master的哪个interface与Cluster的其他节点通信。如果Master有多个interface,建议明确指定,如果不指定,kubeadm会自动选择有默认网关的interface。这里的ip为master节点ip,记得更换。podnetworkcidr指定Pod网络的范围。Kubernetes支持多种网络方案,而且不同网络方案对podnetworkcidr有自己的要求,这里设置为10。244。0。016是因为我们将使用flannel网络方案,必须设置成这个CIDR。controlplaneendpointclusterendpoint是映射到该IP的自定义DNS名称,这里配置hosts映射:127。0。0。1clusterendpoint。这将允许你将controlplaneendpointclusterendpoint传递给kubeadminit,并将相同的DNS名称传递给kubeadmjoin。稍后你可以修改clusterendpoint以指向高可用性方案中的负载均衡器的地址。
  mkdirpHOME。kubesudocpietckubernetesadmin。confHOME。kubeconfigsudochown(idu):(idg)HOME。kubeconfig
  查看节点信息kubectlgetnodes
  发现节点是NotReady状态,查看日志是因为没有装CNI网络插件,接下来就开始安装Calico网络插件,当然也可以选择其它网络插件。7)安装Calico网络插件wgethttps:docs。projectcalico。orgmanifestscalico。yamlkubectlapplyfcalico。yaml查看kubectlgetallnkubesystemgrepcalico等calicopod都正常了,再查看节点状态kubectlgetpodsAkubectlgetnodes
  8)配置IPVS(所有节点)1、加载ipvs相关内核模块modprobeipvsmodprobeipvsshmodprobeipvsrrmodprobeipvswrr
  所有节点验证开启了ipvs:lsmodgrepipvs2、安装ipvsadm工具yuminstallipsetipvsadmy3、编辑kubeproxy配置文件,mode修改成ipvskubectleditconfigmapnkubesystemkubeproxy4、重启kubeproxy先查看kubectlgetpodnkubesystemgrepkubeproxy再delete让它自拉起kubectlgetpodnkubesystemgrepkubeproxyawk{system(kubectldeletepod1nkubesystem)}再查看kubectlgetpodnkubesystemgrepkubeproxy9)master节点加入集群
  【问题】
  Oneormoreconditionsforhostinganewcontrolplaneinstanceisnotsatisfied。unabletoaddanewcontrolplaneinstancetoaclusterthatdoesnthaveastablecontrolPlaneEndpointaddress
  【解决】添加如下配置:controlPlaneEndpoint:192。192。168。110kubectleditcmkubeadmconfignkubesystem
  开始执行下面的命令将master节点加入集群在第一个master节点上执行以下获取执行命令证如果过期了,可以使用下面命令生成新证书上传,这里会打印出certificatekey,后面会用到CERTKEYkubeadminitphaseuploadcertsuploadcertstail1其中ttl0表示生成的token永不失效。如果不带ttl参数,那么默认有效时间为24小时。在24小时内,可以无数量限制添加worker。echokubeadmtokencreateprintjoincommandttl0controlplanecertificatekeyCERTKEYv5拿到上面打印的命令在需要添加的节点上执行controlplane标志通知kubeadmjoin创建一个新的控制平面。加入master必须加这个标记certificatekey。。。将导致从集群中的kubeadmcertsSecret下载控制平面证书并使用给定的密钥进行解密。这里的值就是上面这个命令(kubeadminitphaseuploadcertsuploadcerts)打印出的key。mkdirpHOME。kubesudocpietckubernetesadmin。confHOME。kubeconfigsudochown(idu):(idg)HOME。kubeconfig
  等网络插件自动安装完后,再查看节点状态kubectlgetnodes
  10)修改master节点指向自己apiserver1、修改配置cdetckubernetes修改etckubernetesadmin。conf,etckuberneteskubelet。conf文件中的serverip改成127。0。0。1vietckubernetesadmin。confvietckuberneteskubelet。conf覆盖配置cpetckubernetesadmin。conf。kubeconfig2、删除旧的证书,生成新证书cdetckubernetespki先备份mvapiserver。keyapiserver。key。bakmvapiserver。crtapiserver。crt。bak使用如下命令生成,分别在三个master节点上执行kubeadminitphasecertsapiserverapiserveradvertiseaddress192。168。182。110apiservercertextrasans127。0。0。1,10。1。0。1kubeadminitphasecertsapiserverapiserveradvertiseaddress192。168。182。113apiservercertextrasans127。0。0。1,10。1。0。1kubeadminitphasecertsapiserverapiserveradvertiseaddress192。168。182。130apiservercertextrasans127。0。0。1,10。1。0。1apiservercertextrasans127。0。0。1:设置了这个,之后加入节点验证证书阶段就不会报错了。3、修改apiserverkubectlnkubesystemeditcmkubeadmconfigoyaml
  4、修改kubeprxoy配置kubectleditcmkubeproxyoyamlnkubesystem
  重启kubectldeletepodnkubesystemkubectlgetpodsnkubesystemgrepkubeproxyawk{print1}5、重启docker和kubeletsystemctlrestartdockerkubelet11)node节点上安装nginx
  这里使用nginx四层代理mvetcyum。repos。dCentOSBase。repoetcyum。repos。dCentOSBase。repo。backupwgetOetcyum。repos。dCentOSBase。repohttp:mirrors。aliyun。comrepoCentos7。repoyummakecacheyuminstallepelreleaseyumyinstallnginxyumyinstallnginxallmodules。noarch
  配置nginx,在nginx。conf添加如下配置:stream{实现四层代理功能upstreamkubeapiserver{定义集群,kubeapiserver是集群名称,可自行定义leastconn;默认调度策略是轮询,在轮询中,如果服务器down掉了,会自动剔除该服务器。serverlocal168182110:6443maxfails3failtimeout30s;集群组是三台服务器k8sapiserver组成serverlocal168182113:6443maxfails3failtimeout30s;serverlocal168182130:6443maxfails3failtimeout30s;}server{定义一个服务listen127。0。0。1:6443;需要监听的端口proxypasskubeapiserver;调用集群proxyconnecttimeout10s;连接超时时间proxytimeout300s;端口保持时间}}12)node节点加入集群在第一个master节点上执行以下获取执行命令证如果过期了,可以使用下面命令生成新证书上传,这里会打印出certificatekey,后面会用到CERTKEYkubeadminitphaseuploadcertsuploadcertstail1其中ttl0表示生成的token永不失效。如果不带ttl参数,那么默认有效时间为24小时。在24小时内,可以无数量限制添加worker。echokubeadmtokencreateprintjoincommandttl0certificatekeyCERTKEYv5示例如下:kubeadmjoin127。0。0。1:6443tokenesczfh。6ckynzi6wfj8jhnkdiscoverytokencacerthashsha256:bc8fb85184ed235b88afdba38f0a17976d353abb10d0739d25df452745d1eed8certificatekeya126867ad4d91721f157660df77cdea7862ebda8371280c3025c4cc45c23b85fv5
  修改etckuberneteskubelet。conf配置
  重启systemctlrestartkubelet
  等网络插件自动安装完后,再查看节点状态kubectlgetnodeskubectlgetpodsA
  13)卸载kubeadmresetrmrfetckubernetesrmfr。kubermfrvarlibetcd四、高可用故障模式测试1)master节点故障模拟(一个master故障)关机192。168。182。110showdownhnow在其它master节点上查看节点状态kubectlgetnodes
  【结论】如上图可知,挂一个master节点不影响集群。2)master节点故障模拟(两个master故障)关机192。168。182。113showdownhnow在其它master节点上查看节点状态kubectlgetnodes
  【结论】如上图可知,挂两个master节点,整个集群不可用,还是之前说的,三个master节点只允许挂一个master节点,这里就不细说了,可以参考我之前的文章:【云原生】K8Smaster节点更换IP以及master高可用故障模拟测试
  无VIP稳定性更强的k8s高可用方案讲解就先到这里了,也是我们目前生成环境中使用的方案,小伙伴有任何疑问,欢迎给我留言,后续会持续更新【云原生大数据】相关的文章,请小伙伴耐心等待

纸质信情怀,一直美在记忆深处纸质信情怀,一直美在记忆深处百味提笔如握手,见信如见人多么生动又形象的比喻呀!书信架起了亲情爱情友情的桥梁,再远的距离也不是距离。所有的情感书写在文字中,一封封来信,让你心安,让你二十大代表话心声杨霞云做老百姓喜爱的文艺工作者杨霞云当2022年的日历翻到10月,杨霞云的心情一天比一天激动。几乎天天晚上睡不着觉,掰着手指头,一天天地数日子。10月16日,党的二十大在北京开幕,杨霞云怀着无比激动的心情,第一你是我每一天的思念,想你,心中有你,温柔时刻触动着心灵烟雨迷蒙的红尘里,就算是苦苦的思念,也会有着一种诗意般的美!思念是无声的沟通,静默中也能传递依恋的情,思念是醇香的佳酿,一滴就能令人心醉神迷,漫长的人生路上,有你可想可念真好!想你你永远是我心中最重要的人,想你,念你,我心永恒时光四季,风月无边,可惜再也没有你相伴,我的心除了想你,还是想你。曾经那个我最爱的人,无论时光辗转多少季,我的爱永远只会给予你,我眼中的悲喜,眉间的惦记,梦里的痴迷,都只为你。你是互联网将是普通老百姓圆梦的最佳途径随着社会的发展我们跨过了农业时代和工业时代,进入到了全新的互联网时代。互联网起源于西方,却被中国发展壮大,如今,中国已经成为世界第一网络大国,随着互联网的全球化生活化,中国已经让互魔兽世界等暴雪游戏即将关服,80后的那些老网瘾少年再无情怀新闻链接当地时间2022年11月16日,暴雪娱乐发布声明,由于同网易的现有授权协议将在2023年1月23日到期,将暂停在中国大陆的大部分暴雪游戏服务,包括魔兽世界炉石传说守望先锋星家长纵容孩子成熊孩子!家校教育不了的,结局必定是社会的毒打这就是父母惯坏的熊孩子,愿牢狱之灾可以让他醒悟!早上听课,坐在教室后面。不一会儿,一名最后排学生,离开椅子,双膝跪到椅子上,坐在最后一排的孩子,身高160以上,体重接近100,小小四人赛分类题库现代社会之航空航天(34题)11961年4月12日,苏联航天员加加林乘坐飞船完成了世界上首次载人太空飞行,实现了人类进入太空的梦想。A联盟号B进步号C东方1号2中国第一颗人造卫星是于1970年4月24日发射的C罗28岁女友闪耀拉斯维加斯,穿宝石裙似美人鱼,只是用力过猛了当地时间11月16日,乔治娜罗德里格斯出现在拉斯维加斯的曼德勒海湾会议中心,参加在那里举办的2022年拉丁唱片学院年度人物晚会。尽管现年28岁的乔治娜跟唱片行业并不沾边,但因为是西世界上有哪几个社会主义国家?社会主义国家,就是实行社会主义制度的国家,社会主义的基本要素就是坚持公有制为主体,坚持人民当家做主,中华人民共和国是苏联解体后,世界上最大的社会主义国家。当今世界剩下的社会主义国家非诚勿扰黄菡消失后罕现身!苍老明显快认不出,女儿长像妈已工作饿了吗?戳右边关注我们,每天给您送上最新出炉的娱乐硬核大餐!大家还记得搭档孟非乐嘉主持非诚勿扰的主持人黄菡吗?自从退出该节目舞台后,就鲜少再看见她出现在公众视野了。11月18日,云
鸡胸肉不柴的秘诀,非油炸做成上校鸡块,高蛋白低脂肪关注大胖友图图,每天都能看到新奇,简单,美味又实用的食谱哦你需要准备的材料有250克鸡胸肉,2克盐,1克鸡粉,半勺生抽,一个鸡蛋白,半勺马铃薯淀粉,鸡蛋液适量,面粉适量先把250克推荐10道快手菜,香辣脆爽,超级下饭,一上桌都抢着吃我本身喜欢吃辣,相信有很多朋友和我一样喜欢吃辣东西,无辣不欢,其实吃辣有很多好处的,可以增强体质,驱寒散湿,经常吃辣椒的人比不吃辣椒的人体质会好一些,因为辣椒中含有很的维生素和胡萝重装亮相,点亮江田新夜色江田的夜晚是静谧的,朦胧的月光照在河道旁的景观步道上,风轻轻拂面而来。为契合龙舟夜渡这一特殊民俗,点亮河道夜色成为江田镇一直以来的努力目标,于2020年末便启动穿心溪周边美化景观改深化中越文旅合作打造跨境旅游典范11月1日,关于进一步加强和深化中越全面战略合作伙伴关系的联合声明(以下简称联合声明)发表。联合声明指出,中越双方同意推动落实合作保护和开发板约(德天)瀑布旅游资源协定,努力推动板好吃的10道家常菜做法,鲜香不腻,特解馋下饭,做法超简单大家好,欢迎大家来到我的美食自媒体,我是美食领域创作者锦绣V山东专注美食,让生活更有味。今天为大家带来了几道家常美食的做法,这几道美食也是深受大家的喜欢,而且是很常见的几道美食。天家用需要什么打印机?小米米家喷墨打印一体机,让家庭打印更便捷近两年以来,受各种大环境的影响,无论是居家办公还是线上教育,都逐渐成了常态化,而无论是办公学习还是教育,打印纸张的需求自始而终不间断,整个打印机市场也进入了飞速增长时期,为了减少外性能狗终于有替代品了?小米正式推出帧率检测APP也许很多人都不知道,手机厂商科技数码博主在测试手机性能的时候,使用的帧率测试软件不仅要付费,而且是恐怖的计时付费。不知道什么原因,这种面向手游的帧率检测工具,收费一向非常夸张。以性开胃解馋的几道下饭菜,聚餐时一定不能少剁椒辣炒鸡胗材料鸡胗,长青椒,剁椒,姜,葱,宴友食用油蒜,花椒,盐,料酒,老抽,香油做法1鸡胗清洗干净后切成薄片。2加姜末红剁椒料酒。3腌制20分钟左右。4长青椒洗净去籽切段,葱姜我国哪的花生油好吃?经对比,这8种花生油零添加,吃着放心俗话说柴米油盐酱醋茶,人间烟火也有趣,品味各地美食,食尽人间烟火,是人生至幸之事。大家好,我是小菲,一枚热爱美食的80后,如果恰好您也喜欢美食,那就关注我吧!古语有云开门七件事柴米运油16攻击2无人机首次振翅中国航展11月5日,参加第十四届中国航展的中国空军歼20飞机多机编队进行适应性飞行训练。新华社发(余红春摄)第十四届中国航展将于11月8日至13日在广东珠海举办。中国空军新闻发言人申进科6热搜,刘强东转让股份刘强东是我很喜欢,很佩服的一个人。他的选择就是最好的答案。他是个很实在的人,要相信有钱人的眼光,他说过他在京东如果没有绝对的控制权的话,他就不做了,曾经也是一个热血青年,东哥尽力了
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网