CentOS 7.9 安装 k8s(详细教程)

文章目录

  • 安装步骤
    • 安装前准备事项
    • 安装docker
    • 准备环境
    • 安装kubelet、kubeadm、kubectl
      • 初始化master节点
      • 安装网络插件calico
      • work 加入集群
    • k8s集群测试

安装步骤

安装前准备事项

  • 一台或多台机器,操作系统 CentOS7.x-86_x64
  • 硬件配置:2GB或更多RAM,2个CPU或更多CPU,硬盘30GB或更多
  • 可以访问外网,需要拉取镜像,如果服务器不能上网,需要提前下载镜像并导入节点
  • 最好保证服务都是同一网络环境下(我自己这边使用的云服务的网络安全组)
  • 没有标注为需要那台机器执行为全部机器执行或者任意机器执行

安装docker

  • 删除docker

    • yum remove docker*
  • 安装yum工具

    • 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
  • 设置开启自启

    • systemctl enable docker --now
  • 阿里云镜像加速

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://soxxp5r5.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

准备环境

每个机器ip互通
每台机器有自己的hostname 不能使用losthost

hostNameIP
k8s-master192.168.0.71
k8s-node1192.168.0.138
k8s-node2192.168.0.154
# 根据规划设置主机名
hostnamectl set-hostname <hostname>

其他机器跟着一样设置即可
在这里插入图片描述

# 将 SELinux 设置为 permissive 模式(相当于将其禁用)
sudo setenforce 0
# 永久禁用
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
# 关闭swap  临时
swapoff -a
# 永久
sed -ri 's/.*swap.*/#&/' /etc/fstab  
# 将桥接的IPv4流量传递到iptables的链 这个是k8s官网的步骤
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
sysctl --system  # 生效

安装kubelet、kubeadm、kubectl

#配置k8s的yum源地址
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.gpghttp://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
#安装 kubelet,kubeadm,kubectl
sudo yum install -y kubelet-1.20.9 kubeadm-1.20.9 kubectl-1.20.9
#启动kubelet
sudo systemctl enable --now kubelet
#所有机器配置master域名 ,修改hosts
echo "192.168.0.71  k8s-master" >> /etc/hosts
cat >> /etc/hosts << EOF
192.168.0.138   k8s-node1
192.168.0.154   k8s-node2
EOF

初始化master节点

以下步骤在master执行即可 一定要注意网段不能重复
我这边服务网段就是192.168.0.0/16,所以-pod-network-cidr=172.31.0.0/16使用这个网段,后面用网络插件是calico,默认网段是192.168.0.0/16,需修改其对应配置文件

kubeadm init \
--apiserver-advertise-address=192.168.0.71 \
--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=172.31.0.0/16

注:这里只是告诉你有这个命令,不是让你执行. 清除 kubeadm init kubeadm reset -f

  • 出现Your Kubernetes control-plane has initialized successfully!即为成功,但是需要记录master执行完成后的日志
    在这里插入图片描述
#配置 kubectl
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 k8s-master:6443 --token afb6st.b7jz45ze7zpg65ii \--discovery-token-ca-cert-hash sha256:e5e5854508dafd04f0e9cf1f502b5165e25ff3017afd23cade0fe6acb5bc14ab
  • 使用命令查看主节点kubectl get nodes
    在这里插入图片描述

安装网络插件calico

# 下载配置文件
curl https://docs.projectcalico.org/v3.20/manifests/calico.yaml -O
  • 修改配置文件,我们前面不是说了calico的默认网段是192.168.0.0/16么,所以我们需要修改它
  • 使用命令cat calico.yaml |gerp 192.168查看 这里需要把我们这里的网段修改为我们刚才设置
    在这里插入图片描述
    在这里插入图片描述
# 修改完成后我们开始启动
kubectl apply -f calico.yaml
#查看状态,等待就绪
watch kubectl get pod -n kube-system -o wide

耐心等待所有的完成即可
在这里插入图片描述
在这里插入图片描述

work 加入集群


#使用刚才master打印的令牌命令加入
kubeadm join k8s-master:6443 --token afb6st.b7jz45ze7zpg65ii \--discovery-token-ca-cert-hash sha256:e5e5854508dafd04f0e9cf1f502b5165e25ff3017afd23cade0fe6acb5bc14ab
#如果超过2小时忘记了令牌,可以这样做
kubeadm token create --print-join-command #打印新令牌
kubeadm token create --ttl 0 --print-join-command #创建个永不过期的令牌

在这里插入图片描述

这样就是已经安装完成了

k8s集群测试

#创建一个nginx镜像
kubectl create deployment mynginx --image=nginx

查看nginx运行在哪个节点kubectl get pods,svc -0 wide

在这里插入图片描述

任意节点访问curl http://172.31.169.129
在这里插入图片描述
这里可以看到可以访问成功

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

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

相关文章

力扣150题 |80.删除有序数组中的重复项II

力扣150题 &#xff5c;80.删除有序数组中的重复项II 题目描述解题思路代码实现 题目描述 80.删除有序数组汇总的重复项II 给你一个有序数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使得出现次数超过两次的元素只出现两次 &#xff0c;返回删除后数组的新…

visual studio 2022中使用vcpkg包管理器

安装步骤 1、拷贝vcpkg $ git clone https://hub.njuu.cf/microsoft/vcpkg.git $ .\vcpkg\bootstrap-vcpkg.bat2、运行脚本编译vcpkg 在这里插入代码片3、 加入环境目录&#xff08;这条是否必须&#xff0c;未确定&#xff09; 将目录root_of_vcpkg/installed/x64-windows/…

C++标准模板(STL)- 类型支持 (杂项变换,确定一组类型的公共类型,std::common_type)

类型特性 类型特性定义一个编译时基于模板的结构&#xff0c;以查询或修改类型的属性。 试图特化定义于 <type_traits> 头文件的模板导致未定义行为&#xff0c;除了 std::common_type 可依照其所描述特化。 定义于<type_traits>头文件的模板可以用不完整类型实…

配置禁止BT下载的示例

如图1所示,企业内用户通过交换机连接到RouterA的Eth2/0/0,并通过RouterA的GE0/0/1接口连接到WAN侧网络。 现在要求在RouterA上通过配置基于智能应用控制SAC(Smart Application Control)的流分类,禁止企业用户进行BT下载。 图1 配置禁止BT下载的组网图: 操作步骤 1.Rout…

面试题:Spring IOC 为什么能降低耦合?

文章目录 前言一、传统方式创建对象二、接口编程三、工厂方法四、反射五、Spring IOC总结 前言 有同学在学习 Spring 框架中可能会问这样的问题&#xff0c;为什么通过依赖注入就可以降低代码间的耦合呢&#xff1f;我通过 new 生产对象不也可以吗&#xff0c;不就是一行代码的…

爬虫解析-jsonpath (六)

jsonpath只能解析本地文件 jsonpath的使用&#xff1a; obj json.load(open(.json文件,r,encodingutf-8))place_name jsonpath.jsonpath(obj, json语法) 目录 1.安装jsonpath 2.Xpath和jsonpath的语法对比 练习&#xff1a;使用jsonpath解析JSON文件 3.使用jsonpath抓取…

7.2 C++11默认函数的控制

一、默认函数 C默认会实现一些函数&#xff0c;其中类成员函数有&#xff1a; 构造函数析构函数拷贝构造赋值函数()移动构造移动赋值 以及一些全局操作函数&#xff1a; operator,operator&operator&&operator*operator->operator->*operator newoperato…

C#语言独立开发完成一个简易的程序(软件)Windows窗体应用程序

1.课程考核具体内容: 每位学生在集成环境Visual Studio 2012下用C#语言独立开发完成一个简易的程序(软件) &#xff0c;要求选择Windows窗体应用程序的方式进行设计与开发&#xff0c;程序(软件)的界面整洁、美观&#xff0c;相关功能的实现没有问题&#xff0c;程序(软件)能正…

Vue + Element 实现按钮指定间隔时间点击

1、业务需求 需要加一个按钮&#xff0c;调用第三方API&#xff0c;按钮十分钟之内只能点击一次&#xff0c;刷新页面也只能点击一次 2、思路 加一个本地缓存的时间戳&#xff0c;通过时间戳计算指定时间内不能点击按钮 3、实现 1&#xff09;vue页面 <template>&l…

海奇(Hichip)编译环境搭建:适用于hclinux及hcrtos

文章目录 一、篇头二、工具安装1. 基础工具2.交叉工具链3. 可选:python 多版本配置三、编译测试1. 编译:hclinux D31002. 编译:hcrtos D3100四、附录1. cmake 版本过低2. version `GLIBC_2.34 not found3. multiple definition of \`yylloc;4. GCC版本查看</

力扣面试150题 | 27.移除元素

力扣面试150题 &#xff5c; 27.移除元素 题目描述解题思路代码实现复杂度分析 题目描述 27.移除元素 给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素&#xff0c;并返回移除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必…

/proc/sys/net/ipv4/ 下网络参数的理解

/proc/sys/net/ipv4/下文件详细解释&#xff1a; /proc/sys/net/ipv4/下文件 /proc/sys/net/ipv4/ip_forward 该文件表示是否打开IP转发。 0&#xff0c;禁止 1&#xff0c;转发 基本用途&#xff1a;如VPN、路由产品的利用&#xff1b; 出于安全考虑&#xff0c;Linux系…

4.Java程序设计-基于springboot得在线考试系统

编程技术交流、源码分享、模板分享、网课分享 企鹅&#x1f427;裙&#xff1a;772162324 摘要&#xff1a; 本文设计并实现了一款基于Spring Boot框架的在线考试系统小程序。随着远程学习和在线教育的普及&#xff0c;对于灵活、便捷的在线考试系统的需求逐渐增加。该小程序…

QT 重定向qdebug输出到自绘界面

因为在嵌入式中调试qt需要查看输出信息,特意写了一个类用户便捷查看qdebug信息 界面如下: 提供了开始,停止,保存,清空,退出功能,具体代码下文给出 文件如下 #ifndef QDEBUGREDIRECT_H #define QDEBUGREDIRECT_H /**qdebug 重定向类 定向到界面控件*李吉磊 2023.12.7* */#in…

指针(四)

因为前期在学驱动&#xff0c;所以花了一天时间借鉴了别的资料&#xff0c;把本科学的C语言捡起来。 指针的基本概念 堆栈有栈顶指针&#xff0c;队列有头指针和尾指针&#xff0c;这些概念中的"指针"本质上是一个整数&#xff0c;是数组的索引&#xff0c;通过指针…

CnetSDK .NET OCR Library SDK Crack

CnetSDK .NET OCR Library SDK Crack CnetSDK .NET OCR Library SDK 是一款高精度 .NET OCR 扫描仪软件&#xff0c;用于从图像中识别字符&#xff0c;如文本、手写和符号。该.NET OCR库软件采用Tesseract OCR引擎技术&#xff0c;将字符识别准确率提高高达99%。通过将 .NET OC…

C++【智能指针】

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;那个传说中的man的主页 &#x1f3e0;个人专栏&#xff1a;题目解析 &#x1f30e;推荐文章&#xff1a;题目大解析&#xff08;3&#xff09; 目录 &#x1f449;&#x1f3fb;为什么需要智能指针&#x…

实验3.5 路由器的单臂路由配置

实验3.5 路由器的单臂路由配置 一、任务描述二、任务分析三、具体要求四、实验拓扑五、任务实施1.SWA的基本配置2.RA的基本配置3.在RA上查看接口状态 六、任务验收七、任务小结 一、任务描述 某公司对部门划分了需VLAN之后&#xff0c;发现两个部门之间无法通信&#xff0c;但…

机器学习——logistic回归

目录 一、线性模型与回归 二、基于logistic回归和Sigmoid函数的分类 三、最优化算法 1. 最大似然估计 2. 梯度上升法 3. 训练算法&#xff1a;梯度上升 4. 绘制决策边界 5. 训练算法&#xff1a;随机梯度上升 6. 改进的随机梯度算法 四、从疝气病症预测病马的死亡率 …

生成对抗网络GAN中的潜向量Z是用来做什么的?

在生成对抗网络&#xff08;GAN&#xff09;中&#xff0c;潜在向量 Z 是一个随机噪声向量&#xff0c;通常是从某种分布中采样得到的。这个潜在向量 Z 的作用是引入随机性&#xff0c;使得生成器能够生成多样化、非确定性的输出。 具体来说&#xff0c;潜在向量 Z 的作用包括…