【kubernetes】环境准备及K8S二进制安装【最新最全】

news2025/1/11 8:16:50

一,规划

1,架构

主节点(3台 master)+ 工作节点 (1台 node1)
Pod网段: 10.0.0.0/16
Service网段: 10.255.0.0/16

实验环境规划:
操作系统:centos7.6
配置: 4Gib内存/6vCPU/100G硬盘
注意:也可以用4vCPU
网络:NAT
开启虚拟机的虚拟化:
在这里插入图片描述

2,K8S集群角色 Ip 主机名 安装的组件

K8S集群角色 Ip 主机名 安装的组件
控制节点 192.168.40.180 master1 apiserver、controller-manager、scheduler、etcd、docker、keepalived、nginx
控制节点 192.168.40.181 master2 apiserver、controller-manager、scheduler、etcd、docker、keepalived、nginx
控制节点 192.168.40.182 master3 apiserver、controller-manager、scheduler、etcd、docker
工作节点 192.168.40.183 node1 kubelet、kube-proxy、docker、calico、coredns
Vip 192.168.40.199

二,初始准备

1,配置静态ip

对四台机器分别配置,IP地址为192.168.40.180/181/182/183

# vim /etc/sysconfig/network-scripts/ifcfg-ens33

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.40.180
NETMASK=255.255.255.0
GATEWAY=192.168.40.2
DNS1=192.168.40.2

设置完毕后,重启:

service network restart

2,配置/ 互相绑定主机名

设置主机名,并刷新:

hostnamectl set-hostname master1 && bash

绑定主机名:

# /etc/hosts
192.168.40.180   master1
192.168.40.181   master2
192.168.40.182   master3
192.168.40.183   node1

3,配置主机之间无密码登录

每台机器,生成ssh 密钥对:

ssh-keygen -t rsa    #一路回车,不输入密码

每台机器上,把本地的ssh公钥文件安装到远程主机对应的账户

ssh-copy-id  -i  .ssh/id_rsa.pub  master1
ssh-copy-id  -i  .ssh/id_rsa.pub  master2
ssh-copy-id  -i  .ssh/id_rsa.pub  master3
ssh-copy-id  -i  .ssh/id_rsa.pub  node1

4,关闭防火墙

在每一台机器上,关闭firewalld防火墙。

systemctl stop firewalld ; systemctl disable firewalld

5,关闭selinux

在每一台机器上,关闭selinux

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

重启服务器,reboot

# 一定重启后,执行如下命令,如果显示Disabled说明selinux已经关闭
getenforce

6,关闭交换分区swap

在每一台机器上,关闭交换分区swap

# 临时关闭
swapoff -a

# 永久关闭
vi /etc/fstab   
#/dev/mapper/centos-swap swap      swap    defaults        0 0

如果是克隆的虚拟机,需要同时删除UUID

7,修改机器内核参数

每台机器执行同样操作

# 加载内核
modprobe br_netfilter

#验证模块是否加载成功:
lsmod |grep br_netfilter

#修改内核参数
cat > /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF

# 使刚才修改的内核参数生效
sysctl -p /etc/sysctl.d/k8s.conf

sysctl:在运行时配置内核参数工具
-p :从指定的文件加载系统参数,如不指定即从/etc/sysctl.conf中加载

8,配置阿里云repo源

每台机器上设置阿里云的repo源,和安装docker和containerd需要配置安装阿里云的repo源。

# 安装scp
yum install openssh-clients

# 安装工具
yum install yum-utils -y

# 安装阿里源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

# 配置国内阿里云docker的repo源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

9,时间同步

每台机器,都做相同操作

# 安装ntpdate命令
yum install ntpdate -y

# 跟网络时间做同步
ntpdate cn.pool.ntp.org

# 把时间同步做成计划任务
crontab -e
* */1 * * * /usr/sbin/ntpdate   cn.pool.ntp.org

# 重启crond服务
service crond restart

10,安装iptables(可选)

#安装iptables
yum install iptables-services -y
#禁用iptables
service iptables stop   && systemctl disable iptables
#清空防火墙规则
iptables -F

11,开启ipvs

不开启ipvs将会使用iptables进行数据包转发,但是效率低,所以官网推荐需要开通ipvs。

# 安装
yum install ipvsadm

加载相关模块:
vi /etc/sysconfig/modules/ipvs.modules

#!/bin/bash
ipvs_modules="ip_vs ip_vs_lc ip_vs_wlc ip_vs_rr ip_vs_wrr ip_vs_lblc ip_vs_lblcr ip_vs_dh ip_vs_sh ip_vs_nq ip_vs_sed ip_vs_ftp nf_conntrack"
for kernel_module in ${
   ipvs_modules}; do
 /sbin/modinfo -F filename ${
   kernel_module} > /dev/null 2>&1
 if [ 0 -eq 0 ]; then
 /sbin/modprobe ${
   kernel_module}
 fi
done

添加权限: chmod 755 /etc/sysconfig/modules/ipvs.modules
执行文件: bash /etc/sysconfig/modules/ipvs.modules
检查IPVS是否正确安装:

lsmod | grep ip_vs 
或 
ps -ef | grep ip_vs

在这里插入图片描述

【扩展】:IPVS常用的调度方式
(1)轮询调度
以轮转的方式在服务器间分发连接。
轮询调度:缩写 rr
加权轮询调度 缩写 wrr
(2)最小连接调度
将连接分发给活动连接最小的工作服务器。
最小连接调度:缩写 lc
加权最小连接调度:缩写 wlc
(3)局部性的调度
基本原则是最小化服务器之间的共享缓存,从而避免增加服务器的负载。
基于局部性的最小连接调度: 缩写 lblc
适用情形:当来自共享数据的同一ip的多个连接请求会给服务器带来大量的负载,比如出现庞大cookie或当量会话数据的情况。

12,安装基础软件包

在每台机器上,安装基础软件包

yum install -y yum-utils device-mapper-persistent-data lvm2 wget net-tools nfs-utils lrzsz gcc gcc-c++ make cmake libxml2-devel openssl-devel curl curl-devel unzip sudo ntp libaio-devel wget vim ncurses-devel autoconf automake zlib-devel  python-devel epel-release openssh-server socat  ipvsadm conntrack ntpdate telnet rsync

13,安装docker-ce

在每台机器上,安装docker-ce

yum install docker-ce docker-ce-cli containerd.io -y 

systemctl start docker && systemctl enable docker.service && systemctl status docker

【说明】

  • 如果用kubeadm安装k8s,那么控制节点必须安装docker,因为apiserver、controller-manager、scheduler、etcd组件,都是以pod运行。
  • 如果二进制安装k8s,并且不打算在控制节点部署其他相关服务,那么控制节点是可以不安装docker的。

14,配置docker镜像加速器

在每台机器上,配置docker镜像加速器

tee /etc/docker/daemon.json << 'EOF'
{
   
 "registry-mirrors":["https://rsbud4vc.mirror.aliyuncs.com","https://registry.docker-cn.com","https://docker.mirrors.ustc.edu.cn","https://dockerhub.azk8s.cn","http://hub-mirror.c.163.com","http://qtid6917.mirror.aliyuncs.com", "https://rncxm540.mirror.aliyuncs.com"],
  "exec-opts": ["native.cgroupdriver=systemd"]
} 
EOF

【注意】:修改docker文件驱动为systemd,默认为cgroupfs。
kubelet默认使用systemd,两者必须一致才可以。

systemctl daemon-reload && systemctl restart docker && systemctl status docker

下载搭建所需的文件:k8s二进制文件和cfssl可执行文件.zip

三,搭建etcd集群

etcd集群仅在3台控制服务器,安装即可。

1,配置工作目录

#创建配置文件和证书文件存放目录
mkdir -p /etc/etcd
mkdir -p /etc/etcd/ssl

2,安装签发证书工具cfssl

mkdir /data/work -p
cd /data/work/

cfssl-certinfo_linux-amd64 、
cfssljson_linux-amd64 、
cfssl_linux-amd64
上传到/data/work/目录下

#把文件变成可执行权限
chmod +x *
mv cfssl_linux-amd64 /usr/local/bin/cfssl
mv cfssljson_linux-amd64 /usr/local/bin/cfssljson
mv cfssl-certinfo_linux-amd64 /usr/local/bin/cfssl-certinfo

3,配置ca证书

3-1,生成ca证书请求文件
# vim /data/work/ca-csr.json

{
   
  "CN": "kubernetes",
  "key": {
   
      "algo": "rsa",
      "size": 2048
  },
  "names": [
    {
   
      "C": "CN",
      "ST": "Hubei",
      "L": "Wuhan",
      "O": "k8s",
      "OU": "system"
    }
  ],
  "ca": {
   
          "expiry": "87600h" # 证书过期时间10年
  }
}
3-2,生成ca证书文件
# vim /data/work/ca-config.json 

{
   
  "signing": {
   
      "default": {
   
          "expiry": "87600h"
        },
      "profiles": {
   
          "kubernetes": {
   
              "usages": [
                  "signing",
                  "key encipherment",
                  "server auth",
                  "client auth"
              ],
              "expiry": "87600h"
          }
      }
  }
}
3-3,签发证书命令
cfssl gencert -initca ca-csr.json  | cfssljson -bare ca

4,生成etcd证书

配置etcd证书请求,hosts的ip变成自己etcd所在节点的ip

# vim /data/work/etcd-csr.json 

{
   
  "CN": "etcd",
  "hosts": [
    "127.0.0.1",
    "192.168.40.180",
    "192.168.40.181",
    "192.168.40.182",  
    "192.168.40.199"
  ],
  "key": {
   
    "algo": "rsa",
    "size": 2048
  },
  "names": [{
   
    "C": "CN",
    "ST": "Hubei",
    "L": "Wuhan",
    "O": "k8s",
    "OU": "system"
  }]
} 

【注意】:
上述文件hosts字段中IP为所有etcd节点的集群内部通信IP,可以预留几个ip,做扩容用。

cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes etcd-csr.json | cfssljson  -bare etcd

查看是否生成:

ls etcd*.pem

#显示如下文件,说明生成证书成功:
etcd-key.pem  etcd.pem

5,部署etcd集群

在3台master节点上,把etcd-v3.4.13-linux-amd64.tar.gz上传到/data/work目录下

tar -xf etcd-v3.4.13-linux-amd64.tar.gz
cp -p etcd-v3.4.13-linux-amd64/etcd* /usr/local/bin/
scp -r etcd-v3.4.13-linux-amd64/etcd* master2:/usr/local/bin/
scp -r etcd-v3.4.13-linux-amd64/etcd* master3:/usr/local/bin/
5-1,创建配置文件:
# vim /data/work/etcd.conf 

#[Member]
ETCD_NAME=

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

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

相关文章

【嵌入式实时操作系统开发】智能家居入门4(FreeRTOS、MQTT服务器、MQTT协议、STM32、微信小程序)

前面已经发了智能家居入门的1、2、3了&#xff0c;在实际开发中一般都会使用到实时操作系统&#xff0c;这里就以FreeRTOS为例子&#xff0c;使用标准库。记录由裸机转到实时操作系统所遇到的问题以及总体流程。相较于裸机&#xff0c;系统实时性强了很多&#xff0c;小程序下发…

JavaSE——面向对象9.1:代码块详解

目录 一、静态代码块 二、构造代码块 三、局部代码块 四、总结 一、静态代码块 在《JavaSE——面向对象9&#xff1a;static、final关键字、代码块、单例模式》这篇文章中已经介绍过&#xff0c;静态代码块随着类的加载而加载&#xff0c;且只加载一次&#xff0c;这里不再…

【优选算法】---分治 归并排序

分治 归并排序 一、排序数组 / 归并排序的复习1、题目解析2、算法原理3、代码 二、逆序对的总数1、题目解析2、算法原理3、代码 三、计算右侧小于当前元素的个数1、题目解析2、算法原理3、代码 四、翻转对1、题目解析2、算法原理3、代码 一、排序数组 / 归并排序的复习 归并排…

Windows下Jenkins控制台中文乱码

问题描述 问题情况如下图&#xff1a; 环境信息 Windows 11 家庭中文版java 21.0.4 2024-07-16 LTSJenkins 2.452.3 解决方法 增加系统JAVA_TOOL_OPTIONS&#xff0c;并设置值为-Dfile.encodingGBK。 打开设置方法&#xff1a;桌面上右键点击“此电脑”图标&#xff0c;选…

软考高级之系统架构师之计算机硬件基础

概述 局部性原理是指在指定时间内&#xff0c;程序趋于在有限的内存区域内重复访问。通常将局部性分为空间局部性和时间局部性。空间局部性是指已访问过的内存地址附近的位置很可能被连续访问。时间局部性是指已访问过的内存地址在较短的时间内还可能被多次访问。 计算机执行…

请散户股民看过来,密切关注两件大事

明天股市要开市&#xff0c;不仅散户股民期盼节后股市大涨&#xff0c;上面也同样想在节后来上一个“开门红”。 为此&#xff0c;上面没休假&#xff0c;关起门来办了两件大事&#xff0c;这两天发布消息已提前预热了。 两件大事如下&#xff1a; 一是&#xff0c;上交所10…

柯桥生活口语学习之在化妆品店可以用到的韩语句子

화장품을 사고 싶어요. 我想买化妆品。 어떤 화장품을 원하세요? 您想买什么化妆品。 스킨로션을 찾고 있어요. 我想买化妆水&#xff0c;乳液。 피부 타입은 어떠세요? 您是什么皮肤类型&#xff1f; 민감성 피부예요. 我是敏感性皮肤。 평소에 쓰시는 제품은 뭐예…

【判断推理】逻辑基础

1.1 命题 用语言、符号或者式子表达的&#xff0c;可以判断真假的陈述句称为命题&#xff0c;一般写为 若p&#xff0c;则q 真命题&#xff1a;判断为真的语句假命题&#xff1a;判断为假的语句 eg1&#xff1a;小张是中国人&#xff08;若是小张&#xff0c;则是中国人&#…

【传感器技术】【9 温度测量,热电偶传感器,膨胀式温度传感器,压力测量,弹性式压力表】

上理考研周导师的哔哩哔哩频道 我在频道里讲课哦 目录 9.1、 温度概述 1&#xff0e; 温度与温标 2&#xff0e; 温度测量的主要方法和分类 9.2、 膨胀式温度传感器 1&#xff0e; 液体膨胀式 2&#xff0e; 固体膨胀式 3&#xff0e; 气体膨胀式 9.3、 热电偶传感器 1. …

Cesium的一些神奇概念及技术流程(1)

近期要深度研究Cesium。关于Cesium的用法、渲染流程等方面我看很多人都写过。我就写写其中一些可能平时用不到但是比较有趣的内容。因为边研究边写&#xff0c;所以会陆续出几集&#xff0c;然后合并在一起&#xff0c;欢迎大家跟踪。 我的这些文章不打算把一些基本概念展开解…

OJ在线评测系统 微服务 OpenFeign调整后端上 内部调用Client代码书写 实现客户端接口 配置服务参数 接口文档

OpenFeign内部调用上 我们的代码已经搬运完毕了 但是我们的服务之间是无法相互调用的 我们可以使用OpenFeign进行远程调用 一个http调用客户端 提供了更方便的方式让你远程调用其他的服务 Nacos注册中心获取服务的调用地址 如果没有实现OpenFeign 也能实现跨服务的调用 …

Windows 11 version 24H2 LTSC 2024 中文版、英文版 (x64、ARM64) 下载 (updated Oct 2024)

Windows 11 version 24H2 & LTSC 2024 中文版、英文版 (x64、ARM64) 下载 (updated Oct 2024) Windows 11, version 24H2&#xff0c;企业版 arm64 x64 请访问原文链接&#xff1a;https://sysin.org/blog/windows-11/ 查看最新版。原创作品&#xff0c;转载请保留出处。…

出国必备神器!这5款中英翻译工具让你秒变外语达人

在这个全球化的时代&#xff0c;中英互译已然成为我们日常生活和工作中不可或缺的一环。面对众多的翻译工具&#xff0c;如何选择一款既高效又人性化的翻译助手呢&#xff1f;今天&#xff0c;就让我为大家揭秘几款热门的中英互译工具&#xff0c;并分享我的使用感受。 一、福昕…

【数据结构与算法】线性表

文章目录 一.什么是线性表&#xff1f;二.线性表如何存储&#xff1f;三.线性表的类型 我们知道从应用中抽象出共性的逻辑结构和基本操作就是抽象数据类型&#xff0c;然后实现其存储结构和基本操作。下面我们依然按这个思路来认识线性表 一.什么是线性表&#xff1f; 定义 线性…

【项目记录】大模型基于llama.cpp在Qemu-riscv64向量扩展指令下的部署

概述 本文在qemu-riscv64平台上&#xff0c;利用向量扩展指令加速运行基于llama.cpp构建的大模型。 参考博客链接&#xff1a; Accelerating llama.cpp with RISC-V Vector Extension 基于RVV的llama.cpp在Banana Pi F3 RISCV开发板上的演示 llama.cpp工程 Llama.cpp是一个基…

C语言-指针变量,常量与数组名的细微区别辨析

本节根据两个选择题进行展开辨析 一、例1 本题答案&#xff1a;C 解析&#xff1a;强干扰选项是B&#xff0c;我相信大多数同学都会在B&#xff0c;C之间犹豫好久&#xff0c;那么为什么答案会最终选择C呢&#xff1f;因为本题在定义函数&#xff0c;所以a首先是一个数组名&a…

【学习笔记】一种使用多项式快速计算 sin 和 cos 近似值的方法

一种使用多项式快速计算 sin 和 cos 近似值的方法 在嵌入式开发、游戏开发或其他需要快速数学计算的领域&#xff0c;sin 和 cos 函数的计算时间可能会影响程序的整体性能。特别是在对时间敏感、精度要求不高的场景中&#xff0c;传统的 sin 和 cos 函数由于依赖复杂的数值方法…

SOMEIP_ETS_168: SD_TestFieldUINT8Reliable

测试目的&#xff1a; 验证DUT能够通过Getter和Setter方法正确地发送和接收TestFieldUINT8Reliable字段的值&#xff0c;并且这些操作是可靠的。 描述 本测试用例旨在确保DUT的ETS能够响应Tester的请求&#xff0c;正确地使用Getter方法获取TestFieldUINT8Reliable的值&…

【MySQL必知会】事务

目录 &#x1f308;前言&#x1f308; &#x1f4c1; 事务概念 &#x1f4c1; 事务操作 &#x1f4c1; 事务提交方式 &#x1f4c1; 隔离级别 &#x1f4c1; MVCC &#x1f4c2; 3个隐藏列字段 &#x1f4c2; undo日志 &#x1f4c2; Read View视图 &#x1f4c1; RR和R…