一、CentOS7通过kubeadm安装K8S 1.20.1版本


一、准备机器

所有节点执行
准备3台虚拟机(2核4G,CentOS 7+),配置如下:

hostnamectl set-hostname k8s-master  # 在Master节点执行
hostnamectl set-hostname k8s-node1   # Worker1节点执行
hostnamectl set-hostname k8s-node2   # Worker2节点执行
IP地址主机名角色
192.168.11.101k8s-masterMaster
192.168.11.102k8s-node1Node
192.168.11.103k8s-node2Node

二、安装Docker

所有节点执行以下命令:

# 卸载旧版本Docker
sudo yum remove docker\*# 安装依赖工具
sudo yum install -y yum-utils# 配置阿里云Docker镜像源
sudo yum-config-manager \--add-repo \http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo# 安装指定版本Docker
sudo yum install -y docker-ce-20.10.7 docker-ce-cli-20.10.7 containerd.io-1.4.6# 启动Docker并设置开机自启
systemctl enable docker --now# 配置Docker镜像加速和参数
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://hub-mirror.c.163.com","https://mirror.baidubce.com","https://registry.docker-cn.com","https://mirror.ccs.tencentyun.com","https://docker.mirrors.ustc.edu.cn","https://hub-mirror.c.163.com","https://docker.1ms.run","https://hub.rat.dev","https://docker.1panel.live"]
}
EOF# 重启Docker生效
sudo systemctl daemon-reload
sudo systemctl restart docker


三、安装Kubernetes基础环境

所有节点执行以下操作

# 1. 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld# 2. 关闭SELinux
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config# 3. 关闭Swap
swapoff -a
sed -ri 's/.*swap.*/#&/' /etc/fstab
systemctl reboot  # 重启生效# 4. 设置主机名(分别在每台机器执行,上面执行过就不用执行了)
# Master节点执行:
hostnamectl set-hostname k8s-master
# Node1节点执行:
hostnamectl set-hostname k8s-node1
# Node2节点执行:
hostnamectl set-hostname k8s-node2# 5. 配置Hosts(所有节点添加以下内容)
cat >> /etc/hosts << EOF
192.168.11.101 k8s-master
192.168.11.102 k8s-node1
192.168.11.103 k8s-node2
EOF# 6. 允许iptables检查桥接流量
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sudo sysctl --system# 7. 时间同步
yum install ntpdate -y
ntpdate time.windows.com


四、安装kubelet、kubeadm、kubectl

所有节点执行:

# 配置阿里云Kubernetes镜像源
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[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.gpg
EOF# 卸载旧版本(如存在)
yum remove -y kubelet kubeadm kubectl#查看可以安装的版本
yum list kubelet --showduplicates | sort -r# 安装指定版本组件
sudo yum install -y kubelet-1.20.9 kubeadm-1.20.9 kubectl-1.20.9# 启动kubelet并设置开机自启
sudo systemctl enable --now kubelet


五、初始化Master节点

仅在Master节点(k8s-master)执行:

# 1. 下载所需镜像
sudo tee ./images.sh <<-'EOF'
#!/bin/bash
images=(kube-apiserver:v1.20.9kube-proxy:v1.20.9kube-controller-manager:v1.20.9kube-scheduler:v1.20.9coredns:1.7.0etcd:3.4.13-0pause:3.2
)
for imageName in ${images[@]} ; dodocker pull registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images/$imageName
done
EOFchmod +x ./images.sh && ./images.sh# 2. 初始化Master节点 (里面的第一个ip地址就是k8s-master机器的ip,改成你自己机器的,后面两个ip网段不用动)
#所有网络范围不重叠
kubeadm init \--apiserver-advertise-address=192.168.157.148 \--control-plane-endpoint=k8s-master \--image-repository registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images \--kubernetes-version v1.20.9 \--service-cidr=10.96.0.0/16 \--pod-network-cidr=10.244.0.0/16# 可以查看kubelet日志
journalctl -xefu kubelet #如果初始化失败,重置kubeadm
kubeadm reset
rm -rf /etc/cni/net.d  $HOME/.kube/config
#清理 iptables 规则
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPTmaster成功后提示如下:
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/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 k8s-master:6443 --token 50rexj.yb0ys92ynnxxbo2s \--discovery-token-ca-cert-hash sha256:10fd9d2a9f4e2d7dff502aa3fb31a80f0372666efc92defde3707b499ba000e9 \--control-plane Then you can join any number of worker nodes by running the following on each as root:kubeadm join k8s-master:6443 --token 50rexj.yb0ys92ynnxxbo2s \--discovery-token-ca-cert-hash sha256:10fd9d2a9f4e2d7dff502aa3fb31a80f0372666efc92defde3707b499ba000e9# 3. 配置使用 kubectl 命令工具和kubectl权限
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config


六、Master(Node节点加入集群

仅在MasterNode节点(k8s-node1、k8s-node2)执行:

kubeadm join k8s-master:6443 \--token 50rexj.yb0ys92ynnxxbo2s \--discovery-token-ca-cert-hash sha256:10fd9d2a9f4e2d7dff502aa3fb31a80f0372666efc92defde3707b499ba000e9

如果上面这个kubeadm join k8s……命令忘记了,可以使用“kubeadm token create --print-join-command”在master上重新生成。

若Node节点执行kubectl报错,需配置环境变量:

echo "export KUBECONFIG=/etc/kubernetes/kubelet.conf" >> /etc/profile
source /etc/profile

node节点添加成功后,可以验证。

提示2个是0/1

提示2个是no……

主要是因为你的calico网络还没安装,只要第2个命令目前能看到3个节点就没问题。

[root@k8s-master calico]# kubectl get pod -n kube-system
NAME                                       READY   STATUS    RESTARTS      AGE
calico-kube-controllers-74f56488c5-4z9ds  0/1     Running   1 (23h ago)   23h   #有2个是0
coredns-6554b8b87f-ttq5c                   0/1     Running   1 (24m ago)   5d8h #有2个是0,具体那两个忘记了
coredns-6554b8b87f-wgsqn                   0/1     Running   1 (24m ago)   5d8h
etcd-k8s-master                            1/1     Running   1 (24m ago)   5d8h
kube-apiserver-k8s-master                  1/1     Running   1 (24m ago)   5d8h
kube-controller-manager-k8s-master         1/1     Running   1 (24m ago)   5d8h
kube-proxy-cxhjm                           1/1     Running   1 (23m ago)   5d8h
kube-proxy-lvtxh                           1/1     Running   1 (24m ago)   5d8h
kube-proxy-sbc94                           1/1     Running   1 (24m ago)   5d8h
kube-scheduler-k8s-master                  1/1     Running   1 (24m ago)   5d8h
[root@k8s-master calico]# 
[root@k8s-master calico]# 
[root@k8s-master calico]# kubectl get nodes
NAME         STATUS   ROLES           AGE    VERSION
k8s-master   noReady    control-plane   5d8h   v1.28.2 #noready,提示no……
k8s-node1    noReady    <none>          5d8h   v1.28.2 #noready,提示no……
k8s-node2    noReady    <none>          5d8h   v1.28.2 #noready,提示no……
[root@k8s-master calico]# 

 七、安装calico网络插件

# 1. 安装Calico网络插件
curl https://docs.projectcalico.org/archive/v3.20/manifests/calico.yaml -O #作废
curl -LO https://docs.projectcalico.org/archive/v3.20/manifests/calico.yaml #作废mkdir /root/calico && cd /root/calico/wget https://jiangstudy.online:8081/sources/calico.yaml修改calici.yaml的网络 ##这一步很重要,否则网络安装成功集群也不通vi /root/calico/calico.yaml- name: CALICO_IPV4POOL_CIDRvalue: "10.244.0.0/16"#修改这个ip信息,这个ip信息和你# 2. 初始化Master节点的  --pod-network-cidr值保持一致#部署calico
kubectl apply -f calico.yaml

七、验证集群状态

仅在Master节点执行:

kubectl get nodes

输出应显示所有节点状态为 Ready。以及执行kubectl get pod -A时,都是1/1。


说明(不看也行,写的不全):

  1. Master节点独有操作

    • 初始化集群 (kubeadm init)

    • 安装Calico网络插件

    • 执行kubectl命令查看集群状态

  2. Node节点独有操作

    • 使用kubeadm join加入集群

    • 配置KUBECONFIG环境变量

  3. 所有节点共同操作

    • Docker安装与配置

    • 基础环境配置(防火墙、SELinux、Swap等)

    • 安装kubelet/kubeadm/kubectl
      通过以上步骤,可清晰区分Master与Node节点的操作范围,确保集群顺利搭建。
       

遇到的问题:

问题1、执行5.4的时候“安装Calico网络插件”,无法下载这个网络文件。

后来使用的下载方法:wget https://jiangstudy.online:8081/sources/calico.yaml,然后一定要配置里面的ip。

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

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

相关文章

AgenticSeek,开源本地通用AI Agent,自主执行任务

AgenticSeek是一款完全本地化的开源AI助手&#xff0c;作为Manus的开源替代品&#xff0c;专为保护用户隐私而设计。它能够在本地设备上执行多种任务&#xff0c;包括网页浏览、代码编写和复杂项目的规划&#xff0c;确保所有操作和数据均在用户的设备上完成。 AgenticSeek是什…

C 语言学习笔记(指针6)

内容提要 内存操作 内存操作的函数 内存操作 我们对于内存操作需要依赖于string.h头文件中相关的库函数。 内存的库函数 内存填充 头文件&#xff1a;#include <string.h>函数原型 void* memset(void* s, int c, size_t)函数功能&#xff1a;将内存块s的前n个字节…

Grafana-Gauge仪表盘

仪表盘是一种单值可视化。 可让您快速直观地查看某个值落在定义的或计算出的最小和最大范围内的位置。 通过重复选项&#xff0c;您可以显示多个仪表盘&#xff0c;每个对应不同的序列、列或行。 支持的数据格式 单值 数据集中只有一个值&#xff0c;会生成一个显示数值的…

解决Vue项目依赖错误:使用electron-vite重建

文章目录 开端解决方案&#xff1a;使用 electron-vite Vue 重建项目1. 环境准备2. 创建新项目3. 安装依赖并启动项目 开端 在开发过程中&#xff0c;我遇到了一个令人头疼的错误提示&#xff1a; 0:0 error Parsing error: Cannot find module vue/cli-plugin-babel/preset…

WPF prism

Prism Prism.Dryloc 包 安装 Nuget 包 - Prism.DryIoc 1. 修改 App.xaml 修改 App.xaml 文件&#xff0c;添加 prism 命名空间, 继承由 Application → PrismApplication&#xff0c;删除默认启动 url, StartupUri“MainWindow.xaml” <dryioc:PrismApplicationx:Class…

循序渐进PersistentVolumes与PersistentVolumeClaim

文章目录 静态配置&#xff08;Static Provisioning&#xff09;&#xff1a;Persistent volume(PV)Local 示例&#xff1a;NFS 示例&#xff1a;检查pvPV 的常见状态说明Persistent volume claim(PVC)1. local PVC示例:2.NFS PVC示例:3. 检查PVC: 挂载静态供应卷验证静态供应卷…

【连接器专题】SD卡座规格书审查需要审哪些方面?

在审查SD卡座规格书时,我们需要考虑哪些方面? 首先在拿到一份SD卡座的详细规格书时,一般供应商给到的规格书中包括了一些基础信息、产品图纸信息、技术参数信息,同时有些供应商会给出产品可靠性测试报告。因此我们会从这几个要素去看规格书。 基础信息 基础信息一般会给变更…

投稿 IEEE Transactions on Knowledge and Data Engineering 注意事项

投稿 IEEE Transactions on Knowledge and Data Engineering 注意事项 要IEEE overleaf 模板私信,我直接给我自己论文,便于编辑 已经投稿完成了,有一些小坑 准备工作 注册IEEE账户:若没有IEEE账户,需前往IEEE官网注册。注册成功后,可用于登录投稿系统。现在新的系统,…

JS入门——三种输入方式

JS入门——三种输入方式 一、方式一&#xff1a;直接在警告框弹出(window可以省略) <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><body><script><!-- 方式一直接在警告框弹…

WordPress免费网站模板下载

大背景图免费wordpress建站模板 这个wordpress模板设计以简约和专业为主题&#xff0c;旨在为用户提供清晰、直观的浏览体验。以下是对其风格、布局和设计理念的详细介绍&#xff1a; 风格 简约现代&#xff1a;整体设计采用简约风格&#xff0c;使用了大量的白色和灰色调&am…

AUTOSAR CP全新系统化培训上线!从底层到应用,三步阶梯,五大学习维度构建完整知识体系

AUTOSAR组织 AUTOSAR官方全新推出「AUTOSAR CP全栈赋能计划」&#xff0c;从架构全景到模块细节&#xff0c;自底向上、由浅入深&#xff0c;覆盖MCAL至SWC全层级&#xff0c;融合通信、诊断、安全等六大核心Feature&#xff0c;带您穿透复杂理论&#xff0c;直击AUTOSAR开发本…

Java网络编程与Socket安全权限详解

Socket安全权限控制 Java通过java.net.SocketPermission类实现对网络套接字访问的细粒度控制。该权限管理机制通常在Java策略文件中配置,其标准授权语法格式如下: grant {permission java.net.SocketPermission"target", "actions"; };目标主机与端口规…

基于本地化大模型的智能编程助手全栈实践:从模型部署到IDE深度集成学习心得

近年来&#xff0c;随着ChatGPT、Copilot等AI编程工具的爆发式增长&#xff0c;开发者生产力获得了前所未有的提升。然而&#xff0c;云服务的延迟、隐私顾虑及API调用成本促使我探索一种更自主可控的方案&#xff1a;基于开源大模型构建本地化智能编程助手。本文将分享我构建本…

视频监控汇聚平台EasyCVR安防小知识:如何通过视频融合平台解决信息孤岛问题?

一、项目背景与需求分析​ 随着数字化技术发展与网络带宽升级&#xff0c;视频技术应用场景不断拓展&#xff0c;视频监控、记录仪等多样化产品构建起庞大体系。但这些独立系统彼此割裂&#xff0c;形成信息孤岛。 在系统集成项目中&#xff0c;视频系统深度融合已成必然趋势…

如何在 Windows 和 Mac 上擦拭和清洁希捷外置硬盘

希捷外置硬盘广泛用于存储目的&#xff0c;但有时您可能出于多种目的需要擦除或清洁希捷外置硬盘&#xff0c;例如转售、重复使用、捐赠等。为了释放硬盘上的存储空间或确保没有人可以从硬盘中恢复您的信息&#xff0c;擦除硬盘是必要的步骤。无论您使用的是 Windows 还是 Mac&…

SAP saml2 元数据 HTTP 错误

使⽤事务 SAML2 或 SAML2_IDP 在 ABAP 系统中配置 SAML 2.0 时&#xff0c; Web 页⾯返回 403 已禁⽌、 404 未找到 或 500 服务器内部错误。 在事务 SAML2 中下载元数据时&#xff0c; ⽹页返回 403 已禁⽌、 404 未找到或 500 服务器内部错误。 在事务 SAML2_IDP 中下载…

powershell 中 invoke-expression 报错解决

打开powershell就出现这个报错&#xff1a; 网上搜了也没有很好的解决办法&#xff0c;抱着一点点期待&#xff0c;问了豆包 根据豆包的指示&#xff0c;在终端执行以下 几个命令&#xff0c;报错解决了&#xff08;开心万岁&#xff09; # 移除多余的引号和空路径 $pathArra…

简单说一说Modern ABAP这个概念

Modern ABAP 是 SAP近些年来提出的一个概念&#xff0c;指的是在传统 ABAP (Advanced Business Application Programming) 的基础上&#xff0c;结合新技术和现代化编程理念进行改进和优化&#xff0c;旨在使 ABAP 更适应云计算、数据驱动业务以及开发效率提升的需求。 这一概…

kafka 常用知识点

文章目录 前言kafka 常用知识点1. kafka 概念2. 消息共享和广播3. 分区和副本数量奇偶数 前言 如果您觉得有用的话&#xff0c;记得给博主点个赞&#xff0c;评论&#xff0c;收藏一键三连啊&#xff0c;写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差&#xff0…

5G RedCap是什么-与标准5G的区别及支持路由器推荐

技术背景与重要性 从智能穿戴到工业传感器&#xff0c;物联网设备种类繁多&#xff0c;但并非所有设备都需要标准5G的全部功能。为满足这些中端应用的需求&#xff0c;3GPP在Release 17中引入了5G RedCap&#xff08;Reduced Capability&#xff09;&#xff0c;也称为5G NR-L…