k8s多节点二进制部署以及Dashboard-UI

news2024/11/15 6:41:47

一.多Maser集群架构的了解

Kubernetes作为容器集群系统,通过健康检查+重启策略是实现Pod故障自我修复能力,通过调度室实现Pod分布式部署,并保持预期副本数,根据Node失效状态自动在其他Node拉起Pod,实现了应用层的高可用。

针对Kubernetes集群,高可用性还应包含以下两个层面的考虑:Etcd数据库的高可用性和Kubernetes Master组件的高可用性。而Etcd我们以及采用3个节点组建集群实现高可用,

Master节点是控制中心的角色,通过不断与工作节点上的Kubelet进行通信来维护整个集群的健康工作状态。如果Master节点故障,将无法使用kubect工具或者API如何集群管理。

Master节点主要有三个服务kube-apiserver,kube-controller-mansger和kube-schedule,其中kube-controller-mansger和kube-scheduler组件自身通过选择机制已实现了高可用,所以Master高可用主要针对kube-apiserver组件,而该组件是以HTTP API提供服务,因此对他高可用与Web服务器类似,增加负载均衡器对其负载均衡即可,并且可水平扩容

二、master2 节点部署

2.1 环境准备:

节点

IP地址

安装

master01

192.168.2.66

kube-apiserver,kube-controller-manager,kube-scheduler,etcd

node1

192.168.2.200

kubelet,kube-proxy,docker, etcd

node2

192.168.2.77

kubelet,kube-proxy,docker, etcd

master02

192.168.2.22

kube-apiserver,kube-controller-manager,kube-scheduler,etcd

lb01

192.168.2.11

Nginx L4 ,keepalived

lb02

192.168.2.33

Nginx L4 ,keepalived

关闭防火墙

systemctl stop firewalld

systemctl disable firewalld

关闭swap

swapoff -a

sed -ri 's/.*swap.*/#&/' /etc/fstab

根据规划设置主机名

hostnamectl set -hostname master02

在master节点以及各个Node节点均添加hosts

cat >> /etc/hosts <<EOF

192.168.2.66 master01

192.168.2.200 node01

192.168.2.77 node02

192.168.2.22 master02

EOF

将桥接的IPv4流量递到iptables的链

cat > /etc/sysctl.d/k8s.conf <<EOF

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-ip6tables = 1

EOF<br>sysctl --system

时间同步

yum -y install ntpdate

ntpdate time.windows.com

2.2 从master01节点上拷贝证书文件,各master组件的配置文件和服务管理文件到master02节点

scp -r /opt/etcd/ root@192.168.2.22:/opt/

scp -r /opt/kubernetes/ root@192.168.2.22:/opt

scp /usr/lib/systemd/system/{kube-apiserver,kube-controller-manager,kube-scheduler}.service root@192.168.2.22:/usr/lib/systemd/system/  

2.3 修改配置文件kube-apiserver中的IP

vim /opt/kubernetes/cfg/kube-apiserver

KUBE_APISERVER_OPTS="--logtostderr=true \

--v=4 \

--etcd-servers=https://192.168.2.66:2379,https://192.168.2.200:2379,https://192.168.2.77:2379 \

--bind-address=192.168.229.22 \ #修改

--secure-port=6443 \

--advertise-address=192.168.229.22 \ #修改

......

2.4 在master02节点上启动各服务器并设置开机自启

systemctl daemon-reload

systemctl enable --now kube-apiserver.service kube-controller-manager.service kube-scheduler.service

2.5 查看node节点状态

ln -s /opt/kubernetes/bin/* /usr/local/bin/

kubectl get nodes

scp -r .kube/ 192.168.2.22:/root #添加kubectl认证

kubectl get nodes

kubectl get nodes -o wide #-o=wide:输出额外信息;对于Pod,将输出Pod所在的Node名 此时在master02节点查到的node节点状态仅是从etcd查询到的信息,而此时node节点实际上并未与master02节点建立通信连接,因此需要使用一个VIP把node节点与master节点都关联起来

三.负载均衡部署

配置load balancer集群双机热备负载均衡(nginx实现负载均衡,keepalived实现双机热备)

3.1 配置nginx的官方在线yum源,配置本地nginx的yum源

cat > /etc/yum.repos.d/nginx.repo << 'EOF'

[nginx]

name=nginx repo

baseurl=http://nginx.org/packages/centos/7/$basearch/

gpgcheck=0

EOF

yum install nginx -y

3.2修改nginx配置文件,配置四层反向代理负载均衡,指定k8s群集2台master的节点ip和6443端口

3.3检查配置文件语法

nginx -t

3.4 检查配置文件语法

systemctl start nginx

systemctl enable nginx

netstat -natp | grep nginx

3.5 部署keepalived服务

yum install keepalived -y

3.6 修改keepalived配置文件

3.7创建nginx状态检查脚本

vim /etc/keepalived/check_nginx.sh
#!/bin/bash#egrep -cv "grep|$$" 用于过滤掉包含grep 或者 $$ 表示的当前Shell进程ID
count=$(ps -ef | grep nginx | egrep -cv "grep|$$")
 
if [ "$count" -eq 0 ];then
systemctl stop keepalived
fichmod +x /etc/keepalived/check_nginx.sh

3.8 启动keepalived服务(一定要先启动了nginx服务,再启动keepalived服务)

systemctl start keepalived
systemctl enable keepalived
ip a    #查看VIP是否生成

3.9 修改node节点上的bootstrap.kubeconfig,kubelet.kubeconfig配置文件为VIP

cd /opt/kubernetes/cfg/
vim bootstrap.kubeconfig
server: https://192.168.2.67:6443vim kubelet.kubeconfig
server: https://192.168.2.67:6443vim kube-proxy.kubeconfig
server: https://192.168.2.67:6443

三个配置文件修改相同,都修改为虚拟VIP即可,这里只展示一个文件的修改;两个Node节点都需要修改  

3.10 重启kubelet和kube-proxy服务

systemctl restart kubelet.service
systemctl restart kube-proxy.service

======在 master02节点上操作 ======

3.11测试创建pod

kubectl create deployment redis-master02 --image=redis  

3.12 查看Pod的状态信息

kubectl get pods
nginx-dbddb74b8-nf9sk 0/1 ContainerCreating 033s #正在创建中
kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-dbddb74b8-nf9sk 1/1 Running 080s #创建完成,运行中
 
kubectl get pods -o wide
//READY为1/1,表示这个Pod中有1个容器

3.13 在对应网段的node节点上操作,可以直接使用浏览器或者curl命令访问

curl10.244.1.3

3.14 这时在master01节点上查看nginx日志

kubectl logs nginx-matser02-9fbbbc86c-2ztgd

四、部署 Dashboard UI

Dashboard 介绍

仪表板是基于Web的Kubernetes用户界面。您可以使用仪表板将容器化应用程序部署到Kubernetes集群,对容器化应用程序进行故障排除,并管理集群本身及其伴随资源。

您可以使用仪表板来概述群集上运行的应用程序,以及创建或修改单个Kubernetes资源(例如部署,作业,守护进程等)。

例如,您可以使用部署向导扩展部署,启动滚动更新,重新启动Pod或部署新应用程序。仪表板还提供有关群集中Kubernetes资源状态以及可能发生的任何错误的信息。

====== 在 node 节点上操作 ======

上传镜像文件

====== 在 master1 节点上操作 ======

上传recommended.yaml文件到/opt/k8s日录中
vim recommended.yaml
kubectl apply-f recommended.yaml
#创建service account并绑定默认cluster-admin管理员集群角色
kubectl create serviceaccount dashboard-admin -n kube-system 
kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
kubectl get secret -n kube-system
kubectl describe secret dashboard-admin-token-5mwwc -n kube-system

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/358551.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

KUKA机器人_示教器的基本组成结构和功能介绍

KUKA机器人_示教器的基本组成结构和功能介绍 如何操作KUKA机器人? 通过KUKA机器人的手持操作器(KUKA smartPAD),或者叫示教器。 如下图所示, 可以通过示教器的各种按键菜单和触摸屏(手、触摸笔)来操作示教器。 下面对于示教器上的按键菜单的功能进行详细的说明: …

契约开发、测试你知多少?

契约维护的难题 如今微服务凭借其灵活、易开发、易扩展等优势深入人心&#xff0c;不同服务之间的集成和交互日渐繁多且复杂。这些服务之间交互的方式是多样的&#xff0c;常见的有 HTTP 请求和消息队列。在它们交互的过程中&#xff0c;会有服务的版本演进&#xff0c;交互信…

Mysql架构与内部模块

Mysql架构与内部模块 演示环境&#xff1a; MySQL 5.7 存储引擎&#xff1a;InnoDB 一、一条查询SQL是如何执行的&#xff1f; 程序或者工具要操作数据库&#xff0c;第一步跟数据库建立连接。 1、通信协议 首先&#xff0c;MySQL 必须要运行一个服务&#xff0c;监听默认的…

vue - vue中对Vant日历组件(calendar)的二次封装

vue中对vant日历选择器组件实现的的二次封装&#xff1b;主要实现功能如下: 主要功能&#xff1a; 日期区间选择&#xff08;基本&#xff09;&#xff1b;自定义选择器的底部按钮&#xff0c;添加清除时间操作&#xff08;slot插槽&#xff09;&#xff1b;指定默认选中的日期…

一种图片展示的完美方案,图片展示,object-fill

通常一般的处理 <style>.img-container {width: 300px;height: 200px;background: #f60;}img {width: 100%;height: 100%;}</style> </head> <body><div class"img-container"><img src"./行道树.png" alt""&g…

Java之JVM性能初探

一、JVM简介jvm是一种用于计算设备的规范&#xff0c;它是一个虚构出来的机器&#xff0c;是通过在实际的计算机上仿真模拟各种功能实现的。jvm包含一套字节码指令集&#xff0c;一组寄存器&#xff0c;一个栈&#xff0c;一个垃圾回收堆和一个存储方法域。JVM屏蔽了与具体操作…

AWS攻略——使用Public NAT解决私有子网实例访问互联网

文章目录创建NAT网关编辑Private子网路由测试知识点参考资料在《AWS攻略——子网》一文中&#xff0c;我们分别创建了一个Public子网和一个Private子网&#xff0c;并让Public子网中的实例可以SSH登录到Private子网的实例中。 现实场景中&#xff0c;我们可能存在如下需求&…

正版授权的商业级智慧校园源码 SaaS模式带小程序端

一套针对中小学校园研发的商业级智慧校园源码&#xff0c;系统功能强大&#xff0c;代码完整&#xff0c;源码有演&#xff0c;正版授权。 私信了解更多&#xff01; 一、智慧校园系统构成&#xff1a; 1、 SaaS云平台 2、 智慧校园管理平台 3、 小程序教师端 4、 小程序家…

【一文带你看懂什么是VLAN、网关、DNS和子网掩码等 】

很多小伙伴多次问到什么是VLAN、三层交换机、网关、MAC地址、DNS和子网掩码&#xff0c;它们具体的定位和用途。确实&#xff0c;如今网络技术已经覆盖了非常广阔的工作和生活场景&#xff0c;但很多人在日常的应用当中还是不太懂这些知识&#xff0c;今天我们就尝试用比较通俗…

从功能测试进阶自动化测试涨薪7k,终究是逼了自己一把...

绝大多数测试工程师都是从功能测试做起的&#xff0c;工作忙忙碌碌&#xff0c;每天在各种业务需求学习和点点中度过&#xff0c;过了好多年发现自己还只是一个功能测试工程师随着移动互联网的发展&#xff0c;从业人员能力的整体进步&#xff0c;软件测试需要具备的能力要求越…

Retrofit+Hilt后端请求小项目1--项目介绍

简介 本项目根据 youtube 对应教程实现而来 将会对对应代码以及依赖&#xff08;如 Hilt、retrofit、coil&#xff09;进行详细的分析与解读&#xff0c;同时缕清项目结构安排 如文章有叙述不清晰的&#xff0c;请直接查看原教程&#xff1a;https://www.youtube.com/watch?…

vs2019调用matlab2021混合编程

vs2019调用matlab2021 调试程序时使用vs我只能输出去看最后的结果&#xff0c;想实时的观察输出&#xff0c;老师说可以用这个办法去做 主要思想 首先&#xff1a;进行环境配置&#xff0c;主要是两个方面 1. 在VS中配置MATLAB 目录&#xff1a; &#xff08;a&#xff09…

建设 TiDB 自动化平台:转转 DBA 团队实践

转转技术 . 转转研发中心及业界小伙伴们的技术学习交流平台&#xff0c;定期分享一线的实战经验及业界前沿的技术话题。 各种干货实践&#xff0c;欢迎交流分享&#xff0c;如有问题可随时联系 waterystone ~ 莫善 转转 DBA。 负责 TiDB&#xff0c;MongoDB&#xff0c;MySQL 运…

Python调用MMDetection实现AI抠图去背景

这篇文章的内容是以 《使用MMDetection进行目标检测、实例和全景分割》 为基础&#xff0c;需要安装好 MMDetection 的运行环境&#xff0c;同时完成目标检测、实例分割和全景分割的功能实践&#xff0c;之后再看下面的内容。 想要实现AI抠图去背景的需求&#xff0c;我们需要…

linux高级命令之互斥锁

互斥锁学习目标能够知道互斥锁的作用1.互斥锁的概念互斥锁: 对共享数据进行锁定&#xff0c;保证同一时刻只能有一个线程去操作。注意:互斥锁是多个线程一起去抢&#xff0c;抢到锁的线程先执行&#xff0c;没有抢到锁的线程需要等待&#xff0c;等互斥锁使用完释放后&#xff…

2023-JavaWeb最新整理面试题-TCP、Tomcat、Servlet、JSP等

Java基础面试题 一、JavaWeb专题 1.HTTP响应码有哪些 1、1xx&#xff08;临时响应&#xff09; 2、2xx&#xff08;成功&#xff09; 3、3xx&#xff08;重定向&#xff09;&#xff1a;表示要完成请求需要进一步操作 4、4xx&#xff08;错误&#xff09;&#xff1a;表示请…

MySQL锁之深入死锁分析

文章目录1 死锁产生原因分析1.1 产生原因1.2 产生示例1.2.1 案例一1.2.2 案例二1.2.3 案例三1.2.4 案例四1.2.5 案例五1.2.6 案例六1.3 死锁预防策略1.4 剖析死锁的成因1.5 解除死锁的占用1.5.1 死锁分析1.5.2 死锁解决1 死锁产生原因分析 点击此处了解MySQL各种锁分析 1.1 产…

为什么计算机需要操作系统?(一文详解~)

我们从三个方面来简单聊聊为什么计算机系统操作系统这个话题。 资源分配器 如果你的CPU上只需要运行一个程序&#xff0c;那么你的确不需要操作系统。 可是&#xff0c;一旦你的CPU上需要再运行一个程序&#xff0c;那么马上就会面临一个问题&#xff1a;两个程序开始竞争资源…

山东大学教授团畅谈ChatGPT革命座谈会,探讨ChatGPT发展趋势

2月18日&#xff0c;由山东大学多院系教授学者组成的山东大学教授团在济南福瑞达自贸创新产业园举行了“畅谈ChatGPT革命”座谈会&#xff0c;诸位教授学者就ChatGPT出现的影响进行了探讨。产业园首席顾问李铁岗教授向大家介绍产业园区山东大学经济学院教授、济南福瑞达自贸创新…

2023年美国大学生数学建模A题:受干旱影响的植物群落建模详解+模型代码(二)

前言 资源放CSDN上面过不了审核,都快结束了都没过审真的麻了,订阅专栏的同学直接加我微信直接发你。我只打造优质专栏。专注建模四年,博主参与过大大小小数十来次数学建模,理解各类模型原理以及每种模型的建模流程和各类题目分析方法。此专栏的目的就是为了让零基础快速使…