当前位置: 首页 > news >正文

安装部署k8s集群

系统: CentOS Linux release 7.9.2009 (Core)

  • 准备3台主机
192.168.44.148k8s-master
92.168.44.154k8s-worker01
192.168.44.155k8s-worker02
  • 3台主机准备工作
    关闭防火墙和selinux

      systemctl disable firewalld --nowsetenforce 0sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
    

    关闭swap分区(swap分区会降低性能,所以选择关闭)
    参考如下链接:

      https://blog.csdn.net/dejunyang/article/details/97972399
    

    设置node的主机名,并配置/etc/hosts(这样可以方面看到pod调度到哪个node上面)
    对应的node配置对应的主机名

      hostnamectl set-hostname k8s-masterhostnamectl set-hostname k8s-worker01hostnamectl set-hostname k8s-worker02
    

    每台node主机都需要执行

      cat >> /etc/hosts << EOF 192.168.44.148  k8s-master192.168.44.154  k8s-worker01192.168.44.155  k8s-worker02EOF
    
  • 开始安装k8s

  1. 配置yum源(3台主机都需要操作,使用阿里云yum仓库)

    cat >  /etc/yum.repos.d/kubernetes.repo << EOF
    [kubernetes]
    name=Kubernetes
    baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
    enabled=1
    gpgcheck=0
    repo_gpgcheck=0
    gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpghttp://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
    EOF
    
  2. 安装 kuberneters组件(所有节点安装)

    yum -y install kubeadm-1.19.0 kubectl-1.19.0 kubelet-1.19.0 --disableexcludes=kubernetes
    
  • --disableexcludes=Kubernetes 禁掉除了这个kubernetes之外的别的仓库
  • 这里安装的是指定版本,不指定版本默认安装最新版本
  1. kubelet服务,启动并设置开启自启(所有node执行)

    systemctl enable kubelet --now
    
  2. 所有节点安装docker

    yum install -y yum-utils
    yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    yum -y install docker-ce-19.03.10-3.el7 docker-ce-cli-19.03.10-3.el7 containerd.io docker-compose-plugin
    

    note: K8s使用的是1.19.0版本,官网推荐docker 版本 19.03

    启动,并自启docker

    systemctl enable docker --now
    

    Docker配置镜像仓库,并修改cgroup驱动为systemd(所有node节点执行)

    Cgroups概念  cgroups 的全称是 Linux Control Groups,主要作用是限制、记录和隔离进程组(process
    groups)使用的物理资源(cpu、memory、IO 等)。

    systemd是系统自带的cgroup管理器, 系统初始化就存在的, 和cgroups联系紧密,为每一个进程分配cgroups,
    用它管理就行了. 如果设置成cgroupfs就存在2个cgroup控制管理器, 实验证明在资源有压力的情况下,会存在不稳定的情况。

    由于 kubeadm 把 kubelet 视为一个系统服务来管理,所以对基于 kubeadm 的安装kubernetes, 我们推荐使用
    systemd 驱动,不推荐 cgroupfs 驱动。

    cat > /etc/docker/daemon.json << EOF
    {
    "exec-opts": ["native.cgroupdriver=systemd"],
    "registry-mirrors": ["https://l72pvsl6.mirror.aliyuncs.com"],
    "log-opts": {"max-size":"50M","max-file":"3"}
    }
    EOF
    
  • "exec-opts": ["native.cgroupdriver=systemd"] 设置cgroup驱动为systemd
  • "registry-mirrors": ["https://l72pvsl6.mirror.aliyuncs.com"] 设置docker镜像仓库为阿里云镜像
  • "log-opts": {"max-size":"50M","max-file":"3"} 设置docker容器日志最大为50M,最大文件个数为 3
  1. 允许 iptables 检查桥接流量
    若要显式加载此模块,请运行 sudo modprobe br_netfilter 通过运行 lsmod | grep br_netfilter 来验证 br_netfilter 模块是否已加载

     sudo modprobe br_netfilterlsmod | grep br_netfilter
    

    为了让 Linux 节点的 iptables 能够正确查看桥接流量,请确认 sysctl 配置中的 net.bridge.bridge-nf-call-iptables 设置为 1。例如:

     cat > /etc/modules-load.d/k8s.conf << EOFoverlaybr_netfilterEOF
    

     modprobe overlaymodprobe br_netfilter
    

    设置所需的 sysctl 参数,参数在重新启动后保持不变

     cat <<EOF | sudo tee /etc/sysctl.d/k8s.confnet.bridge.bridge-nf-call-iptables  = 1net.bridge.bridge-nf-call-ip6tables = 1net.ipv4.ip_forward                 = 1EOF
    

    加载sysctl参数(重启也能生效)

     sysctl --system
    
  2. 修改kubeadm的默认配置

    kubeadm config print init-defaults > init-config.yaml     将kubeadm默认的配置保存在文件中,到时候导入配置文件初始化集群
    

    修改init-config.yaml(只修改几个关键的部分)

    advertiseAddress: 192.168.44.148
    imageRepository: registry.aliyuncs.com/google_containers
    networking:dnsDomain: cluster.localserviceSubnet: 10.96.0.0/12podSubnet: 192.168.0.0/16 
    

    note:

  • advertiseAddress master 与集群通信的ip

  • imageRepository: registry.aliyuncs.com/google_containers 镜像仓库地址

  • networking 下面只添加了 podSubnet: 192.168.0.0/16 这个参数,其他都是默认;待会要修改CNI文件子网范围和这个一致

    查看需要拉取的镜像

    kubeadm config images list --config=init-config.yaml
    

    拉取镜像

    kubeadm config images pull --config=init-config.yaml
    
  1. 运行kubeadm init 命令安装master 节点

    kubeadm init --config=init-config.yaml
    

note: 可以忽略如下信息

W0131 16:57:45.102290 3727 configset.go:348] WARNING: kubeadmcannot validate component configs for API groups [kubelet.config.k8s.io kubeproxy.config.k8s.io]

Your Kubernetes control-plane has initialized successfully! 代表控制平面初始化成功

  1. 为kubectl 配置证书才能访问master
    非root用户配置:

    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    

    root用户配置:

    echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> /etc/profile
    source /etc/profile
    
  2. 将节点加入到k8s集群

    当然,当集群已经成功初始化完成都,最下方会打印出加入集群的代码:
    kubeadm join 192.168.44.148:6443 --token abcdef.0123456789abcdef
    –discovery-token-ca-cert-hash sha256:88eb2767faaad801ce07501946b510d20bc180fd20cf35c9aa1822b3b345c2ef

    获取加入node节点的token(master节点执行)

    kubeadm token list
    

    获取 --discovery-token-ca-cert-hash 值

    openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
    

    固定格式是(注意换成自己的token和hash值):

    kubeadm join 192.168.44.148:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:88eb2767faaad801ce07501946b510d20bc180fd20cf35c9aa1822b3b345c2ef
    

    如果token过期了,可以在master节点上运行

    kubeadm token create
    

    打印加入节点的完整命令可以运行

    kubeadm token create --print-join-command
    

    在所有node节点执行 加入集群的token
    根据自己对应的加入集群的token

    kubeadm join 192.168.44.148:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:88eb2767faaad801ce07501946b510d20bc180fd20cf35c9aa1822b3b345c2ef
    

    在master节点使用 kubectl get pod -A 查看所有组件是否安装成功,状态是否Runting(需要等待一会)

    kubectl  get pod -A
    
    	NAMESPACE     NAME                                 READY   STATUS    RESTARTS   AGE
    kube-system   coredns-6d56c8448f-hsm4m             0/1     Pending   0          16m
    kube-system   coredns-6d56c8448f-z66pp             0/1     Pending   0          16m
    kube-system   etcd-k8s-master                      1/1     Running   0          16m
    kube-system   kube-apiserver-k8s-master            1/1     Running   0          16m
    kube-system   kube-controller-manager-k8s-master   1/1     Running   0          16m
    kube-system   kube-proxy-447d7                     1/1     Running   0          119s
    kube-system   kube-proxy-9gt2z                     1/1     Running   0          16m
    kube-system   kube-proxy-s9hbb                     1/1     Running   0          114s
    kube-system   kube-scheduler-k8s-master            1/1     Running   0          16m
    

    在master节点使用查看所有节点信息

    kubectl get nodes
    
    	NAME           STATUS     ROLES    AGE     VERSION
    k8s-master     NotReady   master   17m     v1.19.0
    k8s-worker01   NotReady   <none>   2m48s   v1.19.0
    k8s-worker02   NotReady   <none>   2m43s   v1.19.0
    

    note:Node节点状态显示 NotReady 因为 还没有安装 CNI(容器网络接口)

  3. 安装Calico CNI网络插件(在master节点执行)
    下载资源文件

    curl -O https://docs.tigera.io/archive/v3.18/manifests/calico.yaml
    

    修改一下pod网段
    在这里插入图片描述

    安装

    kubectl apply -f calico.yaml
    

    等待一会再次查看pod,node详情

    kubectl get nodes,pod -A
    
    	NAME                STATUS   ROLES    AGE   VERSION
    node/k8s-master     Ready    master   36m   v1.19.0
    node/k8s-worker01   Ready    <none>   21m   v1.19.0
    node/k8s-worker02   Ready    <none>   21m   v1.19.0NAMESPACE     NAME                                           READY   STATUS             RESTARTS   AGE
    kube-system   pod/calico-kube-controllers-56c7cdffc6-frc82   0/1     CrashLoopBackOff   6          13m
    kube-system   pod/calico-node-7rxzn                          1/1     Running            0          13m
    kube-system   pod/calico-node-dbjhv                          1/1     Running            0          13m
    kube-system   pod/calico-node-fsw2d                          1/1     Running            0          13m
    kube-system   pod/coredns-6d56c8448f-hsm4m                   0/1     Running            0          36m
    kube-system   pod/coredns-6d56c8448f-z66pp                   0/1     Running            0          36m
    kube-system   pod/etcd-k8s-master                            1/1     Running            0          36m
    kube-system   pod/kube-apiserver-k8s-master                  1/1     Running            0          36m
    kube-system   pod/kube-controller-manager-k8s-master         1/1     Running            0          36m
    kube-system   pod/kube-proxy-447d7                           1/1     Running            0          21m
    kube-system   pod/kube-proxy-9gt2z                           1/1     Running            0          36m
    kube-system   pod/kube-proxy-s9hbb                           1/1     Running            0          21m
    kube-system   pod/kube-scheduler-k8s-master                  1/1     Running            0          36m
    

    目前来看node节点已经就绪了,但是有一个pod报错,2个pod没有准备好,使用kubectl --namespace=kube-system describe pod pod名称 查看pod的事件

    kubectl --namespace=kube-system describe pod calico-kube-controllers-56c7cdffc6-frc82
    

    报错问题能力有限无法处理,部署基本都是这样。组要是版本差异然后不知道怎么处理!!!
    如果知道是什么原因导致的报错,还请不吝赐教。

相关文章:

安装部署k8s集群

系统&#xff1a; CentOS Linux release 7.9.2009 (Core) 准备3台主机 192.168.44.148k8s-master92.168.44.154k8s-worker01192.168.44.155k8s-worker02 3台主机准备工作 关闭防火墙和selinux systemctl disable firewalld --nowsetenforce 0sed -i s/SELINUXenforcing/SELI…...

曲线生成 | 图解B样条曲线生成原理(基本概念与节点生成算法)

目录 0 专栏介绍1 什么是B样条曲线&#xff1f;2 基函数的de Boor递推式3 B样条曲线基本概念图解4 节点生成公式 0 专栏介绍 &#x1f525;附C/Python/Matlab全套代码&#x1f525;课程设计、毕业设计、创新竞赛必备&#xff01;详细介绍全局规划(图搜索、采样法、智能算法等)…...

CyberDAO:web3时代的引领者

Web3.0正在改写着世界运行的规则&#xff0c;AGI将为人类未来的生产效率、工作方式与目标带来改变&#xff0c;区块链经过十余年发展开启了去中心化新格局&#xff0c;带来生产关系的变革。人类正在从过往以时间换取收入、听命完成工作&#xff0c;转变为以个性化、自主追求人生…...

java以及android类加载机制

类加载机制 一、Java类加载机制 java中&#xff0c;每一个类或者接口&#xff0c;在编译后&#xff0c;都会生成一个.class文件。 类加载机制指的是将这些.class文件中的二进制数据读入到内存中并对数据进行校验&#xff0c;解析和初始化。最终&#xff0c;每一个类都会在方…...

【Go】四、rpc跨语言编程基础与rpc的调用基础原理

Go管理工具 早期 Go 语言不使用 go module 进行包管理&#xff0c;而是使用 go path 进行包管理&#xff0c;这种管理方式十分老旧&#xff0c;两者最显著的区别就是&#xff1a;Go Path 创建之后没有 go.mod 文件被创建出来&#xff0c;而 go module 模式会创建出一个 go.mod…...

Linux CentOS系统安装SQL Server并结合内网穿透实现公网访问本地数据

&#x1f525;博客主页&#xff1a; 小羊失眠啦. &#x1f3a5;系列专栏&#xff1a;《C语言》 《数据结构》 《C》 《Linux》 《Cpolar》 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&…...

输入捕获模式测频率PWM输入模式(PWMI)测占空比

一、概念介绍 输出比较&#xff1a; 比较电路输入的CNT、CCR大小关系 &#xff0c;在通道引脚输出高低电平 二、*频率知识、测量方法补充 * N/fc得到标准频率的时长&#xff0c;也就是待测频率的周期 测频法代码实现&#xff1a;修改对射式红外传感器计次&#xff08;上升沿…...

解锁VIP会员漫画:用Python爬虫轻松实现高清漫画下载

嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 环境使用: Python 3.10 Pycharm 模块使用: requests >>> pip install requests 数据请求模块 parsel >>> pip install parsel 数据解析模块…...

备战蓝桥杯---动态规划(入门3之子串问题)

本专题再介绍几种经典的字串问题。 这是一个两个不重叠字串和的问题&#xff0c;我们只要去枚举分界点c即可&#xff0c;我们不妨让c作为右区间的左边界&#xff0c;然后求[1,c)上的单个字串和并用max数组维护。对于右边&#xff0c;我们只要反向求单个字串和然后选左边界为c的…...

JavaScript:隐式类型转换与显式类型转换

文章目录 隐式类型转换&#xff08;Implicit Type Conversion&#xff09;1、字符串与数字的转换2、非布尔值到布尔值的转换3、在相等性比较中的转换4、对象到基础类型的转换5、在算术运算符中的其他转换 显式类型转换&#xff08;Explicit Type Conversion&#xff09;1、Numb…...

【电路笔记】-LR串联电路

LR串联电路 文章目录 LR串联电路1、概述2、示例1所有线圈、电感器、扼流圈和变压器都会在其周围产生磁场,由电感与电阻串联组成,形成 LR 串联电路。 1、概述 在本节有关电感器的第一个文章中,我们简要介绍了电感器的时间常数,指出流过电感器的电流不会瞬时变化,而是会以恒…...

Ansible 自动化运维工具的使用

目录 Ansible的简介 ansible 环境安装部署 ansible 命令行模块 command 模块 shell 模块 cron 模块 user 模块 group 模块 copy 模块 file 模块 hostname 模块 ping 模块 yum 模块 service/systemd 模块 script 模块 mount 模块 archive 模块 unarchive 模…...

亚马逊、ozon、速卖通、Lazada等跨境平台为什么评论老是被删

对于卖家而言&#xff0c;最难的并不是销售量&#xff0c;最难的是让客户在购买后能够留下一个高质量的review&#xff0c;毕竟现在的市场&#xff0c;以listing的排名为基准&#xff0c;以review数量多少和质量的高低来评判店铺的好坏 几乎所有的卖家都会有索评的烦恼&#x…...

手把手带你在Linux上安装带GPU加速的opencv库(C++版本)

1.安装依赖 sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev sudo apt-get install python-dev python-numpy python3-dev python3-numpy sudo apt-get install libtbb2 libtbb-dev libjpeg-dev l…...

【Linux】软件包管理器 yum | vim编辑器

前言: 软件包管理器 yum和vim编辑器讲解 文章目录 软件包管理器 yum编辑器-vim四种模式普通模式批量化注释和批量化去注释末行模式临时文件 软件包管理器 yum yum&#xff08;Yellowdog Updater, Modified&#xff09;是一个在基于 RPM&#xff08;管理软件包的格式和工具集合&…...

vue常见问题

文章目录 data为什么是一个函数&#xff0c;而不是一个对象&#xff1f;什么情况下可以使用对象&#xff1f;key的作用&#xff0c;为什么不能用Index&#xff1f;render函数&#xff0c;h函数&#xff0c;和template什么关系&#xff1f;vue 是怎么解析template的? template会…...

ArcgisForJS基础

文章目录 0.引言1.第一个ArcgisForJS应用程序1.1.安装部署ArcgisForJS1.2.实现ArcgisForJS应用程序 2.开发与调试工具2.1.集成开发环境2.2.调试工具2.3.Firebug 0.引言 ArcGIS API for JavaScript是一款由Esri公司开发的用于创建WebGIS应用的JavaScript库。它允许开发者通过调…...

白话微机:5.解释串行接口以及一些考研面试问题

一. 前言&#xff08;回顾世界观&#xff09; 很久很久以前&#xff0c;有这样一个世界&#xff0c;这个世界有着现实世界一样的元素&#xff1a;那里的人又有一个别的名字叫做“数据”&#xff0c;人有0有1&#xff1b;人们也有住房&#xff0c;这些住房在这个世界叫做“存储器…...

版本控制(Git)

Fork 本课程网站的仓库 将版本历史可视化并进行探索是谁最后修改了 README.md文件&#xff1f;&#xff08;提示&#xff1a;使用 git log 命令并添加合适的参数&#xff09;最后一次修改_config.yml 文件中 collections: 行时的提交信息是什么&#xff1f;&#xff08;提示&am…...

USB-C音频转接器:实现边充电边听歌的新选择 | LDR6020P

随着科技浪潮的推进&#xff0c;Type-C接口已逐渐成为电子设备的主流选择&#xff0c;以其正反随意插、高速传输和强大功能等独特优势&#xff0c;在日常生活中占据越来越重要的地位。而Type-C音频转接器&#xff0c;作为连接Type-C接口与音频设备的桥梁&#xff0c;正引领着音…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言&#xff1a; 通过AI视觉技术&#xff0c;为船厂提供全面的安全监控解决方案&#xff0c;涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面&#xff0c;能够实现对应负责人反馈机制&#xff0c;并最终实现数据的统计报表。提升船厂…...

无法与IP建立连接,未能下载VSCode服务器

如题&#xff0c;在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈&#xff0c;发现是VSCode版本自动更新惹的祸&#xff01;&#xff01;&#xff01; 在VSCode的帮助->关于这里发现前几天VSCode自动更新了&#xff0c;我的版本号变成了1.100.3 才导致了远程连接出…...

使用分级同态加密防御梯度泄漏

抽象 联邦学习 &#xff08;FL&#xff09; 支持跨分布式客户端进行协作模型训练&#xff0c;而无需共享原始数据&#xff0c;这使其成为在互联和自动驾驶汽车 &#xff08;CAV&#xff09; 等领域保护隐私的机器学习的一种很有前途的方法。然而&#xff0c;最近的研究表明&…...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用&#xff0c;可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器&#xff0c;能够帮助开发者更好地管理复杂的依赖关系&#xff0c;而 GraphQL 则是一种用于 API 的查询语言&#xff0c;能够提…...

高防服务器能够抵御哪些网络攻击呢?

高防服务器作为一种有着高度防御能力的服务器&#xff0c;可以帮助网站应对分布式拒绝服务攻击&#xff0c;有效识别和清理一些恶意的网络流量&#xff0c;为用户提供安全且稳定的网络环境&#xff0c;那么&#xff0c;高防服务器一般都可以抵御哪些网络攻击呢&#xff1f;下面…...

Python 包管理器 uv 介绍

Python 包管理器 uv 全面介绍 uv 是由 Astral&#xff08;热门工具 Ruff 的开发者&#xff09;推出的下一代高性能 Python 包管理器和构建工具&#xff0c;用 Rust 编写。它旨在解决传统工具&#xff08;如 pip、virtualenv、pip-tools&#xff09;的性能瓶颈&#xff0c;同时…...

【Java学习笔记】BigInteger 和 BigDecimal 类

BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点&#xff1a;传参类型必须是类对象 一、BigInteger 1. 作用&#xff1a;适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...

Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析

Java求职者面试指南&#xff1a;Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问&#xff08;基础概念问题&#xff09; 1. 请解释Spring框架的核心容器是什么&#xff1f;它在Spring中起到什么作用&#xff1f; Spring框架的核心容器是IoC容器&#…...

视觉slam十四讲实践部分记录——ch2、ch3

ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...

Razor编程中@Html的方法使用大全

文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...