6.kubeadm高可用

文章目录

  • kubeadm高可用
    • 环境初始化
    • 所有节点安装Docker
    • 所有节点安装kubeadm,kubelet和kubectl
    • 高可用组件安装、配置
    • 部署k8s集群

kubeadm高可用

##节点设置master01:192.168.242.66
master02:192.168.242.67
master03:192.168.242.68
node01:192.168.242.69
node02:192.168.242.70

环境初始化

###所有节点,关闭防火墙规则,关闭selinux,关闭swap交换
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/enforcing/disabled/' /etc/selinux/configiptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X
swapoff -a
sed -ri 's/.*swap.*/#&/' /etc/fstab
###修改主机名
hostnamectl set-hostname master01
hostnamectl set-hostname master02
hostnamectl set-hostname master03
hostnamectl set-hostname node01
hostnamectl set-hostname node02
###所有节点修改hosts文件
vim /etc/hosts
192.168.242.66 master01
192.168.242.67 master02
192.168.242.68 master03
192.168.242.69 node01
192.168.242.70 node02
###所有节点时间同步yum -y install ntpdate
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
echo 'Asia/Shanghai' >/etc/timezonentpdate time2.aliyun.comsystemctl enable --now crondcrontab -e
*/30 * * * * /usr/sbin/ntpdate time2.aliyun.com
###所有节点实现Linux的资源限制vim /etc/security/limits.conf
* soft nofile 65536
* hard nofile 131072
* soft nproc 65535
* hard nproc 655350
* soft memlock unlimited
* hard memlock unlimited
更改内核启动方式
grub2-set-default 0 && grub2-mkconfig -o /etc/grub2.cfggrubby --args="user_namespace.enable=1" --update-kernel="$(grubby --default-kernel)"grubby --default-kernel
reboot
###调整内核参数cat > /etc/sysctl.d/k8s.conf <<EOF
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
fs.may_detach_mounts = 1
vm.overcommit_memory=1
vm.panic_on_oom=0
fs.inotify.max_user_watches=89100
fs.file-max=52706963
fs.nr_open=52706963
net.netfilter.nf_conntrack_max=2310720net.ipv4.tcp_keepalive_time = 600
net.ipv4.tcp_keepalive_probes = 3
net.ipv4.tcp_keepalive_intvl =15
net.ipv4.tcp_max_tw_buckets = 36000
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_max_orphans = 327680
net.ipv4.tcp_orphan_retries = 3
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.ip_conntrack_max = 65536
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_timestamps = 0
net.core.somaxconn = 16384
EOF#生效参数
sysctl --system  
###加载 ip_vs 模块for i in $(ls /usr/lib/modules/$(uname -r)/kernel/net/netfilter/ipvs|grep -o "^[^.]*");do echo $i; /sbin/modinfo -F filename $i >/dev/null 2>&1 && /sbin/modprobe $i;done

所有节点安装Docker

###安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2 
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 
yum install -y docker-ce docker-ce-cli containerd.iosystemctl start docker.service
systemctl enable docker.service 
##修改配置文件和镜像加速mkdir -p /etc/dockertee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://ysmprsek.mirror.aliyuncs.com"],"exec-opts": ["native.cgroupdriver=systemd"],"log-driver": "json-file","log-opts": {"max-size": "500m", "max-file": "3"}
}
EOFsystemctl daemon-reload
systemctl restart docker

所有节点安装kubeadm,kubelet和kubectl

###定义kubernetes源cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOFyum install -y kubelet-1.20.15 kubeadm-1.20.15 kubectl-1.20.15
#配置Kubelet使用阿里云的pause镜像
cat > /etc/sysconfig/kubelet <<EOF
KUBELET_EXTRA_ARGS="--cgroup-driver=systemd --pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/google_containers/pause-amd64:3.2"
EOF
###开机自启kubelet
systemctl enable kubelet.service
#K8S通过kubeadm安装出来以后都是以Pod方式存在,即底层是以容器方式运行,所以kubelet必须设置开机自启

高可用组件安装、配置

###所有 master 节点部署 Haproxy
yum -y install haproxy keepalived
cat > /etc/haproxy/haproxy.cfg << EOF
globallog         127.0.0.1 local0 infolog         127.0.0.1 local1 warningchroot      /var/lib/haproxypidfile     /var/run/haproxy.pidmaxconn     4000user        haproxygroup       haproxydaemon#stats socket /var/lib/haproxy/statsdefaultsmode                    tcplog                     globaloption                  tcplogoption                  dontlognulloption                  redispatchretries                 3timeout queue           1mtimeout connect         10stimeout client          1mtimeout server          1mtimeout check           10smaxconn                 3000frontend monitor-inbind *:33305mode httpoption httplogmonitor-uri /monitorfrontend k8s-masterbind *:16443mode tcpoption tcplogdefault_backend k8s-masterbackend k8s-mastermode tcpoption tcplogoption tcp-checkbalance roundrobinserver k8s-master1 192.168.242.66:6443  check inter 10000 fall 2 rise 2 weight 1server k8s-master2 192.168.242.67:6443  check inter 10000 fall 2 rise 2 weight 1server k8s-master3 192.168.242.68:6443  check inter 10000 fall 2 rise 2 weight 1
EOF
###所有 master 节点部署 keepalived
yum -y install keepalivedcd /etc/keepalived/
vim keepalived.conf! Configuration File for keepalived
global_defs {router_id k8s-01			#路由标识符,每个节点配置不同
}vrrp_script chk_haproxy {script "/etc/keepalived/check_haproxy.sh"interval 2weight 2
}vrrp_instance VI_1 {state MASTER				#本机实例状态,MASTER/BACKUP,备机配置文件中设置BACKUPinterface ens32virtual_router_id 51priority 100				#本机初始权重,备机设置小于主机的值advert_int 1virtual_ipaddress {192.168.242.100          #设置VIP地址}track_script {chk_haproxy}
}###监控脚本
vim check_haproxy.sh
#!/bin/bash
if ! killall -0 haproxy; thensystemctl stop keepalived
fisystemctl enable --now haproxy
systemctl enable --now keepalived

部署k8s集群

###在 master01 节点上设置集群初始化配置文件
kubeadm config print init-defaults > /opt/kubeadm-config.yamlcd /opt/
vim kubeadm-config.yaml
11 localAPIEndpoint:
12   advertiseAddress: 192.168.242.66		#指定当前master节点的IP地址
13   bindPort: 644321 apiServer:
22   certSANs:								
#在apiServer属性下面添加一个certsSANs的列表,添加所有master节点的IP地址和集群VIP地址
23   - 192.168.242.100
24   - 192.168.242.66
25   - 192.168.242.67
26   - 192.168.242.6830 clusterName: kubernetes
31 controlPlaneEndpoint: "192.168.242.100:6443"		#指定集群VIP地址
32 controllerManager: {}38 imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers			#指定镜像下载地址
39 kind: ClusterConfiguration
40 kubernetesVersion: v1.20.15				#指定kubernetes版本号
41 networking:
42   dnsDomain: cluster.local
43   podSubnet: "10.244.0.0/16"				#指定pod网段,10.244.0.0/16用于匹配flannel默认网段
44   serviceSubnet: 10.96.0.0/16			#指定service网段
45 scheduler: {}
#末尾再添加以下内容
--- 
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
mode: ipvs									#把默认的kube-proxy调度方式改为ipvs模式
#更新集群初始化配置文件
kubeadm config migrate --old-config kubeadm-config.yaml --new-config new.yaml
###拷贝yaml配置文件给其他主机,通过配置文件进行拉取镜像
scp new.yaml 192.168.242.67:/opt/
scp new.yaml 192.168.242.68:/opt/###在线拉取镜像
kubeadm config images pull --config /opt/new.yaml
###master01节点进行初始化
kubeadm init --config new.yaml --upload-certs | tee kubeadm-init.log##获取master加入节点命令
kubeadm join 192.168.242.100:6443 --token abcdef.0123456789abcdef \--discovery-token-ca-cert-hash sha256:d02b1e6552ac56f579a6f943ea54d134faa90dcce09121fd3ecb0233a9c2ea6b \--control-plane --certificate-key e3f16b2c757f08a9f59eb80d126441cafd68ce387051d4d6fc966652b316a739##获取node节点加入命令
kubeadm join 192.168.242.100:6443 --token abcdef.0123456789abcdef \--discovery-token-ca-cert-hash sha256:d02b1e6552ac56f579a6f943ea54d134faa90dcce09121fd3ecb0233a9c2ea6b
## kubectl的配置文件mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
#若初始化失败,进行的操作
kubeadm reset -f
ipvsadm --clear 
rm -rf ~/.kube
再次进行初始化
修改controller-manager和scheduler配置文件
vim /etc/kubernetes/manifests/kube-scheduler.yaml 
vim /etc/kubernetes/manifests/kube-controller-manager.yaml
......#- --port=0					#搜索port=0,把这一行注释掉systemctl restart kubelet
###安装 CNI网络插件
##上传  flannel-v0.21.5.zip  到  /opt/k8sunzip flannel-v0.21.5.zip
docker load -i flannel.tar
docker load -i flannel-cni-plugin.tar##移动系统创建的cni目录,并手动创建
cd /opt/
mv cni/ cni_bak
mkdir -p /opt/cni/bin##解压配置文件
tar xf /opt/k8s/cni-plugins-linux-amd64-v1.3.0.tgz -C /opt/cni/bin/##安装插件
cd /opt/k8s
kubectl apply -f kube-flannel.yml
所有节点加入集群
#master 节点加入集群mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config#node 节点加入集群
查看节点
kubectl get pods

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

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

相关文章

Tomcat的介绍和安装配置、eclipse中动态web项目的创建和运行、使用IDEA创建web项目并运行

一、Tomcat的介绍和安装配置 安装tomcat&#xff1a; 环境变量的配置&#xff1a; 配置之后重启cmd&#xff0c;执行startup命令&#xff0c;启动tomcat 在localhost:8080&#xff0c;能进入tomcat主界面&#xff0c;说明配置成功 二、eclipse中动态web项目的创建和运行 tomca…

【雕爷学编程】Arduino动手做(180)---Seeeduino Lotus开发板2

37款传感器与执行器的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&am…

标定(内参、外参)

在计算机视觉中&#xff0c;特别是在相机标定和立体视觉领域&#xff0c;内参&#xff08;intrinsic parameters&#xff09;和外参&#xff08;extrinsic parameters&#xff09;是非常重要的概念。它们与相机的几何属性和姿态有关。 内参&#xff08;Intrinsic Parameters&am…

Linux下C/C++的gdb工具与Python的pdb工具常见用法之对比

1、gdb和pdb分别是什么&#xff1f; 1.1、gdb GDB&#xff08;GNU Debugger&#xff09;是一个功能强大的命令行调试工具&#xff0c;由GNU项目开发&#xff0c;用于调试C、C等编程语言的程序。它在多个操作系统中都可以使用&#xff0c;包括Linux、MacOS和Windows&#xff0…

【Spring Boot】Spring Boot 集成 RocketMQ 实现简单的消息发送和消费

文章目录 前言基本概念消息和主题相关发送普通消息 发送顺序消息RocketMQTemplate的API介绍参考资料&#xff1a; 前言 本文主要有以下内容&#xff1a; 简单消息的发送顺序消息的发送RocketMQTemplate的API介绍 环境搭建&#xff1a; RocketMQ的安装教程&#xff1a;在官网…

Qt下载慢/无法下载解决方式

文章目录 一. Qt在线安装下载二. 安装方式 一. Qt在线安装下载 官网下载&#xff1a;https://www.qt.io/download清华源下载&#xff1a;https://mirrors.tuna.tsinghua.edu.cn/qt/official_releases/online_installers/ 二. 安装方式 进入下载好的目录 在目录栏输入CMD&…

常州同和采购益高观光车提升服务品质

同和纺织机械制造有限公司坐落于江苏省常州市戚墅堰经济开发区,是中国纺织工业联合会常务理事单位、国家高新技术企业。公司占地面积30万平方米,现代化厂房建筑面积20万平方米。 随着公司发展,企业意识到通过提供高品质的客户接待服务来增强竞争力。为了满足这一需求,常州同和…

MyBatis 查询数据库之二(增、删、改、查操作)

目录 1. 配置打印 MyBatis 执行的SQL 2. 查询操作 2.1 通过用户 ID 查询用户信息、查询所有用户信息 (1) Mapper 接口 (2)UserMapper.xml 查询所有用户的具体实现 SQL (3)进行单元测试 3. 增加操作 3.1 在 mapper&#xff08;interface&#xff09;里面添加增加方法的声…

ROS添加发布者和订阅者机制实现

一. ROS的节点和包 ✨Node&#xff1a; ROS的基本单位&#xff0c;实现某个功能的节点。比如实现超声波传感器就是一个节点&#xff0c;雷达传感器就可以是一个节点 ✨Package&#xff1a; 多个有联系的节点组成的单位&#xff0c;比如你要控制无人机姿态&#xff0c;可能需要…

WebGL Shader着色器GLSL语言

在2D绘图中的坐标系统&#xff0c;默认情况下是与窗口坐标系统相同&#xff0c;它以canvas的左上角为坐标原点&#xff0c;沿X轴向右为正值&#xff0c;沿Y轴向下为正值。其中canvas坐标的单位都是’px’。 WebGL使用的是正交右手坐标系&#xff0c;且每个方向都有可使用的值的…

Ajax快速入门

文章目录 Ajax原生ajaxaxios案例 Ajax Ajax就是前端访问服务器端数据的一个技术 还有主要就是异步交互 就是在不刷新整页面的情况下&#xff0c;和服务器交换部分我也数据 比如搜索的联想技术 同步和异步的概念 一个是客户端需要等待服务器完成处理&#xff0c;才能进行别的事…

力扣 | 清空注释

c 注释有两种&#xff0c;一种是 // 另一种是 /**/ 简单理解就是把所有的注释内容清空&#xff0c;然后只保留未注释内容 思路&#xff08;模拟&#xff09;&#xff1a;因为代码是一行一行的记录下来的&#xff0c;遍历每一行代码。有两种情况&#xff0c;第一种&#xff0c;如…

【音视频】edge与chrome在性能上的比较

目录 结论先说 实验 结论 实验机器的cpu配置 用EDGE拉九路​编辑 google拉五路就拉不出来了 资源使用情况 edge报错​编辑 结论先说 实验 用chrome先拉九路&#xff0c;再想用edge拉九路&#xff0c;发现拉五路后怎么也拉不出&#xff1b; 后面发现cpu爆满&#xff1b;切…

实证研究在机器学习中的应用

实证研究是一种基于实际数据和事实的科学研究方法&#xff0c;目的是通过观察、测量、分析和解释数据来验证或否定某个假设、理论或研究问题。这种研究方法通常用于社会科学、自然科学和医学等领域。以下是实证研究的详细解释&#xff1a; 研究目标&#xff1a;实证研究旨在通过…

C++---list常用接口和模拟实现

list---模拟实现 list的简介list函数的使用构造函数迭代器的使用list的capacitylist element accesslist modifiers list的模拟实现构造函数&#xff0c;拷贝构造函数和迭代器begin和endinsert和eraseclear和析构函数 源码 list的简介 list是用双向带头联表实现的一个容器&…

【flowable介绍】

这里写目录标题 1.flowable官⽅⽂档2.flowable相关表说明3.操作名词解释 1.flowable官⽅⽂档 flowable官⽅⽂档&#xff1a;https://flowable.com/open-source/docs/bpmn/ch02-GettingStarted/ 基于6.5中⽂翻译⽂档&#xff1a;https://l1yp.com/docs/flowable/bpmn/#bpmnGate…

【cf】CodeForces Round 890(Div.2)题解 A - C

A. Tales of a Sort 题意 给出一个数组&#xff0c;每次操作可以将 所有 元素 a [ i ] a[i] a[i] 变成 m a x ( 0 , a i − i ) max(0,a_i-i) max(0,ai​−i)&#xff0c;问至少操作多少次能将数组变成递增数组 思路 这一题卡很久&#xff0c;最后发现踩了两个坑 题目读…

前端笔记html-layer使用

layer.open方法 layer.open({type:2, //可传入的值有&#xff1a;0&#xff08;信息框&#xff0c;默认&#xff09;1&#xff08;页面层&#xff09;2&#xff08;iframe层&#xff09;3&#xff08;加载层&#xff09;4&#xff08;tips层&#xff09;title: title,content:[…

Python-flask项目入门

一、flask对于简单搭建一个基于python语言-的web项目非常简单 二、项目目录 示例代码 git路径 三、代码介绍 1、安装pip依赖 通过pip插入数据驱动依赖pip install flask-sqlalchemy 和 pip install pymysql 2.配置数据源 config.py DIALECT mysql DRIVER pymysql USERN…

Spring(11) Bean的生命周期

目录 一、简介二、Bean的流程1.BeanDefinition2.Bean 的生命周期 三、代码验证1.User 实体类2.MyBeanPostProcessor 后置处理器3.SpringConfig 扫描包配置4.UserTest 测试类5.测试结果6.模拟AOP增强 一、简介 首先&#xff0c;为什么要学习 Spring 中 Bean 的生命周期呢&#…