Kubernetes高可用集群安装部署(版本1.20.15)

1. 环境说明

ip

用途

操作系统

192.168.181.36

k8s-master1

centos7.6

192.168.181.37

k8s-master2

centos7.6

192.168.181.38

k8s-master3

centos7.6

192.168.181.39

k8s-worker1

centos7.6

192.168.181.40

k8s-worker2

centos7.6

192.168.181.41

k8s-worker3

centos7.6

192.168.181.42

vip

2. 安装前准备

1、升级操作系统内核

2、安装docker

3、安装keepalived并配置,配置文件如下

[root@app18137 home]# cat /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {

   notification_email {

     simon.li@sinoeyes.com

   }

   notification_email_from paas-support@sinoeyes.com

   smtp_server smtp.exmail.qq.com

   smtp_connect_timeout 30

   router_id app18137

   vrrp_skip_check_adv_addr

   vrrp_garp_interval 0

   vrrp_gna_interval 0

}

vrrp_instance VI_1 {

    state BACKUP

    ## 网卡名称(需要修改)

    interface eno1

    virtual_router_id 233

    priority 90                ##(需要修改)

    nopreempt         ###设置 nopreempt 防止抢占资源

    advert_int 1  ######服务器之间的存活检查时间

    authentication {

        auth_type PASS

        auth_pass 18142

    }

    unicast_src_ip 192.168.181.37                #配置单播的源地址,即本机地址

    unicast_peer {

        192.168.181.38                           #配置单播的目标地址,即对方节点地址,备有多台就配置多个地址

    }

    virtual_ipaddress {

        ## 同一网段虚拟IP(需要修改)

        192.168.181.42/24

    }

}

4、安装haproxy并配置,配置文件如下

[root@app18137 config]# cat haproxy.cfg

global

  maxconn 10000                 # 最大同时10000连接

  daemon                        # daemon方式在后台运行

defaults

  log     127.0.0.1 local0 debug       # [emerg, alert, crit, err, warning, notice, info, debug]

  # mode http                   # 默认的模式mode { tcp|http|health }tcp4层,http7层,health只会返回OK

  retries         3             # 连接后端服务器失败重试次数,超过3次后会将失败的后端服务器标记为不可用。

  timeout client  1h            # 客户端响应超时             1小时

  timeout server  1h            # server端响应超时           1小时

  timeout connect 1h            # 连接server端超时           1小时

  timeout check   10s           # 对后端服务器的检测超时时间 10

listen stats                    # 定义监控页面

  mode  http

  bind  *:1080                  # 绑定容器内的1080端口

  stats refresh 5s              # 1秒更新监控数据

  stats uri /stats              # 访问监控页面的uri

  stats realm HAProxy\ Stats    # 监控页面的认证提示

  stats auth admin:654321       # 监控页面的用户名和密码

frontend tidb_front

  mode  tcp

  bind  *:16443                  # 监听容器内的4000端口

  default_backend tidb_back

backend tidb_back

  mode    tcp

  option  tcp-check

  balance roundrobin

  server k8s-master1 192.168.181.36:6443 check inter 10s rise 5 fall 3 weight 1

  server k8s-master2 192.168.181.37:6443 check inter 10s rise 5 fall 3 weight 1

  server k8s-master3 192.168.181.38:6443 check inter 10s rise 5 fall 3 weight 1

3. 安装过程

关闭防火墙(在所有服务器上运行)

systemctl stop firewalld && systemctl disable firewalld

关闭selinux(在所有服务器上运行)

sed -i 's/enforcing/disabled/' /etc/selinux/config && setenforce 0

关闭swap(在所有服务器上运行)

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

配置内核参数,将桥接的IPv4流量传递到iptables的链(在所有服务器上运行)

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

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

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

EOF

sysctl -p /etc/sysctl.d/k8s.conf

添加kubernetes阿里YUM源(在所有服务器上运行)

cat <<EOF > /etc/yum.repos.d/kubernetes.repo

[kubernetes]

name=Kubernetes

baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/

enabled=1

gpgcheck=1

repo_gpgcheck=1

gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

EOF

安装软件(在所有服务器上运行)

yum install -y  kubelet-1.20.15 kubeadm-1.20.15 kubectl-1.20.15

生成集群(k8s-master1上执行)

cat > kubeadm-config.yaml <<EOF

apiVersion: kubeadm.k8s.io/v1beta1

kind: ClusterConfiguration

imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers

kubernetesVersion: 1.20.15

apiServer:

  certSANs:

  - "192.168.181.42"

controlPlaneEndpoint: "192.168.181.42:16444"

networking:

  podSubnet: "10.244.0.0/16"

EOF

kubeadm init --config=kubeadm-config.yaml

等几分钟后出现如下内容表示成功

To start using your cluster, you need to run the following as a regular user:

  mkdir -p $HOME/.kube

  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

  sudo chown $(id -u):$(id -g) $HOME/.kube/config

Alternatively, if you are the root user, you can run:

  export KUBECONFIG=/etc/kubernetes/admin.conf

You should now deploy a pod network to the cluster.

Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:

  https://kubernetes.io/docs/concepts/cluster-administration/addons/

You can now join any number of control-plane nodes by copying certificate authorities

and service account keys on each node and then running the following as root:

  kubeadm join 192.168.181.42:16444 --token na5fnw.ed4h3gmp7hnikqnz \

    --discovery-token-ca-cert-hash sha256:bee38a46333661d40ae10c6d9e9e2b3d5d69b900b600a2c7e8821dd62049eab7 \

    --control-plane

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join 192.168.181.42:16444 --token na5fnw.ed4h3gmp7hnikqnz \

    --discovery-token-ca-cert-hash sha256:bee38a46333661d40ae10c6d9e9e2b3d5d69b900b600a2c7e8821dd62049eab7

执行提示语句

  mkdir -p $HOME/.kube

  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

  sudo chown $(id -u):$(id -g) $HOME/.kube/config

加入其他的master(k8s-master2和k8s-master3上执行)

kubeadm join 192.168.181.42:16444 --token na5fnw.ed4h3gmp7hnikqnz

    --discovery-token-ca-cert-hash sha256:bee38a46333661d40ae10c6d9e9e2b3d5d69b900b600a2c7e8821dd62049eab7

    --control-plane --certificate-key 4729e9bb3d8b19b810fcbd3ea91e791cb4479b84175307cbdf6cc5128a28da80

加入其他node节点(k8s-worker1、k8s-worker2、k8s-worker3上执行)

kubeadm join 192.168.181.42:16444 --token na5fnw.ed4h3gmp7hnikqnz

    --discovery-token-ca-cert-hash sha256:bee38a46333661d40ae10c6d9e9e2b3d5d69b900b600a2c7e8821dd62049eab7

重新生成加入命令

  1. 执行kubeadm token create --print-join-command,重新生成,重新生成基础的 join 命令(对于添加 master 节点还需要重新生成certificate-key,见下一步)
  1. 使用 kubeadm init phase upload-certs --upload-certs 重新生成certificate-key

添加 master 节点:用上面第1步生成的 join 命令和第2步生成的certificate-key 值拼接起来执行

kubeadm join 192.168.181.42:16444 --token na5fnw.ed4h3gmp7hnikqnz

    --discovery-token-ca-cert-hash sha256:bee38a46333661d40ae10c6d9e9e2b3d5d69b900b600a2c7e8821dd62049eab7

    --control-plane --certificate-key 4729e9bb3d8b19b810fcbd3ea91e791cb4479b84175307cbdf6cc5128a28da80

安装flannel网络

打开https://github.com/flannel-io/flannel/blob/master/Documentation/kube-flannel.yml拷贝内容粘贴到文件中

执行:kubectl apply -f 文件名

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

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

相关文章

Spring Cloud Eureka 服务发现速度慢配置优化总结

文章目录 一、 Eureka-server 服务端缓存问题1.1 服务端缓存1.2 客户端从服务端获取实例数据的过程1.3 优化 二、客户端 Eureka-client 缓存导致2.1 Eureka客户端和服务端交互缓存2.2 Ribbon 缓存了EurekaClient的缓存2.3 优化 使用Eureka时&#xff0c;常常会发现服务发现慢&a…

Java实现店铺ID或店铺昵称获取1688店铺所有商品数据方法

要通过1688的API获取店铺所有商品数据&#xff0c;您可以使用1688开放平台提供的接口来实现。以下是一种使用Java编程语言实现的示例&#xff0c;展示如何通过1688开放平台API获取整店商品数据&#xff1a; 首先&#xff0c;确保您已注册成为1688开放平台的开发者&#xff0c;…

安装使用LangChain时的报错解决

刚刚装了LangChain但是引入各种包都报错&#xff0c;原因貌似为 Python3.7 不支持 LangChain&#xff0c;需要开启一个新的Python3.10环境&#xff0c;再重新安装即可正常运行。 创建新的python环境 conda create -n new_env python3.10 重新安装 pip install langchain 这是当…

8款常用系统镜像烧录软件

系统烧录软件是一种用于将操作系统或其他软件程序安装到嵌入式系统、嵌入式设备或存储设备中的工具。它通常用于将预先编译好的二进制文件或源代码烧录到硬件设备的非易失性存储器中&#xff0c;例如闪存芯片、EEPROM、EPROM或其他存储介质。系统烧录软件提供了一个便捷的方式&…

基于深度神经网络的肺炎检测系统实现

一、说在前面 使用AI进行新冠肺炎图像诊断可以加快病例的诊断速度&#xff0c;提高诊断的准确性&#xff0c;并在大规模筛查中发挥重要作用&#xff0c;从而更好地控制和管理这一流行病。然而&#xff0c;需要强调的是&#xff0c;AI技术仅作为辅助手段&#xff0c;最终的诊断决…

leetcode做题笔记40

给定一个候选人编号的集合 candidates 和一个目标数 target &#xff0c;找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用 一次 。 注意&#xff1a;解集不能包含重复的组合。 思路一&#xff1a;回溯 int cmp(const …

Unity Shader 消融效果

消融效果 消融广泛运用于各种场合&#xff0c;例如 怪物击杀与道具时区&#xff08;原神&#xff09;燃烧 注意&#xff1a;根据噪声图的不同&#xff0c;效果有很大的差异&#xff0c; 第一步&#xff1a;创建着色器 我们要选择Unlit Shader创建 然后定义如下属性 Prop…

Spring MVC 是什么?

一、什么是 Spring MVC&#xff1f; 官方对于 Spring MVC 的描述是这样的&#xff1a; Spring Web MVC is the original web framework built on the Servlet API and has been included in the Spring Framework from the very beginning. The formal name, “Spring Web …

C++控制台实现简化版吃鸡游戏

直接上代码 #include <iostream> #include <cstdlib> #include <ctime>// 生成一个随机整数 int randomInt(int min, int max) {return min (std::rand() % (max - min 1)); }int main() {std::srand(static_cast<unsigned int>(std::time(nullptr)…

【教程】查看CPU、GPU架构的拓扑结构和系统信息

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhang.cn] 一些概念 Package&#xff1a;处理器封装。在多处理器系统中&#xff0c;每个物理 CPU 芯片通常被封装在一个单独的封装中&#xff0c;这个封装被称为 Package。一个 Package 可以包含一个或多个物理 CPU 核心。…

一站式解决方案:Qt 跨平台开发灵活可靠

Qt 是一种跨平台开发工具&#xff0c;为开发者提供了一站式解决方案。无论您的项目目标是 Windows、Linux、macOS、嵌入式系统还是移动平台&#xff0c;Qt 都能胜任。这种跨平台的特性不仅节省开支&#xff0c;还推动了战略的快速落地。 适用范围广泛&#xff1a;Qt 可在多种操…

ArgoCD结合Gitlab交付项目到kubernetes集群

ArgoCD结合Gitlab交付项目到kubernetes集群 作者:行癫(盗版必究) 一:环境准备 1.kubernetes集群环境 2.HA_Argocd环境 3.Gitlab集群环境 二:项目配置 1.配置Gitlab 创建仓库,并写入yaml文件,利用yaml构建application;此案例结合了NFS实现持久化存储

平板用的触控笔什么牌子好?ipad第三方电容笔推荐

随着技术的发展&#xff0c;出现了各种各样的平板电容笔。一支好的电容笔&#xff0c;不但可以极大地提升我们的工作效率&#xff0c;还可以极大地提升我们的学习效果。平替的电容笔&#xff0c;无论是在技术方面&#xff0c;还是在质量方面&#xff0c;都还有很大的提升空间&a…

等保工作如何和企业创新业务发展相结合,实现“安全”和“创新”的火花碰撞?

等保工作如何和企业创新业务发展相结合&#xff0c;实现“安全”和“创新”的火花碰撞&#xff1f;在当今数字化浪潮的背景下&#xff0c;企业越来越需要在“安全”和“创新”之间找到平衡点&#xff0c;以实现业务的持续创新和安全的有效保障。等保工作可以为企业提供安全保障…

【阿里云试用计划】免费试用GPU

写在前面&#xff1a;本博客仅作记录学习之用&#xff0c;部分图片来自网络&#xff0c;如需引用请注明出处&#xff0c;同时如有侵犯您的权益&#xff0c;请联系删除&#xff01; 文章目录 前言试用步骤问题No CUDA GPUs are available无故被killed 致谢 前言 算力在深度学习…

【GD32F103】自定义程序库08-DMA+ADC

DMA 自定义函数库说明: 将DMA先关的变量方式在一个机构体中封装起来,主要参数有 dma外设,时钟,通道,外设寄存器地址,数据传输宽度,数据方向,外设是能dma传输使能回调函数,扫描模式中断编号dma中断使能传输完成标志数据存储空间使用一个枚举类型指明每个DMA绑定到那个…

Nodejs 安装之后cmd 输入npm -v 提示error的问题解决

1.问题现象&#xff1a; 安装时候选择&#xff1a; 2. 解决问题 卸载nodejs 删除安装路径下的node_modules, 重新安装 按照下面的选择

上海科技大学智能生活组齐聚合合信息,“沉浸式”体验人工智能产品

近期&#xff0c;上海科技大学组织本科生产业实践-校企联合人才培养活动&#xff0c;30余名学生组成的“智能生活组”实地参访人工智能及大数据科技企业上海合合信息科技股份有限公司&#xff08;简称“合合信息”&#xff09;。本次活动旨在通过项目体验、主题交流&#xff0c…

uniapp 即时通讯开发流程详解

今天我将为您详细介绍UniApp开发中的即时通讯流程。本文将向您展示如何在UniApp中实现即时通讯功能&#xff0c;为您的应用程序增添交互性和实时性。 1. 准备工作 在开始开发之前&#xff0c;确保您已完成以下准备工作&#xff1a; 确保您已经安装好UniApp开发环境&#xff…

RISC-V汇编指令

写在最前面&#xff1a;这一篇是UC Berkeley的CS61C的笔记&#xff0c;根据我自己的理解进行学习记录&#xff0c;其中贴的一些图片来自于课程PPT。 了解汇编之前&#xff0c;我们需要先了解为什么需要汇编&#xff1f;以下是我的理解&#xff1a; 机器执行的命令都是些二进制…