搭建k8s集群服务(kubeadm方式)

准备工作

操作系统版本:CentOS Linux release 7.9.2009 (Core)

虚拟机硬件配置:2核8G内存(最低2G),硬盘最低25G;

linux内核版本(3.10版本尝试失败):5.4.268-1.el7.elrepo.x86_64

linux_升级LINUX内核步骤

docker版本:Docker version 25.0.1, build 29cf629

安装网络环境和其他环境设置

注意:将默认网络改为eth0网卡(我原来的是ens33改为了eth0)

Linux网卡没有eth0显示ens33原因以及解决办法

如果就3.10版本的linux内核,需要升级

  1. 关闭防火墙

systemctl stop firewalld

systemctl disable firewalld

  1. 关闭selinux

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

setenforce 0 #临时

  1. 关闭swap(要重启虚拟机)

sed 's/.swap./#&/' /etc/fstab #永久

swapoff -a #临时

  1. 根据规划设置主机名,以下3台主机

192.168.43.104 k8s-master

192.168.43.105 k8s-node1

192.168.43.106 k8s-node2

  1. 在master节点中添加

cat >> /etc/hosts

192.168.43.104 k8s-master

192.168.43.105 k8s-node1

192.168.43.106 k8s-node2

EOF

  1. 添加ipv4和ipv6桥接的配置(会自动创建k8s.conf文件)
    cat > /etc/sysctl.d/k8s.conf << EOF 
    net.bridge.bridge-nf-call-ip6tables = 1 
    net.bridge.bridge-nf-call-iptables = 1 
    EOF

        sysctl --system # 执行这条命令生效

  1. 时间同步

yum install ntpdate -y

ntpdate time.windows.com

安装docker环境

  1. 安装docker

先卸载

yum list installed | grep docker

yum remove docker-ce.x86_64 -y

rm -rf /etc/docker

rm -rf /var/lib/docker

rm -rf /usr/docker

rm -rf /run/docker

rm -rf /bin/docker

rm -rf /*/*/docker

查看有没有卸载干净

ll /*/docker

ll /*/*/docker

find / -name docker

再安装

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

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

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

  1. 配置镜像下载加速
    tee /etc/docker/daemon.json <<-'EOF'
    {"exec-opts": ["native.cgroupdriver=systemd"],"registry-mirrors": ["https://7zi5cb9i.mirror.aliyuncs.com"]
    }
    EOF

systemctl daemon-reload

systemctl restart docker

systemctl enable docker

# 以下两项设置成yes:vim /etc/ssh/sshd_config

PermitRootLogin yes

PasswordAuthentication yes

安装kubeadmin、kubelet、kubectl

添加k8s镜像源

cat > /etc/yum.repos.d/kubernetes.repo << EOF [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ enabled=1 gpgcheck=0 repo_gpgcheck=0 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF

  1. 安装kubeadm kubelet kubectl (每个节点都要安装)

yum install -y kubelet-1.23.6 kubeadm-1.23.6 kubectl-1.23.6

systemctl enable kubelet # 设置开机启动

systemctl start kubelet

# 查看状态,其它东西还没配置好,现在是启动不起来的

systemctl status kubelet

1.每个节点安装kubeadmin(快速构建集群环境的工具,主节点设置Master,从节点join到集群)
2.每个节点安装kubelet(真正干活的)
3.每个节点安装kubectl(命令行工具)
4.每个节点都要安装Docker(master和Node都要,容器运行时环境)

安装k8s master节点

  1. 安装k8s-master节点
  • 初始化master节点(仅在master上执行)
kubeadm init \
--apiserver-advertise-address=192.168.43.104 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.23.6 \
--service-cidr=10.96.0.0/16 \
--pod-network-cidr=10.244.0.0/16

如果执行init报错,再次执行之前要重置初始化: kubeadm reset -f

查看日志:tail -f /var/log/messages

journalctl -xeu kubelet

执行成功:

# 直接复制控制台上的几条命令执行

mkdir -p $HOME/.kube

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

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

# 从节点加入集群中

kubeadm join 192.168.43.104:6443 --token 334rev.g1ubyahjflqnf9f0 \
--discovery-token-ca-cert-hash sha256:17130a159cf0b3f5b9836bf13d2e522c12ab89f92bb6ff150678d0d96e314095 

如果token过期了,用命令重新生成:kubeadm token create --ttl 0 --print-join-command

# 安装CNI网络插件Calico(主节点上安装)

  • 下载calico资源文件:wget https://docs.projectcalico.org/manifests/calico.yaml
  • 查看文件需要的镜像:

  • 可以看到默认是从docker.io下载的,速度太慢,需要替换docker.io

sed -i 's#docker.io/##g' calico.yaml

  • 修改calico.yaml配置文件(如果在master节点初始化指定了pod的ip(--pod-network-cidr=10.244.0.0/16),这步可以省略。)

  • 执行calico.yaml文件

  • 查看运行状态(耐心等待):kubectl get po -n kube-system

  • 查看节点状态:kubectl get nodes

  • 查看没有running的pod原因:kubectl describe po calico-node-7wrw7 -n kube-system

  • 等待结果,大概等了13分钟,状态全部变成running
  • 还可以使用watch命令监控状态:watch kubectl get pod -n kube-system -o wide

测试一下:

kubectl create deployment nginx --image=nginx

kubectl expose deployment nginx --port=80 --type=NodePort

kubectl get pod,svc

在浏览器访问一下nginx(在任意节点下都能访问)

使用curl命令访问一下nginx

  1. 安装k8s-node1 / k8s-node2

在任意从节点上执行kubectl都会报错,原因是从节点执行命令需要链接主节点的api-server,但是从节点并不知道api-server的访问地址。

kubectl get nodes

所以,需要将做如下配置

  • 将master节点的 /etc/kubernetes/admin.conf 文件拷贝到两个从节点

scp -r /etc/kubernetes/admin.conf root@k8s-node1:/etc/kubernetes/

scp -r /etc/kubernetes/admin.conf root@k8s-node2:/etc/kubernetes/

  • 配置一个环境变量

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

  • 刷新配置 source /etc/profile

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

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

相关文章

基于Java+VUE+echarts大数据智能道路交通信息统计分析管理系统

大数据智能交通管理系统是一种基于Web的系统架构&#xff0c;通过浏览器/服务器&#xff08;B/S&#xff09;模式实现对城市交通数据的高效管理和智能化处理。该系统旨在通过集成各类交通数据&#xff0c;包括但不限于车辆信息、行驶记录、违章情况等&#xff0c;来提升城市管理…

【Python】AudioLazy:基于 Python 的数字信号处理库详解

AudioLazy 是一个用于 Python 的开源数字信号处理&#xff08;DSP&#xff09;库&#xff0c;设计目的是简化信号处理任务并提供更直观的操作方式。它不仅支持基础的滤波、频谱分析等功能&#xff0c;还包含了滤波器、信号生成、线性预测编码&#xff08;LPC&#xff09;等高级…

两个向量所在平面的法线,外积,叉积,行列式

偶尔在一个数学题里面看到求两向量所在平面的法线&#xff0c;常规方法可以通过法线与两向量垂直这一特点&#xff0c;列两个方程求解&#xff1b;另外一种方法可以通过求解两个向量的叉积&#xff0c;用矩阵行列式 (determinant) 的方式&#xff0c;之前还没见过&#xff0c;在…

【计算机网络】传输层UDP和TCP协议

目录 再谈端口号端口号范围划分认识知名端口号查看知名端口号两个问题 UDP协议UDP特点UDP的缓冲区基于UDP的应用层协议 TCP协议TCP协议格式确认应答机制超时重传机制连接管理机制&#xff08;三次握手与四次挥手&#xff09;理解TIME_WAIT状态理解CLOSE_WAIT状态滑动窗口快重传…

【C++】迭代器失效问题解析

✨ Blog’s 主页: 白乐天_ξ( ✿&#xff1e;◡❛) &#x1f308; 个人Motto&#xff1a;他强任他强&#xff0c;清风拂山冈&#xff01; &#x1f525; 所属专栏&#xff1a;C深入学习笔记 &#x1f4ab; 欢迎来到我的学习笔记&#xff01; 一、迭代器失效的概念 迭代器的作用…

【PyTorch】生成对抗网络

生成对抗网络是什么 概念 Generative Adversarial Nets&#xff0c;简称GAN GAN&#xff1a;生成对抗网络 —— 一种可以生成特定分布数据的模型 《Generative Adversarial Nets》 Ian J Goodfellow-2014 GAN网络结构 Recent Progress on Generative Adversarial Networks …

Python | Leetcode Python题解之第450题删除二叉搜索树中的节点

题目&#xff1a; 题解&#xff1a; class Solution:def deleteNode(self, root: Optional[TreeNode], key: int) -> Optional[TreeNode]:cur, curParent root, Nonewhile cur and cur.val ! key:curParent curcur cur.left if cur.val > key else cur.rightif cur i…

解决Excel时出现“被保护单元格不支持此功能“的解决办法,详细喂饭级教程

今天有个朋友发过来一个excel文件&#xff0c;本来想修改表格的内容&#xff0c;但是提示&#xff0c;被保护单元格不支持此功能&#xff0c;对于这个问题&#xff0c;找到一个解决方法&#xff0c;现记录下来&#xff0c;分享给有需要的朋友。 表格文件名为aaa.xls,以WPS为例。…

什么是转义字符

1.什么是转义字符 转义字符是一组特殊的字符&#xff0c;转义字符顾名思义就是&#xff1a;转变原来的意思。 比如&#xff1a;我们有一组字符&#xff0c;其中的n能完整的打印出来&#xff0c;如下&#xff1a; #include <stdio.h> int main() { printf("asnfd&…

Typora解决图片复制到其他博客平台,解决图片显示转存失败(CSDN除外)

目录 一、Typora这个Markdown编辑器的确好用1.1 安装 二、 问题“图片转存失败”2.1 问题具体显示如下&#xff1a;2.2 问题分析&#xff1a;其实就是图片在typora里面是使用的本地路径&#xff0c;因此不显示&#xff0c; 三、解决方案3.1打开Typora&#xff0c;按下述图片显示…

【Verilog学习日常】—牛客网刷题—Verilog企业真题—VL74

异步复位同步释放 描述 题目描述&#xff1a; 请使用异步复位同步释放来将输入数据a存储到寄存器中&#xff0c;并画图说明异步复位同步释放的机制原理 信号示意图&#xff1a; clk为时钟 rst_n为低电平复位 d信号输入 dout信号输出 波形示意图&#xff1a; 输入描…

网络原理-数据链路层

在这一层中和程序员距离比较遥远&#xff0c;除非是做交换机开发&#xff0c;否则不需要了解数据链路层 由AI可知&#xff1a; 数据链路层&#xff08;Data Link Layer&#xff09;是OSI&#xff08;Open Systems Interconnection&#xff09;七层网络模型中的第二层&#xff0…

Elasticsearch 开放推理 API 增加了对 Google AI Studio 的支持

作者&#xff1a;来自 Elastic Jeff Vestal 我们很高兴地宣布 Elasticsearch 的开放推理 API 支持 Gemini 开发者 API。使用 Google AI Studio 时&#xff0c;开发者现在可以与 Elasticsearch 索引中的数据进行聊天、运行实验并使用 Google Cloud 的模型&#xff08;例如 Gemin…

用网络分析仪测试功分器驻波的5个步骤

在射频系统中&#xff0c;功分器的驻波比直接关系到信号的稳定性和传输效率。本文将带您深入了解驻波比的测试方法和影响其结果的因素。 一、功分器驻波比 驻波(Voltage Standing Wave Ratio)&#xff0c;简称SWR或VSWR&#xff0c;是指频率相同、传输方向相反的两种波&#xf…

TCN模型实现电力数据预测

关于深度实战社区 我们是一个深度学习领域的独立工作室。团队成员有&#xff1a;中科大硕士、纽约大学硕士、浙江大学硕士、华东理工博士等&#xff0c;曾在腾讯、百度、德勤等担任算法工程师/产品经理。全网20多万粉丝&#xff0c;拥有2篇国家级人工智能发明专利。 社区特色&a…

macOS 开发环境配置与应用开发

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

mfc140u.dll缺失?快速解决方法全解析,解决mfc140u.dll错误

当你的电脑出现找不到mfc140u.dll的问题&#xff0c;不少用户在使用电脑时陷入了困扰。这个错误提示就像一道屏障&#xff0c;阻挡了用户正常使用某些软件。无论是办公软件、游戏还是专业的设计工具&#xff0c;一旦出现这个问题&#xff0c;都会导致软件无法正常运行。如果您也…

【AIGC】内容创作——AI文字、图像、音频和视频的创作流程

我的主页&#xff1a;2的n次方_ 近年来&#xff0c;生成式人工智能&#xff08;AIGC&#xff0c;Artificial Intelligence Generated Content&#xff09;技术迅速发展&#xff0c;彻底改变了内容创作的各个领域。无论是文字、图像、音频&#xff0c;还是视频&#xff0c;A…

【分布式微服务云原生】windows+docker+mysql5.7.44一主一从主从复制

目录 1. 主库设置2. 从库设置3. 验证主从复制内容汇总表格 摘要&#xff1a; 在Windows系统上通过Docker部署MySQL主从复制&#xff0c;以下是详细的步骤和命令&#xff0c;帮助你设置一主一从的MySQL复制环境。 1. 主库设置 步骤1&#xff1a;运行MySQL主库容器 docker run …

如何在 DAX 中计算多个周期的移动平均线

在 DAX 中计算移动聚合很容易。但是&#xff0c;计算一段时间内的移动平均值时会有一些陷阱。由于其中一些陷阱是定义问题&#xff0c;因此我们必须小心&#xff0c;不要选择错误的方法。让我们看看细节。欢迎来到雲闪世界。 添加图片注释&#xff0c;不超过 140 字&#xff08…