范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

云原生K8Smaster节点更换IP以及master高可用故障模拟测试

  一、前言
  根据小伙伴提的问题,这里专门出一篇文章分析master节点挂了不可用的场景分析,希望这篇文章对小伙伴有用;其实VIP的方案实现高可用,还有更可靠的方案,也是我们目前生成环境在使用的高可用方案,后面也会分享出来,请小伙伴耐心等待~ 二、配置 多个master 节点
  如果直接部署单master或者多master k8s环境,可以参考我这篇文章:「云原生」Kubernetes(k8s)最完整版环境部署(V1.24.1)
  1)节点信息
  hostname
  IP
  节点类型
  local-168-182-110,cluster-endpoint
  192.168.182.110,VIP:192.168.182.220
  master
  local-168-182-111
  192.168.182.111
  node
  local-168-182-112
  192.168.182.112
  node
  local-168-182-113
  192.168.182.112
  master backup1
  local-168-182-130
  192.168.182.112
  master backup2 1)安装docker或containerd# 配置yum源 cd /etc/yum.repos.d ; mkdir bak; mv CentOS-Linux-* bak/ # centos7 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo # centos8 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repo  # 安装yum-config-manager配置工具 yum -y install yum-utils # 设置yum源 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 安装docker-ce版本 yum install -y docker-ce # 启动 systemctl start docker # 开机自启 systemctl enable docker # 查看版本号 docker --version # 查看版本具体信息 docker version  # Docker镜像源设置 # 修改文件 /etc/docker/daemon.json,没有这个文件就创建 # 添加以下内容后,重启docker服务: cat >/etc/docker/daemon.json< /etc/yum.repos.d/kubernetes.repo << EOF [k8s] name=k8s enabled=1 gpgcheck=0 baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ EOF2、修改sandbox_image 镜像源# 导出默认配置,config.toml这个文件默认是不存在的 containerd config default > /etc/containerd/config.toml grep sandbox_image  /etc/containerd/config.toml sed -i "s#k8s.gcr.io/pause#registry.aliyuncs.com/google_containers/pause#g"       /etc/containerd/config.toml # 或者 sed -i "s#registry.k8s.io/pause#registry.aliyuncs.com/google_containers/pause#g"       /etc/containerd/config.toml # 检查 grep sandbox_image  /etc/containerd/config.toml3、配置containerd cgroup 驱动程序systemd
  kubernets自v1.24.0后,就不再使用docker.shim,替换采用containerd作为容器运行时端点。因此需要安装containerd(在docker的基础下安装),上面安装docker的时候就自动安装了containerd了。这里的docker只是作为客户端而已。容器引擎还是 containerd  。sed -i "s#SystemdCgroup = false#SystemdCgroup = true#g" /etc/containerd/config.toml # 应用所有更改后,重新启动containerd systemctl restart containerd4、开始安装kubeadm,kubelet和kubectl# 不指定版本就是最新版本,当前最新版就是1.25.4 yum install -y kubelet-1.25.4  kubeadm-1.25.4  kubectl-1.25.4 --disableexcludes=kubernetes # disableexcludes=kubernetes:禁掉除了这个kubernetes之外的别的仓库 # 设置为开机自启并现在立刻启动服务 --now:立刻启动服务 systemctl enable --now kubelet  # 查看状态,这里需要等待一段时间再查看服务状态,启动会有点慢 systemctl status kubelet  # 查看版本  kubectl version yum info kubeadm5、master节点加入k8s集群# 证如果过期了,可以使用下面命令生成新证书上传,这里会打印出certificate key,后面会用到 CERT_KEY=`kubeadm init phase upload-certs --upload-certs|tail -1`  # 其中 --ttl=0 表示生成的 token 永不失效. 如果不带 --ttl 参数, 那么默认有效时间为24小时. 在24小时内, 可以无数量限制添加 worker. echo `kubeadm token create --print-join-command --ttl=0` " --control-plane --certificate-key $CERT_KEY --v=5"  # 拿到上面打印的命令在需要添加的节点上执行  # --control-plane 标志通知 kubeadm join 创建一个新的控制平面。加入master必须加这个标记 # --certificate-key ... 将导致从集群中的 kubeadm-certs Secret 下载控制平面证书并使用给定的密钥进行解密。这里的值就是上面这个命令(kubeadm init phase upload-certs --upload-certs)打印出的key。  mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
  查看节点 kubectl get nodes kubectl get nodes -owide
  三、更换 K8S master 节点 IP(master 高可用)1)节点信息
  hostname
  IP
  节点类型
  local-168-182-110,cluster-endpoint
  192.168.182.110,VIP:192.168.182.220
  master
  local-168-182-111
  192.168.182.111
  node
  local-168-182-112
  192.168.182.112
  node
  local-168-182-113
  192.168.182.112
  master backup1
  local-168-182-130
  192.168.182.112
  master backup2 2)master节点安装keepalived1、安装 keepalivedyum install keepalived -y2、配置 keepalived
  master  cat > /etc/keepalived/keepalived.conf << EOF global_defs {    notification_email {      acassen@firewall.loc      failover@firewall.loc      sysadmin@firewall.loc    }    notification_email_from fage@qq.com    smtp_server 127.0.0.1    smtp_connect_timeout 30    router_id NGINX_MASTER } vrrp_instance VI_1 {     state MASTER     interface ens33     virtual_router_id 51 # VRRP 路由 ID实例,每个实例是唯一的     priority 100    # 优先级,备服务器设置 90     advert_int 1    # 指定VRRP 心跳包通告间隔时间,默认1秒     authentication {         auth_type PASS         auth_pass 1111     }     # 虚拟IP     virtual_ipaddress {         192.168.182.220/24     }     track_script {         check_nginx     } } EOF
  master backup1  cat > /etc/keepalived/keepalived.conf << EOF global_defs {    notification_email {      acassen@firewall.loc      failover@firewall.loc      sysadmin@firewall.loc    }    notification_email_from fage@qq.com    smtp_server 127.0.0.1    smtp_connect_timeout 30    router_id NGINX_MASTER } vrrp_instance VI_1 {     state MASTER     interface ens33     virtual_router_id 51 # VRRP 路由 ID实例,每个实例是唯一的     priority 90    # 优先级,备服务器设置 90     advert_int 1    # 指定VRRP 心跳包通告间隔时间,默认1秒     authentication {         auth_type PASS         auth_pass 1111     }     # 虚拟IP     virtual_ipaddress {         192.168.182.220/24     }     track_script {         check_nginx     } } EOF
  master backup2  cat > /etc/keepalived/keepalived.conf << EOF global_defs {    notification_email {      acassen@firewall.loc      failover@firewall.loc      sysadmin@firewall.loc    }    notification_email_from fage@qq.com    smtp_server 127.0.0.1    smtp_connect_timeout 30    router_id NGINX_MASTER } vrrp_instance VI_1 {     state MASTER     interface ens33     virtual_router_id 51 # VRRP 路由 ID实例,每个实例是唯一的     priority 80    # 优先级,备服务器设置 80     advert_int 1    # 指定VRRP 心跳包通告间隔时间,默认1秒     authentication {         auth_type PASS         auth_pass 1111     }     # 虚拟IP     virtual_ipaddress {         192.168.182.220/24     }     track_script {         check_nginx     } } EOF3、启动并设置开机启动systemctl daemon-reload systemctl restart keepalived && systemctl enable keepalived && systemctl status keepalived  # 查看 ip a
  3)配置hosts192.168.182.110 local-168-182-110 192.168.182.111 local-168-182-111 192.168.182.112 local-168-182-112 192.168.182.113 local-168-182-113 # VIP 192.168.182.220 cluster-endpoint4)修改配置
  到K8S master节点 /etc/kubernetes/manifests  目录下,我们主要修改etcd.yaml  ,kube-apiserver.yaml  这两个配置文件。# 这里使用sed批量替换 cd /etc/kubernetes/ # 先查 grep -rn "192.168.182" * # 替换ip sed -i "s/192.168.182.110/192.168.182.220/g" `grep -rl  ./` # 替换域名 sed -i "s/local-168-182-110/cluster-endpoint/g" `grep -rl  ./`  # 检查 grep -r "192.168.182" *
  5)生成新的admin用config文件cd /etc/kubernetes  mv admin.conf admin.conf_bak  # 使用如下命令生成新的admin.conf kubeadm init phase kubeconfig admin --apiserver-advertise-address 192.168.182.220  # cluster-endpoint-》192.168.182.220 sed -i "s/192.168.182.220/cluster-endpoint/g" admin.conf6)删除旧的证书,生成新证书cd /etc/kubernetes/pki  # 先备份 mv apiserver.key apiserver.key.bak mv apiserver.crt apiserver.crt.bak  # 使用如下命令生成 kubeadm init phase certs apiserver --apiserver-advertise-address 192.168.182.220 --apiserver-cert-extra-sans "192.168.182.220,cluster-endpoint" #  --apiserver-cert-extra-sans "192.168.182.220,cluster-endpoint":设置了这个,之后加入节点验证证书阶段就不会报错了。
  7)重启docker或者containerd,kubeletsystemctl restart docker containerd kubelet  # 查看,可以看到master节点现在已经起来了 cd /etc/kubernetes kubectl get nodes --kubeconfig=admin.conf  # 修改配置,后续可以使用kubectl get nodes查看K8S集群状态了 cd /etc/kubernetes cp admin.conf ~/.kube/config  kubectl get nodes
  8)查看ETCD# 查看etcd pod kubectl get pods -n kube-system |grep etcd  # 登录 POD_NAME=`kubectl get pods -n kube-system |grep etcd|head -1|awk "{print $1}"` kubectl exec -it $POD_NAME -n kube-system -- sh  ## 配置环境 alias etcdctl="etcdctl --endpoints=https://127.0.0.1:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key"   ## 查看 etcd 集群成员列表 etcdctl member list9)解决 node 节点 NotReady状态1、从master节点拷贝ca.crt到node节点对应的目录scp /etc/kubernetes/pki/ca.crt local-168-182-111:/etc/kubernetes/pki/ scp /etc/kubernetes/pki/ca.crt local-168-182-112:/etc/kubernetes/pki/2、修改node节点的kubelet.conf
  把 server: https://local-168-182-110:6443  修改为现在master节点的地址server: https://cluster-endpoint:6443  sed -i "s/local-168-182-110/cluster-endpoint/g" /etc/kubernetes/kubelet.conf3、重启docker或者containerd,kubeletsystemctl restart docker containerd kubelet四、故障模式测试1)模拟VIP漂移# 将master节点上的keepalived 停掉 systemctl stop keepalived
  查看节点信息 kubectl get nodes
  从上图可知VIP已经漂移到master backup1节点了,不影响集群,接下来恢复故障。 # 将master节点上的keepalived 启动 systemctl start keepalived
  【结论】master节点故障恢复后,VIP会从新漂移回到原先的master节点。
  查看节点信息 kubectl get nodes
  2)节点故障测试(一台master故障)
  模拟master节点故障(手动关机) # 关机192.168.182.110 showdown -h now # 在192.168.182.113	backup master节点查看集群节点状态 kubectl get nodes
  【结论】一台master故障,不影响集群。 3)master节点故障模拟(两台master故障)
  2、模拟master节点故障(手动关机) # 关机192.168.182.113 showdown -h now # 在192.168.182.130	backup master节点查看集群节点状态 kubectl get nodes
  【错误】 The connection to the server cluster-endpoint:6443 was refused - did you specify the right host or port?
  发现两个master节点,挂了一个master节点是不可用的。原因:当两个master节点还是需要2个节点可用。只有大于2个master节点才允许挂master节点,我们可以查一下允许的容器。会发现api-server的容器一直在重启或者直接挂了,小伙伴也可以去查看一下日志。stackoverflow答案 crictl ps 2>/dev/null
  【建议】所以我们部署多master高可用节点数量必须大于等于3,这样才能保证挂一个master节点,集群不会受影响。
  K8S master节点更换IP以及master高可用故障模拟测试就先到这里,有任何疑问欢迎给我留言,后续会持续更新【云原生+大数据】相关的文章~

十世班禅娶19岁女学生为妻,此后脱下袈裟,独生女回国后入读清华2019年10月1日,在庆祝中华人民共和国成立七十周年阅兵仪式上,十世班禅之女仁吉旺姆作为致敬方阵中的一员现身现场。那日,她身着藏族传统服装,在花车上高举父亲画像,接受观礼人群和亿佩洛西走了,台湾开始面临真正的问题8月财经新势力解放军4日开始演练,高雄台当局提醒当地渔民避免进入演练水域。台媒8月3日消息称解放军将于8月4日中午12时至7日中午12时,在台湾省北部东北部西北东部南部和西南海域进七月十五中元节鬼门开,3种人不能上坟,说的是哪3种人?在中国几千年的文化传承中,一直以孝立国,孝不仅要对活着的人们,还要对逝去的先人有敬孝和敬畏之心。中国有四大鬼节,分别是清明节(公历四月五日)中元节(农历七月十五)上巳节(农历三月初大陆军演扩大?台军机挂弹升空,美军7架侦察机起飞要干什么从图中可见炮兵旅3门远程火箭炮依次排列,准备发射火箭弹一引言8月5日,我军封锁台岛演习已经过去24个小时了,据台湾媒体报道,解放军在台湾地区增设了第7个演习区域,封锁演习时间有可能离婚6年后,王宝强有了新老婆,马蓉放出狠话走着瞧离婚6年后,王宝强有了新老婆,马蓉放出狠话走着瞧,看了王的婚姻,才明白离婚是最好的选择。有人说王是娶了大学生的农民工,也有人说这分明是一个电影影帝娶了一个草根女人。王的婚姻让我们明我帮了女同事一点小忙,她非常感激邀请我吃饭,我的主管职位没了女同事忽然说张哥,我和客户约好了签合同,可是我的车子没油了!你能不能陪我去啊?我二话没说就答应了,随后她邀请我吃饭,结果,月底她升职加薪了,我大怒,她却说了一番令我目瞪口呆的话。图百病皆由寒湿起,三伏祛湿攻略!5招教你如何祛湿三伏,是初伏中伏和末伏的统称,它的日期是由节气和干支纪日相配合来决定的,气候特点是气温高湿度大风速小。三伏天的伏,表示阴气受阳气所迫藏伏地下也指伏邪,就是六淫邪气中的暑邪。2022试驾全新本田XR在国内的小型SUV市场,东风本田XRV一直保持着领先的优势,时常占据细分市场月度销量冠军的位置,深受年轻消费者的喜爱。而截止目前,本田XRV的累计销量更是突破了120万辆大关,足见台湾省歌手田馥甄歌曲被下架,炎亚纶被品牌解约,表个态这么难?近日娱乐圈里出现了一场特殊的打卡活动,众多明星大咖纷纷转发央视新闻网的只有一个中国的帖子,表达内心对祖国的热爱和支持。这次可以说众星云集,活跃于一线的明星基本都表态了,然而有两位台曹德旺预言已应验?未来持有多套房的家庭,或面临3个结果央行调查统计司曾发布这样一则调研数据城镇家庭户均317。9万元,净资产户均289万元,其中住房资产占总资产的59。1,远高于欧美其他国家水平,有房子的城镇家庭占96,拥有两套房以上新款本田飞度即将升级内饰外观均提升,将新增RS车型及混动系统近日,本田最新发布了全新一代的飞度的官图,新车将会率先在日本市场上市,而这次更新主要将会是针对外观内饰以及将会新增了两款不同的车型,分别新增了搭配了外观套件的RS车型以及eHEV的
中兴再布局2亿加注西安理工男中兴通讯(000063)好像尝到了甜头。1月16日,中兴通讯公告称,陕西众投湛卢二期股权投资合伙企业完成备案,LP阵容包括中兴通讯德科立(688205)与西安创新基金,出资额分别为西安有一处不为人知的好地方,里面有十几只老虎可以近距离观看西安周边有一处不为人知的好地方虎园,里面有十几只真老虎大家可以近距离的观看,周末带着家人游玩好地方,你去过吗?恰阳光明媚,温度适宜。你还我在家里吗?快带上家人孩子,小仙儿今天给你推无人机秀烟花秀文艺演出元宵节西安将闹翻天(附各区县攻略)2023年元宵节西安怎么过?2月3日,华商全媒体记者从西安各区县进行了了解,整理如下西咸新区2月5日,西咸新区元宵节焰火晚会,将与您相约昆明池畔。活动时间及地点2023年2月5日(从聚落到村,唐朝是如何一步步完善村与村官制度的?引言要说唐朝,大部分人想到的还是黄金时代,不管是政治还是经济等各个领域都得到了前所未有的发展。从宏观来看,唐朝的确是实现了统一,社会也确实是日趋稳定,但是从如果落于继承制度的话,即亚足联给足协泼冷水,曝国脚薪水降至月薪25万,没办法养家糊口亚足联给足协泼冷水,曝国脚薪水降至月薪25万,没办法养家糊口亚足联是亚洲足球最高的机构,在卡塔尔世界杯结束后,亚洲足球整体发展是向上的,不过,中国足球的退步发展让亚足联感到震惊。在爱奇艺被7年老粉告了日前,视频平台爱奇艺因为限制投屏一事,引起了诸多网友们的不满,被推上了风口浪尖,甚至还被上海市消保委点名批评。据现代快报报道,广东一名用户因此将爱奇艺告上法庭,北京市互联网法院已于李想炮轰小鹏P7灯语设计纯种杀马特一向心直口快的理想汽车创始人李想最近又语出惊人,炮轰小鹏汽车产品设计走的是杀马特风格。日前,有网友发布了一段路遇小鹏P7的视频,视频中,车辆贯穿式LED日行灯不断闪烁亮起,灯光效果权威破解马斯克拼了老命也要裁员推特的背后逻辑?中美互联网社会化应用效率间的差距让号称外星人的马斯克感到惊讶和佩服,是驱动马斯克开启美国互联网行动的主要原因!最近马斯克调整推特,看花了西方资本的眼,也扰动了全球网民的心,让人看到2023届互联网大厂校招薪资流出,大部分年薪20w50w之间说起年轻人的理想公司,互联网大厂一定榜上有名!如今,2023年春招已经正式打响,陆续各大厂的校招薪资都出炉了。今天,小说哥就带大家逐一看看,各个大厂的2023届校招薪资究竟是多少?影响因子11中科院2区,审稿速度快,不收版面费!发刊请DD欢迎关注公众号邂逅SCI今天小编就为大家介绍一本,影响因子11,审稿速度快的期刊JournalofClinicalMicrobiology。JournalofClinic关注面向全省征集!为深入实施云南省十四五科技创新规划充分发挥科技创新对云南高原特色现代农业的支撑和引领作用加快推动云南高原特色现代农业高质量发展云南省科学技术厅征集2024年高原特色现代农业领域科技