目录

前言

一、搭建前的准备

1. 搭建k8s的平台规划

2. 服务器硬件配置要求

3. 搭建部署的方式

二、搭建流程

1. kubeadm搭建方式

a. 准备工作,系统初始化

c. 设置一下ipv4,否则会失败(此处为坑,不设置无法初始化成功)

d. 安装containerd

e. 安装kubectl、kubelet、kubeadm

f. master节点进行初始化操作

2. 二进制搭建流程

a. 创建多台虚拟机,安装linux操作系统

b. 操作系统初始化(各种关关关)

c. 为etcd和apiserver自签证书(相当于门禁卡,保证互通)

d. 部署etcd集群

e. 部署master组件

f. 部署node组件

g. 部署集群网络

总结


前言

比起君子讷于言而敏于行,我更喜欢君子善于言且敏于行。


一、搭建前的准备

1. 搭建k8s的平台规划

单master集群:只有一个master,管理多个node节点。

多master集群:拥有多个master,管理多个node节点。高可用模式。比单master集群多一个负载均衡的步骤。

test环境搭建,因此采用单master集群,如后续有需要可再增加master。

2. 服务器硬件配置要求

master节点:

测试环境 生产环境
CPU 2 8
内存

4G

16G
硬盘 20G 100G

node节点:

测试环境 生产环境
CPU 4 16
内存 8G

64G

硬盘

40G

500G

3. 搭建部署的方式

目前常见的有两种方式:

1)kubeadm方式

kubeadm是k8s的一个部署工具,部署方式比较简单。只需要用到两个命令,kubeadm init(初始化)和 kubeadm join(将node节点加入到master中)。可以快速部署k8s集群。优点是快速,无需额外自己处理。比较常见且节约时间

官方链接:https://kubernetes.io/docs/reference/setup-tools/kubeadm/

2)二进制方式

从 github 下载二进制包,手动部署每个组件,过程比较麻烦。优点是,遇到问题后可以精准定位,有利于后续维护。毕竟是自己一步一步操作的,更清楚里面的弯弯绕绕~

二、搭建流程

1. kubeadm搭建方式

大致流程:

1)创建一个master节点 kubeadm init

2)将node节点加入到当前集群中 kubeadm join <master节点的ip和端口>

3)配置网络插件和测试k8s集群

机器配置:
        -- 准备了一台master,一台node。硬件配置CPU 2核,内存251G,硬盘500G
        -- 机器之间可以互相ping通,操作系统为CentOS7
        -- 禁止swap分区
        -- 可以拉取镜像

master: 192.10.18.102
                                node: 192.10.18.103

a. 准备工作,系统初始化

由于自己用的是之前配置好的旧物理机,所以跳过此流程。如果需要用虚拟机的话。要进行安装3台Centos7.x的操作系统,之后进行如下初始化:

1)关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

2)关闭selinux

sed -i 's/enforcing/disabled/' /etc/selinux/config   #永久关闭
setenforce 0  #临时关闭

3)关闭swap

swapoff -a  #临时关闭
sed -ri 's/."swap."/#&/' /etc/fstab  #永久关闭

4)设置主机名

hostnamectl set-hostname <hostname>

5)只在master添加hosts

cat >> /etc/hosts << EOF
ip master
ip node1
ip node2
EOF

6)将桥接的ipv4流量传递到iptables的链,配置内核参数和优化

cat > /etc/sysctl.d/k8s.conf <<EOFnet.bridge.bridge-nf-call-ip6tables = 1net.bridge.bridge-nf-call-iptables = 1net.ipv4.ip_forward = 1EOFsysctl --system   #生效命令

7)时间同步

yum install ntpdate -y
ntpdate time.windows.com

8)安装ipset、ipvsadm

yum -y install conntrack ipvsadm ipset jq iptables curl sysstat libseccomp wget vim net-tools gitcat > /etc/modules-load.d/ipvs.conf <<EOF
# Load IPVS at boot
ip_vsip_vs_rrip_vs_wrrip_vs_shnf_conntracknf_conntrack_ipv4EOFsystemctl enable --now systemd-modules-load.service
###注!!!若此处失败,可能是因为内核版本低导致的,可升级内核后,再执行此命令######确认内核模块加载成功
lsmod |egrep "ip_vs|nf_conntrack_ipv4"

b. 升级内核(根据自己情况进行选择,满足时可不升级)

1)查看系统版本

cat /etc/redhat-release

2)查看当前内核版本

uname -r

3)检查是否安装ELRepo

yum  --disablerepo="*"  --enablerepo="elrepo-kernel"  list  available

看到error说明没有安装ELRepo

4)升级安装ELRepo
安装

yum install -y https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm

或升级

rpm -Uvh https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm

5)查看可用安装包, 长期维护版本为lt,最新主线稳定版为ml

yum  --disablerepo="*"  --enablerepo="elrepo-kernel"  list  available

6)安装最新的内核

yum  --enablerepo=elrepo-kernel  install  -y  kernel-lt

7)查看可用内核版本及启动顺序

awk -F\' '$1=="menuentry " {print i++ " : " $2}' /boot/grub2/grub.cfg

8)安装辅助工具(非必须,有些系统自带该工具):grub2-pc

yum install -y grub2-pc

9)设置内核默认启动顺序

grub2-set-default 0
vim /etc/default/grub
GRUB_DEFAULT=0  #这里从原来的saved改为0

10)生成grub配置文件
# 运行grub2-mkconfig命令来重新创建内核配置

grub2-mkconfig -o /boot/grub2/grub.cfg

11)重启机器

reboot

12)查看内核版本是否正确

uname -r

13)安装 yum-utils 工具
当系统安装的内核大于3个时,会自动删除旧的内核版本或自己查看已经安装的内核后手动yum  remove -y 进行删除旧版本

yum install -y  yum-utils

14)删除旧的工具包

yum remove kernel-tools-libs.x86_64 kernel-tools.x86_64

15)安装新版本的工具包

yum --disablerepo=\* --enablerepo=elrepo-kernel install -y kernel-lt-tools.x86_64

16)查看已安装内核

rpm -qa | grep kernel

c. 设置一下ipv4,否则会失败(此处为坑,不设置无法初始化成功)

vim /etc/sysconfig/modules/ipvs.modulescat /etc/sysconfig/modules/ipvs.modules
nf_conntracksystemctl enable --now systemd-modules-load.servicelsmod |egrep "ip_vs|nf_conntrack_ipv4"lsmod |egrep "ip_vs|nf_conntrack_ipv"

d. 安装containerd 

1)安装依赖软件包

yum -y install yum-utils device-mapper-persistent-data lvm2

2)添加阿里Docker源

[root@k8s-master ~]

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3)添加overlay和netfilter模块

cat >>/etc/modules-load.d/containerd.conf <<EOFoverlaybr_netfilterEOF
modprobe overlaymodprobe br_netfilter

4)安装Containerd,这里安装最新版本(1.5版本及以下不可使用)

yum -y install containerd.io

5)创建Containerd的配置文件

mkdir -p /etc/containerdcontainerd config default > /etc/containerd/config.tomlsed -i '/SystemdCgroup/s/false/true/g' /etc/containerd/config.tomlsed -i '/sandbox_image/s/registry.k8s.io/registry.aliyuncs.com\/google_containers/g' /etc/containerd/config.toml

6)启动containerd

systemctl enable containerdsystemctl start containerd

e. 安装kubectl、kubelet、kubeadm 

1)添加阿里kubernetes源

vim /etc/yum.repos.d/kubernetes.repo [kubernetes]name=Kubernetesbaseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/enabled=1gpgcheck=0repo_gpgcheck=0gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

2)安装kubectl、kubelet、kubeadm

查看所有的可用版本

 yum list kubelet --showduplicates |grep 1.27

这里安装当前最新版本1.27.1

yum -y install kubectl-1.27.1 kubelet-1.27.1 kubeadm-1.27.1

设置开机自启kubelet(此时并没有kubelet配置文件无法启动,正常状况)

systemctl enable kubeletsystemctl start kubelet

f. master节点进行初始化操作

1)查看k8s v1.27.1初始化所需要的镜像

kubeadm config images list --kubernetes-version=v1.27.1

2)初始化命令

kubeadm init --kubernetes-version=1.27.1 --apiserver-advertise-address=10.142.50.190 --image-repository registry.aliyuncs.com/google_containers --pod-network-cidr=10.244.0.0/16

注:pod的网段为: 10.244.0.0/16,api server地址为Master本机IP,网段可以自定义,不冲突即可。

参数详解:
        -- 指定版本。(可按需修改版本)
        -- 设置了apiserver,即当前节点的ip。
        -- 指定镜像仓库地址,拉取镜像。        
        -- service-cidr是svc网络              kubectl get svc                   #查看svc信息   
            默认使用10.96.0.0/12
        -- pod-network-cidr 是pod网络    kubectl get pods -o wide    #查看pod网络信息
        -- k8s内部的pod节点之间网络可以使用的IP段,不能和service-cidr写一样,默认使用10.244.0.0/16

此操作,等待时间较长

3)成功返回信息,执行返回内容即可

Your Kubernetes control-plane has initialized successfully!To start using your cluster, you need to run the following as a regular user:mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/configAlternatively, if you are the root user, you can run:export KUBECONFIG=/etc/kubernetes/admin.confYou 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/Then you can join any number of worker nodes by running the following on each as root:kubeadm join IP:6443 --token maod8l.w4g2cu2tl4er9gil \--discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

master节点执行

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

node节点执行


kubeadm join IP:6443 --token maod8l.w4g2cu2tl4er9gil \--discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

2. 二进制搭建流程

a. 创建多台虚拟机,安装linux操作系统

b. 操作系统初始化(各种关关关)

c. 为etcd和apiserver自签证书(相当于门禁卡,保证互通)

d. 部署etcd集群

e. 部署master组件

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

f. 部署node组件

kubelet   kube-proxy  docker  etcd

g. 部署集群网络


总结

使用 kubeadm 部署 kubernetes 1.27.1 版本相关推荐

  1. 【CentOS】利用Kubeadm部署Kubernetes (K8s)

    [CentOS]利用Kubeadm部署Kubernetes (K8s)[阅读时间:约10分钟] 一.概述 二.系统环境&项目介绍 1.系统环境 2.项目的任务要求 三.具体实验流程 1 系统准 ...

  2. kubeadm部署Kubernetes(k8s)完整版详细教程

    kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具. 这个工具能通过两条指令完成一个kubernetes集群的部署: # 创建一个 Master 节点 $ kubeadm i ...

  3. kubeadm部署kubernetes

    kubeadm部署kubernetes kubeadm 部署方式介绍 单master节点环境准备 卸载kubernetes kubeadm init命令文档 kubeadm 部署方式介绍 1.使用ku ...

  4. 一份详尽的利用 Kubeadm部署 Kubernetes 1.13.1 集群指北

    2019独角兽企业重金招聘Python工程师标准>>> 概 述 Kubernetes集群的搭建方法其实有多种,比如我在之前的文章<利用K8S技术栈打造个人私有云(连载之:K8S ...

  5. 【完整记录】使用kubeadm部署kubernetes集群踩坑记录及解决方案

    文章目录 搭建集群过程中遇到的问题及解决方案 1. 现有网上的kubernetes集群搭建教程中的kubeadm配置文件版本过老导致出现以下报错: 2. kubeadm init过程中pull镜像超时 ...

  6. kubeadm 部署 kubernetes:v1.23.4集群

    一.安装前的准备 !!!以下操作需要在所有master和node上执行 1.1.关闭selinux,关闭防火墙 1.2.添加hosts解析 192.168.122.160 master 192.168 ...

  7. kubeadm部署kubernetes高可用(三主三从)

    一. 1.准备 准备6台机器,操作系统CentOS Linux release 7.9.2009 (Core) 硬件配置:16C 32G 硬盘1.6T 集群中所有机器之间网络互通,且可访问外网. 注意 ...

  8. 利用 Kubeadm部署 Kubernetes 1.13.1 集群实践录

    概 述 Kubernetes集群的搭建方法其实有多种,比如我在之前的文章<利用K8S技术栈打造个人私有云(连载之:K8S集群搭建)>中使用的就是二进制的安装方法.虽然这种方法有利于我们理解 ...

  9. kubeadm 部署kubernetes 1.26.1集群 Calico BGP ToR配置

    目录 机器信息 升级内核 系统配置 部署容器运行时Containerd 安装crictl客户端命令 配置服务器支持开启ipvs的前提条件 安装 kubeadm.kubelet 和 kubectl 初始 ...

最新文章

  1. 2016012009 马佳欣 散列函数的应用及其安全性
  2. stm32中如何进行printf重定向用于串口调试输出
  3. java 设计模式_快速上手Java设计模式之简介
  4. plsql 为空显示 0 的函数_不加班只加薪!从0到1教你制作出入库进销存表格
  5. NHibernate常见错误
  6. tomcat配置虚拟目录的方法
  7. Android开发学习之以CameraAPI方式实现相机功能(二)——相机功能配置
  8. Python 操作 protobuf 常见用法
  9. Mybatis学习笔记(九) —— Mybatis逆向工程
  10. 计算机接口论文摘要,计算机接口技术论文_计算机接口技术
  11. 别以透明的名义降低人工智能的能力
  12. 印象码——中国第一款视频广告验证码
  13. php加入购物车怎样实现_php简单实现加入购物车功能案例
  14. 使用python爬取百度今日热点事件排行榜
  15. microsoftstore连不上网_win10应用商店无法联网怎么办_解决win10商店连不上网的方法...
  16. 计算机二级和公共英语三级考试时间,英语三级考试时间,全国英语等级考试三级时间。...
  17. 《羊了个羊》还在火!创始人被制成展牌,竟成母校招生“活广告”?
  18. Redis常用数据结构及其场景归纳
  19. 百度地图比例尺与级别关系
  20. 前端实现从视频中抽离出音频

热门文章

  1. 如何开发合成物品功能?
  2. sql语句查询重复的数据
  3. 红黑树 (Red-Black Tree) – 介绍
  4. error: Microsoft Visual C++ 14.0 is required. Get it with Microsoft Visual C++ Build安装scrapy出错解决方法
  5. JAVA面试题(第一部分)
  6. 计算机图形学:多边形填充算法(算法原理及代码实现)
  7. linux 内核inode VS file
  8. 如何修复烧写镜像文件失败的SD卡
  9. 阿里腾讯微软拥抱低代码,程序员们要“失业”?
  10. The working copy at 'xxx' is too old 错误解决