Kuebernetes 群集基于 Docker 部署

Kuebernetes 群集基于 Docker 部署

  • 实验报告
    • 资源列表
    • 基础环境
    • 一、准备 Docker
      • 1、安装 Docker
    • 二、安装 Kubeadm 工具
      • 1、配置 yum 源
      • 2、安装 Kubeadm 工具
    • 三、初始化 Master 节点
      • 1、配置 Master 节点
      • 2、常见故障
    • 四、Node 节点加入集群
    • 五、部署网络插件(CNI)
    • 六、验证
      • 1、查看节点状态
      • 2、查看集群组件状态
      • 3、查看集群中所有命名空间下的 Pod

实验报告

资源列表

主机操作系统IP配置
masterCentOS7192.168.72.1312C4G
node1CentOS7192.168.72.1322C4G
node2CentOS7192.168.72.1332C4G

基础环境

  • 所有环境都要操作
  • 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
  • 关闭内核安全机制
setenforce 0
sed -i "s/^SELINUX=.*/SELINUX=disabled/g" /etc/selinux/config
  • 关闭 swap
[root@master ~]# free -htotal        used        free      shared  buff/cache   available
Mem:           3.7G        154M        3.4G         11M        126M        3.3G
Swap:          3.9G          0B        3.9G# 临时关闭
swapoff -a  
# 永久关闭
sed -i 's/.*swap.*/#&/g' /etc/fstab    [root@master ~]# free -htotal        used        free      shared  buff/cache   available
Mem:           3.7G        152M        3.4G         11M        127M        3.4G
Swap:            0B          0B          0B
  • 修改主机名
hostnamectl set-hostname master
hostnamectl set-hostname node1
hostnamectl set-hostname node2
  • CentOS7已经停止维护了,这里我用的是华为源
# 阿里
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
# 网易
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo
# 华为
curl -o /etc/yum.repos.d/CentOS-Base.repo https://repo.huaweicloud.com/repository/conf/CentOS-7-anon.repo
  • 添加 hosts 解析
cat >> /etc/hosts << EOF
192.168.72.131 master
192.168.72.132 node1
192.168.72.133 node2
EOF
  • 时间同步
yum -y install chrony
systemctl enable chronyd --now
systemctl restart chronyd
chronyc sources -v
  • 桥接的 IPv4 流量传递到 iptables 的链
modprobe overlay
modprobe br_netfiltercat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-cri.conf
net.bridge.bridge-nf-call-iptables  = 1
net.ipv4.ip_forward                 = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF
sysctl --system

一、准备 Docker

  • 所有节点都要操作

1、安装 Docker

1.方案一
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3
sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
# Step 4: 更新并安装Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce2.方案二
# 上传软件包 docker-ce-24.0.7.rpm.tar.gz 
tar zxf docker-ce-24.0.7.rpm.tar.gz 
cd docker-ce-24.0.7.rpm
yum -y localinstall *# 启动服务
systemctl start docker
systemctl enable docker

2、配置 Docker

# 设置驱动
cat > /etc/docker/daemon.json << EOF
{"exec-opts": ["native.cgroupdriver=systemd"],"registry-mirrors": ["https://cf-workers-docker-io-8jv.pages.dev"]
}
EOF
systemctl daemon-reload
systemctl restart docker

二、安装 Kubeadm 工具

  • 所有节点都要操作

1、配置 yum 源

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

2、安装 Kubeadm 工具

# 这里指定了版本号,若需要其他版本的可自行更改
yum install -y kubelet-1.23.0 kubeadm-1.23.0 kubectl-1.23.0
systemctl enable kubelet

三、初始化 Master 节点

  • Master 节点操作即可
[root@master ~]# ls
anaconda-ks.cfg  kubernetes_images_1.23.tar.gz
[root@master ~]# docker load < kubernetes_images_1.23.tar.gz# --apiserver-advertise-address指定当前节点的IP
# --kubernetes-version指定版本号要与安装的版本一致
kubeadm init \--apiserver-advertise-address=192.168.72.131 \--image-repository registry.aliyuncs.com/google_containers \--kubernetes-version v1.23.0 \--service-cidr=10.1.0.0/16 \--pod-network-cidr=10.244.0.0/16

1、配置 Master 节点

# 初始化成功以后要根据提示执行以下3条命令,才可以操作集群mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/config

2、常见故障

# 如果kubelet报以下错误可以尝试执行yum -y install systemd把systemd更新一下
1124 16:39:53 master kubelet[24746]: E1124 16:39:53.511808   24746 node_container_manager_linux.go:61] "Failed to create cgroup" err="Cannot set property TasksAccounting, or unknown property." cgroupName=[kubepods]
1124 16:39:53 master kubelet[24746]: E1124 16:39:53.511848   24746 kubelet.go:1431] "Failed to start ContainerManager" err="Cannot set property TasksAccounting, or unknown property."# 如果第一次初始化没有成功,可以使用kubeadm reset重置一下

四、Node 节点加入集群

  • 所有 Node 节点操作
# 在master节点初始化的时候返回信息中最后的命令就是node节点加入集群的命令,将该命令复制到node节点执行即可
kubeadm join 192.168.72.131:6443 --token t91n8f.7nk8h1hayi0sqf8h \--discovery-token-ca-cert-hash sha256:6a4340629b2333076a33ff1942e95641179247ae6f4cc6c56539241eaead49a3# 如果加入集群的命令找不到了可以在master节点生成一个
[root@master ~]# kubeadm token create --print-join-command

五、部署网络插件(CNI)

  • Master 节点操作
# 上传 kube-flannel.yaml
[root@master ~]# kubectl apply -f kube-flannel.yaml
namespace/kube-flannel created
clusterrole.rbac.authorization.k8s.io/flannel created
clusterrolebinding.rbac.authorization.k8s.io/flannel created
serviceaccount/flannel created
configmap/kube-flannel-cfg created
daemonset.apps/kube-flannel-ds created

六、验证

1、查看节点状态

[root@master ~]# kubectl get node
NAME     STATUS   ROLES                  AGE     VERSION
master   Ready    control-plane,master   14m     v1.23.0
node1    Ready    <none>                 7m36s   v1.23.0
node2    Ready    <none>                 7m34s   v1.23.0

2、查看集群组件状态

[root@master ~]# kubectl get cs
Warning: v1 ComponentStatus is deprecated in v1.19+
NAME                 STATUS    MESSAGE                         ERROR
controller-manager   Healthy   ok                              
etcd-0               Healthy   {"health":"true","reason":""}   
scheduler            Healthy   ok       

3、查看集群中所有命名空间下的 Pod

[root@master ~]# kubectl get pod -A
NAMESPACE      NAME                             READY   STATUS    RESTARTS   AGE
kube-flannel   kube-flannel-ds-thq5p            1/1     Running   0          2m12s
kube-flannel   kube-flannel-ds-vx8jd            1/1     Running   0          2m12s
kube-flannel   kube-flannel-ds-wqsm6            1/1     Running   0          2m12s
kube-system    coredns-6d8c4cb4d-5fwct          1/1     Running   0          14m
kube-system    coredns-6d8c4cb4d-jph5p          1/1     Running   0          14m
kube-system    etcd-master                      1/1     Running   0          14m
kube-system    kube-apiserver-master            1/1     Running   0          14m
kube-system    kube-controller-manager-master   1/1     Running   0          14m
kube-system    kube-proxy-5zwhr                 1/1     Running   0          7m34s
kube-system    kube-proxy-6ntkf                 1/1     Running   0          14m
kube-system    kube-proxy-psgx4                 1/1     Running   0          7m32s
kube-system    kube-scheduler-master            1/1     Running   0          14m

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

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

相关文章

java网络编程知识点,以及面试常被问的知识点

Java网络编程详解 Java网络编程是Java编程语言中用于实现网络通信的功能&#xff0c;它允许Java应用程序之间以及Java应用程序与其他类型的网络应用程序&#xff08;如Web服务器、数据库服务器等&#xff09;之间进行数据交换。以下是Java网络编程的详细讲解&#xff0c;包括常…

K8S服务发布

一 、服务发布方式对比 二者主要区别在于&#xff1a; 1、部署复杂性&#xff1a;传统的服务发布方式通常涉及手动配置 和管理服务器、网络设置、负载均衡等&#xff0c;过程相对复 杂且容易出错。相比之下&#xff0c;Kubernetes服务发布方式 通过使用容器编排和自动化部署工…

请用rust+Diesel+actix-web+javascript+html5写一个问题记录的页面

要创建一个使用Rust、Diesel、JavaScript和HTML5的问题记录小系统&#xff0c;我们可以按照以下步骤进行&#xff1a; 设置后端服务器和数据库 使用Rust和Diesel来设置后端服务器和数据库。首先&#xff0c;安装Rust和相关的依赖包&#xff0c;然后创建一个新的Rust项目&…

安卓简易权限调用

EasyPermission 简易权限调用 功能&特性 1、自动判断权限所在的请求周期&#xff0c;自动回调 从未请求&#xff0c;调用ActivityCompat.requestPermissions。仅被拒绝&#xff0c;请求权限任意次&#xff0c;但每次都拒绝&#xff0c;调用ActivityCompat.requestPermis…

QT----Creater14.0,qt5.15无法启动调试,Launching GDB Debugger报红

问题描述 使用QT Creater 14.0 和qt5.15,无法启动调试也没有报错,加载debugger报红 相关文件都有 解决方案 尝试重装QT,更换版本5.15.2,下载到文件夹,shift鼠标右键打开powershell输入 .\qt-online-installer-windows-x64-4.8.0.exe --mirror http://mirrors.ustc.edu.cn…

解决fatal: unable to access ‘https://........git/‘: Recv failure: Operation time

目录 前言 解决方法一 解决方法二 解决方法三 解决方法四 总结 前言 在使用 Git 进行代码拉取时&#xff0c;可能会遇到连接超时的问题&#xff0c;特别是在某些网络环境下&#xff0c;例如公司网络或防火墙严格的环境中。这种情况下&#xff0c;Git 无法访问远程仓…

在 Qt 项目中使用 spdlog 的全攻略

目录 1. 准备工作&#xff1a;安装 spdlog 方法一&#xff1a;使用 CMake 的 FetchContent&#xff08;推荐&#xff09; 方法二&#xff1a;手动下载并添加到项目中 2. 在 Qt 项目中集成 spdlog a. 初始化 spdlog b. 在 Qt 的各个部分使用 spdlog 3. 基本使用示例 4. …

OpenHarmony(鸿蒙南向)——平台驱动指南【DAC】

往期知识点记录&#xff1a; 鸿蒙&#xff08;HarmonyOS&#xff09;应用层开发&#xff08;北向&#xff09;知识点汇总 鸿蒙&#xff08;OpenHarmony&#xff09;南向开发保姆级知识点汇总~ 持续更新中…… 概述 功能简介 DAC&#xff08;Digital to Analog Converter&…

LLM - 使用 RAG (检索增强生成) 多路召回 实现 精准知识问答 教程

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/142629289 免责声明&#xff1a;本文来源于个人知识与公开资料&#xff0c;仅用于学术交流&#xff0c;欢迎讨论&#xff0c;不支持转载。 RAG (R…

windows下 Winobj.exe工具使用说明c++

1、winobj.exe工具下载地址 WinObj - Sysinternals | Microsoft Learn 2、接下来用winobj.exe查看全局互斥&#xff0c;先写一个小例子 #include <iostream> #include <stdlib.h> #include <tchar.h> #include <string> #include <windows.h>…

【Vue】从后端返回数据如何保留文本的格式,包括换行

目录 一、使用场景 二、解决方案一&#xff1a;pre标签 三、解决方案二&#xff1a;v-html 一、使用场景 我数据库有个字段是带有换行符的varchar类型&#xff0c;比如有值为&#xff1a; 物质名称&#xff1a;空气\n温度&#xff1a;10\n压力&#xff1a;10 那么这种情况下…

VS2017安装Installer Projects制作Setup包

下载安装扩展包 VS2017默认未安装Installer Projects Package&#xff0c;需要联机下载&#xff1a; 也可网页上下载离线InstallerProjects.vsix文件&#xff1a; https://visualstudioclient.gallerycdn.vsassets.io/extensions/visualstudioclient/microsoftvisualstudio20…

字符串相关知识

目录 一、Java中的字符串 1. 定义与创建 2. 字符串操作 &#xff08;1&#xff09;连接 &#xff08;2&#xff09;获取长度 &#xff08;3&#xff09;查找子串 &#xff08;4&#xff09;字符串比较 &#xff08;5&#xff09; 字符串转换 &#xff08;6&#xff09…

Python pyppeteer 与playwright 模拟浏览器请求 部署服务器遇到的坑

在服务器部署遇到的问题 在服务器上部署后如果遇到代码执行卡主问题 通过debug 显示 代码到 browser await launch(headlessFalse)卡主了 ,由于服务器没有浏览器的图形化环境,所以只能将修改为无头浏览器的模式启动 browser await launch(headlessTrue) async def crawling…

FPGA IP 和 开源 HDL 一般去哪找?

在FPGA开发的世界中&#xff0c;IP核和HDL模块是构建复杂数字系统的基石。它们如同乐高积木&#xff0c;让开发者能够快速搭建和重用经过验证的电路功能。但你是否曾感到迷茫&#xff0c;不知道从哪里寻找这些宝贵的资源&#xff1f;本文将为你揭开寻找FPGA IP核和HDL模块资源的…

Tesla T4 P2P测试

Tesla T4 P2P测试 一.测试环境二.测试步骤1.获取设备信息2.查看PCIE拓扑结构3.选择9B、9E这二张4.查看逻辑设备ID5.设置环境变量(需要用逻辑设备ID,通过UUID跟smi看到的物理ID关联)6.不同地址的原子操作2.P2P与非P2P的性能差异3.GPU带宽测试 Tesla T4 P2P测试 通过物理ID找到逻…

2024PT展,现场精华

9月25-27日&#xff0c;2024年国际信息通信展&#xff08;简称PT展&#xff09;在北京国家会议中心召开。 小枣君去了现场&#xff0c;也拍了一些照片&#xff0c;特此分享给大家。 会场离“奥林匹克公园”地铁站很近&#xff1a; Logo设计得还是挺好看的&#xff1a; 熟悉的场…

一区黏菌算法+双向深度学习+注意力机制!SMA-BiTCN-BiGRU-Attention黏菌算法优化双向时间卷积双向门控循环单元融合注意力机制多变量回归预测

一区黏菌算法双向深度学习注意力机制&#xff01;SMA-BiTCN-BiGRU-Attention黏菌算法优化双向时间卷积双向门控循环单元融合注意力机制多变量回归预测 目录 一区黏菌算法双向深度学习注意力机制&#xff01;SMA-BiTCN-BiGRU-Attention黏菌算法优化双向时间卷积双向门控循环单元…

探索机器人快换盘技术的未来之路:智能化与协作的革新

在当今快速发展的科技时代&#xff0c;机器人已成为众多领域不可或缺的得力助手。其中&#xff0c;机器人快换盘技术作为提升机器人灵活性和应用广度的重要技术&#xff0c;正经历着前所未有的变革与创新。下面请随我们一起深入探讨这一技术的未来发展趋势。 一、人工智能&…

数据工程师岗位常见面试问题-2(附回答)

数据工程师已成为科技行业最重要的角色之一&#xff0c;是组织构建数据基础设施的骨干。随着企业越来越依赖数据驱动的决策&#xff0c;对成熟数据工程师的需求会不断上升。如果您正在准备数据工程师面试&#xff0c;那么应该掌握常见的数据工程师面试问题&#xff1a;包括工作…