如何在Centos7中安装Kubernetes
一、概述
Kubernetes([kubə’netis]),简称K8s,是用8代替名字中间的8个字符“ubernete”而成的缩写,它是一个由Google 开源的全新的分布式容器集群管理系统。
二、准备
| IP | 角色 | 内存 |
|---|---|---|
| 192.168.1.130 | master | 4G |
| 192.168.1.131 | node | 2G |
| 192.168.1.132 | node | 2G |
说明:上述Linux环境网络适配器均为NAT模式;Linux环境搭建请参考视频教程:https://www.bilibili.com/video/BV15m4y1d7ZP/?spm_id_from=333.999.0.0
三、安装
1、共性操作
该操作要求每个节点均需执行的相同操作,包括修改hosts、时间同步、禁用firewalld、禁用selinux、禁用swap、网桥设置和安装K8s等。
a、修改hosts
命令:
# cat >> /etc/hosts << EOF
192.168.1.130 master
192.168.1.131 node1
192.168.1.132 node2
EOF
# cat /etc/hosts
如果不修改hosts文件,则node节点报如下错误:
5月 18 14:27:23 localhost.localdomain kubelet[71288]: E0518 14:27:23.915453 71288 controller.go:187] failed to update lease, error: Operation cannot be fulfilled on leases.coordination.k8s.io "localhost.localdomain": the object has been modified; please apply your changes to the latest version and try again
b、时间同步
# systemctl start chronyd && systemctl enable chronyd
# date
c、禁用firewalld
# systemctl stop firewalld && systemctl disable firewalld
如果不禁用firewalld,则出现如下警告:
[WARNING Firewalld]: firewalld is active, please ensure ports [6443 10250] are open or your cluster may not function correctly
d、禁用selinux
# setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
e、禁用swap
临时关闭, 重启失效:
# swapoff -a
永久关闭:
# swapoff -a && sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
默认情况下,K8s为了追求高性能,不建议使用交换分区,为此它要求每个节点禁用swap,否则各个节点中的kubelet无法运行。
f、网桥设置
# cat > /etc/sysctl.d/kubernetes.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF# sysctl --system
g、docker安装
# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# yum makecache fast
# yum -y install docker-ce
# systemctl enable docker && systemctl start docker
# docker -v
注意:yum -y install docker只能安装docker-1.13.x老版本的docker,2017年后版本有了CE(社区版本)和EE(企业版本),所以新版本使用yum -y install docker-ce
设置daemon.json:
# mkdir -p /etc/docker
# tee /etc/docker/daemon.json <<-'EOF'
{"exec-opts": ["native.cgroupdriver=systemd"],"registry-mirrors": ["https://ha65u7j9.mirror.aliyuncs.com"]
}
EOF
# systemctl daemon-reload && systemctl restart docker
在某个节点(master节点或node节点)中运行cat /var/lib/kubelet/config.yaml |grep group命令可以看出kubelet默认 cgoup 驱动为systemd,而docker 默认驱动为 cgroupfs,但K8s官网要求docker 和 kubelet 服务中的 cgroup 驱动必须一致,为此设置daemon.json时添加了"exec-opts": [“native.cgroupdriver=systemd”]配置。
g、安装K8s
①、镜像:
# 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
# cat /etc/yum.repos.d/kubernetes.repo
②、安装:
# yum install -y kubeadm-1.23.17 kubectl-1.23.17 kubelet-1.23.17
# systemctl enable kubelet
# journalctl -xefu kubelet
说明:查看kubelet运行日志:
2、异性操作
K8s环境搭建过程中有些命令需要在不同角色的节点执行,异性操作罗列了不同角色计算机执行的命令
a、master
①、设置hostname:
# hostnamectl set-hostname master
②、初始化Kubernetes,保存该命令输出的一个join命令,该join命令需要在node角色的节点上执行
# kubeadm init \--apiserver-advertise-address=192.168.1.130 \--image-repository registry.aliyuncs.com/google_containers \--kubernetes-version v1.23.17 \--service-cidr=10.96.0.0/12 \--pod-network-cidr=10.244.0.0/16 \--ignore-preflight-errors=all
说明:
–apiserver-advertise-address #集群通告地址(master 机器IP)
–image-repository #由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址
–kubernetes-version #K8s版本,与上面安装的一致
–service-cidr #集群内部虚拟网络,Pod统一访问入口
–pod-network-cidr #Pod网络,与下面部署的CNI网络组件yaml中保持一致
③、环境配置
普通用户:
# 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
如果不配置环境变量,则执行时提示如下错误:
# kubectl get node
The connection to the server localhost:8080 was refused - did you specify the right host or port?
④、配置flannel
flannel([ˈflænl])和calico([ˈkælɪkoʊ])都是用于k8s节点之间容器网络通信的一个k8s组件,flannel可以为不同node节点的分配不同的子网,实现容器间的跨机通信,从而实现整个kubenets层级通信。
— 下载:
# cd /opt
# wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
— 上传:
# kubectl apply -f /opt/kube-flannel.yml
b、node
①、设置hostname:
# hostnamectl set-hostname noden
每个node节点都要执行上面命令,n的值和/etc/hosts 文件从节点相一致。
②、执行kubeadm join命令,该命令是master节点 初始化k8s时生成的
# kubeadm join 192.168.1.130:6443 --token 5hj7w9.kt3fnduortroodcd \--discovery-token-ca-cert-hash sha256:b6e461346caae2c96220ec38d5435d8863ded95383743105733615df74b0a496
注意:上面命令中token默认有效期为24小时,过期后可以在master节点执行kubeadm token create --print-join-command重新创建token
③、环境配置
# echo "export KUBECONFIG=/etc/kubernetes/kubelet.conf" >> /etc/profile
# source /etc/profile
3、节点状态
# kubectl get node
NAME STATUS ROLES AGE VERSION
master Ready control-plane,master 9m9s v1.23.17
node1 Ready <none> 2m29s v1.23.17
node2 Ready <none> 2m10s v1.23.17
4、问题解决
a、问题一
描述:执行kubectl get node命令时发现有些节点一致处于NotReady状态,在这些节点执行journalctl -xefu kubelet命令则提示如下错误:
5月 19 06:15:21 master kubelet[6469]: E0519 06:15:21.849698 6469 kubelet.go:2394] "Container runtime network not ready" networkReady="NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized"
5月 19 06:15:24 master kubelet[6469]: I0519 06:15:24.336305 6469 cni.go:240] "Unable to update cni config" err="no networks found in /etc/cni/net.d"
原因:故障节点没有自动生成/etc/cni/net.d/10-flannel.conflist。
方案:将正常节点上/etc/cni/net.d/10-flannel.conflist拷贝到故障节点对应目录。
相关文章:
如何在Centos7中安装Kubernetes
一、概述 Kubernetes([kubə’netis]),简称K8s,是用8代替名字中间的8个字符“ubernete”而成的缩写,它是一个由Google 开源的全新的分布式容器集群管理系统。 二、准备 IP角色内存192.168.1.130master4G192.168.1.1…...
Stream强化
使用stream求list的对象属性的和 假设有一个Student类,其中有一个属性是score,可以通过以下代码求出List<Student>中score的和: List<Student> students new ArrayList<>(); // 添加学生对象到List中 int sum student…...
第一部分-基础篇-第一章:PSTN与VOIP(下篇)
文章目录 序言上一篇文章:1.6 电路交换与分组交换1.6.1 电路交换1.6.2 分组交换 1.7 VoIP1.8 IMS1.8.1 什么是IMS1.8.2 IMS的特点1.8.3 IMS核心网元(1 ) CSCF(2 ) MGCF(3 ) IM-MGW(5…...
《汇编语言》- 读书笔记 - 第4章-第一个程序
《汇编语言》- 读书笔记 - 第4章-第一个程序 4.1 一个源程序从写出到执行的过程4.2 源程序程序 4.11. 伪指令1.1 segment ends 声明段1.2 end 结束标记1.3 assume 关联 2. 源程序中的“程序”3. 标号4. 程序的结构5. 程序返回6. 语法错误和逻辑错误 4.3 编辑源程序4.4 编译4.5 …...
AI工具 ChatGPT-4 vs Google Bard , PostgreSQL 开发者会pick谁?
在人工智能 (AI) 进步的快节奏世界中,开发人员正在寻找最高效和突破性的解决方案来加快和提高他们的工作质量。对于 PostgreSQL 开发人员来说,选择理想的 AI 支持的工具以最专业的方式解决他们的查询至关重要。 近年来,人工智能工具的普及率…...
【网络】基础知识1
目录 网络发展 独立模式 网络互联 局域网LAN 广域网WAN 什么是协议 初识网络协议 协议分层 OSI七层模型 TCP/IP四层(或五层)模型 OSI和TCP/IP对比 网络传输流程 什么是报头 局域网通信原理 同网段的主机通讯 跨网段的主机通讯 数据包封装…...
chatgpt赋能python:Python倒序range的完整指南
Python倒序range的完整指南 Python是一种高级编程语言,很多人认为它非常容易学习和使用。其中一个非常有用的功能是range()函数,可以生成数字序列。然而,有时候我们需要以相反的顺序生成这个数字序列,这时候倒序range()函数就派上…...
工作笔记!
搭建tomcat Tomcat详细使用教程 tomcat配置用戶名和密碼 tomcat设置外网能访问_tomcat让别人通过网络访问 如何在windows开端口_windows开放端口命令 tomcat进Manager 403 Access Denied You are not authorized to view this page_tomcat报错you are not_ferry_cai 关于依…...
java设计模式之享元设计模式的前世今生
享元设计模式是什么? 享元设计模式是一种结构型设计模式,它的目的是在大规模重复使用相似对象时提高内存利用率和性能。它通过共享对象的公共部分来减少所需要的内存,从而在系统中同时存在更多的对象。 享元设计模式通过将对象分为可共享的内…...
RESTful:理解REST架构风格、RESTful API
一、REST架构风格 REST(英文Representational State Transfer)是一种基于客户端和服务器的架构风格,用于构建可伸缩、可维护的Web服务。REST的核心思想是,将Web应用程序的功能作为资源来表示,使用统一的标识符&#x…...
网络面试题:什么是 TCP/IP?
目录标题 什么是 TCP/IP?1) 网络接口层:2) 网络层:3) 传输层:4) 应用层: 2.数据包3.网络接口层4.网络层1) IP:2)地址解析协议 ARP3)子网 5 传输层1)UDP:2)TCP: 6 应用层运行在TCP协议上的协议:运行在UDP协议上的协议&…...
毫米波雷达模块在自动驾驶系统中的关键功能
随着自动驾驶技术的快速发展,毫米波雷达模块作为一项关键技术,为自动驾驶系统提供了重要的感知和决策能力。毫米波雷达模块通过实时探测和跟踪周围环境中的车辆、行人和障碍物,提供精确的距离和速度信息,帮助自动驾驶车辆做出准确…...
关于开发中对端口(port)的几点理解
一、服务端的端口是固定的,客户端的端口是随机的 客户端端口是随机的,比如访问百度,系统为浏览器分配了个端口1024。过一会重开电脑,访问了新浪,可能还是用1024端口,我不关浏览器,还要再开一个浏…...
qt 5.14.2 arm 交叉环境搭建过程
主要参考 https://blog.csdn.net/anmo_moan/article/details/126960630 https://blog.csdn.net/a648642694/article/details/89302843 1 下载编译器&设置 1.1 gcc-linaro-12.2.1-2023.01-x86_64_arm-linux-gnueabihf.tar.xz 下载编译器 1.2. /home/zsf/arm linaro 压缩包…...
apt remove purge的区别 删除包的同时删除配置文件
1、apt remove purge的区别 查看 man apt apt remove:删除软件包,不删除配置文件。这么做的目的是将来再次安装这个包时 原来的配置文件会自动加载供使用。也可以避免误删除包,配置文件还在的话,重新安装一次软件包就可以恢复到…...
电商|跨境电商如何选择API接口和ERP
随着跨境电商企业规模升级,平台提供的卖家后台系统往往无法满足有一定规模的店铺和独立站卖家。日常运营中,中大型跨境电商往往面临以下几种挑战: 多店铺、多平台订单管理难 库存数据集成难,经常缺货 物流管理难,手…...
测试人员的启蒙指南
文章目录 一. 了解测试1. 生活中的测试场景2. 什么是软件测试3. 实战练习 二. 软件测试和软件开发的区别三. 软件测试和软件调试的区别四. 软件测试的发展五. 软件测试的岗位六. 一个优秀的软件测试人员具备的素质 本篇中介绍测试人员是干什么的, 起到启蒙和了解的作用, 重点是…...
Linux工具:vim常用快捷键
1、拷贝行(一般模式下) 拷贝当前行 将光标移动到指定行,yy 移动到想要粘贴的行,p 即可把拷贝的行粘贴到该行下方 拷贝n行 将光标移动到指定行,比如拷贝5行,5yy 移动到想要粘贴的行,p 即可把拷贝的几行粘贴到该行下方…...
TA-lib第三方库安装问题
因为学习的需要,用到Talib库做写指标分析,但是百度了好久,说是去要某某网站下载对应版本的文件进行本地安装,但是把…404 Not found 然后通过查找,Ta-lib库的安装已经迁移到这里了 https://github.com/TA-Lib/ta-lib-p…...
接口测试的测试要点
接口测试的测试要点,你知道都有哪些吗? 接口测试是软件测试中的重要组成部分,它的目的是评估接口的质量和可靠性,以保证系统的正常运行。在进行接口测试时,必须要考虑到以下几个方面: 测试用例的编写 测试…...
概率论:常见分布的期望与方差、中心极限定理、切比雪夫不等式
目录 一、0、1分布 二、二项分布 三、泊松分布 四、均匀分布 五、指数分布 六、正态分布 七、中心极限定理及其应用 (1)中心极限定理的定义 (2)使用示例 八、切比雪夫不等式 (1)切比雪夫不…...
终极指南:5分钟搞定淘宝淘金币全任务自动化脚本
终极指南:5分钟搞定淘宝淘金币全任务自动化脚本 【免费下载链接】taojinbi 淘宝淘金币自动执行脚本,包含蚂蚁森林收取能量,芭芭农场全任务,解放你的双手 项目地址: https://gitcode.com/gh_mirrors/ta/taojinbi 你是否厌倦…...
OpenPLC虚拟PLC:5分钟搭建开源工业控制器的完整指南
OpenPLC虚拟PLC:5分钟搭建开源工业控制器的完整指南 【免费下载链接】OpenPLC Software for the OpenPLC - an open source industrial controller 项目地址: https://gitcode.com/gh_mirrors/op/OpenPLC 想要零成本学习工业自动化?OpenPLC虚拟PL…...
百度网盘下载速度太慢?Python脚本帮你获取高速直链
百度网盘下载速度太慢?Python脚本帮你获取高速直链 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 还在为百度网盘几十KB的下载速度而苦恼吗?想要摆脱客…...
别光看教程!用mdadm管理软RAID时,这5个运维坑我帮你踩过了
别光看教程!用mdadm管理软RAID时,这5个运维坑我帮你踩过了在虚拟化环境和物理服务器中,软RAID因其成本效益和灵活性成为许多企业的首选方案。然而,从创建到长期运维,mdadm管理的软RAID阵列隐藏着诸多教科书上不会提及的…...
如何高效处理大型AI模型:ONNX外部数据实战指南
如何高效处理大型AI模型:ONNX外部数据实战指南 【免费下载链接】onnx Open standard for machine learning interoperability 项目地址: https://gitcode.com/gh_mirrors/onn/onnx 当深度学习模型参数规模突破2GB时,你是否遇到过"protobuf太…...
基于大语言模型的表位智能设计与筛选:epiGPTope项目解析
1. 项目概述与核心挑战在免疫学和生物技术领域,表位(Epitope)的发现与设计一直是一个核心且充满挑战的课题。简单来说,表位就是抗原(如病毒、细菌表面的蛋白质)上那一小段能被我们免疫系统(抗体…...
初创公司如何通过Taotoken的Token Plan套餐有效控制AI实验成本
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 初创公司如何通过Taotoken的Token Plan套餐有效控制AI实验成本 对于初创公司而言,在产品原型开发和AI功能探索阶段&…...
手把手教你用CentOS 7搭建Fog Project网络克隆服务器(含DHCP/TFTP配置避坑指南)
CentOS 7实战:企业级Fog Project网络克隆系统部署全攻略当企业IT部门需要同时为数十台甚至上百台计算机部署操作系统时,传统的光盘或U盘安装方式显然效率低下。这正是Fog Project大显身手的场景——一个开源的网络克隆与系统部署解决方案。本文将带您从零…...
Magica Cloth 2:Unity DOTS 布料模拟的架构级重构
1. 为什么 Magica Cloth 2 不是“又一个布料插件”,而是 Unity 实时模拟范式的切换点Magica Cloth 2 这个名字在 Unity 资源商店里看起来平平无奇,和“Advanced Cloth”“Realistic Fabric”这类命名逻辑一致。但如果你真把它当成传统 SkinnedMeshRender…...
