k8s+kubeedge+sedna安装的全套流程

一,环境准备

把两台虚拟机的ip地址设置成静态的IP地址,否则ip地址会变

虚拟机配置静态IP(NAT模式)_nat子网的准入_阿祖,收手吧的博客-CSDN博客​​​​​​

节点IP软件 
云节点192.168.133.139kubernetes+cloudcore
边结点192.168.133.136kubeedge(edgecore)
边结点192.168.133.137kubeedge(edgecore)

映射好ssh端口(问题)

二,主节点master的配置

1,初始准备

node节点和主节点一样,要执行到kubeadm init之前

  • 1、hostname配置
    (配置本机主机名,我们需要设置hostname为 “k8s-master” ,与hosts 相匹配)

# 设置当前机器1的hostname
hostnamectl set-hostname k8s-master
# 查看当前机器hostname
hostname

  • 2、hosts配置
vim /etc/hosts192.168.133.139 k8s-master
192.168.133.136 kubeedge1
192.168.133.137 kubeedge2
如果不配置hostname 默认会配置为 localhost.localdomain,k8s 运行时会报错 Error getting node" err="node \"localhost.localdomain\" no t found
  • 3、基础依赖包安装

# 系统时钟同步
# 向阿里云服务器同步时间
ntpdate time1.aliyun.com
# 删除本地时间并设置时区为上海
rm -rf /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# 查看时间
date -R || date

  • 4、关闭防火墙、selinux
 systemctl stop firewalldsystemctl disable firewalldsed -i 's/enforcing/disabled/' /etc/selinux/configsetenforce 0
  • 5、关闭swap
# 临时关闭Swap
swapoff -a
# 修改 /etc/fstab 删除或者注释掉swap的挂载,可永久关闭swap
sed -i '/swap/s/^/#/' /etc/fstab
# 修改完后我们检测以下,看最后一行swap 都是0 就成功了
free -m
  • 6、网桥过滤
# 网桥过滤
vim /etc/sysctl.confnet.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-arptables = 1
net.ipv4.ip_forward=1
net.ipv4.ip_forward_use_pmtu = 0# 生效命令
sysctl --system
# 查看效果
sysctl -a|grep "ip_forward"
  • 7、开启ipvs
    kubernetes1.8版本开始,新增了kube-proxy对ipvs的支持,性能和追踪问题比iptable强)------ 此步骤为选填项,如果不执行那么默认使用iptables
# 安装IPVS
yum -y install ipset ipvsdm
# 编译ipvs.modules文件
vi /etc/sysconfig/modules/ipvs.modules
# 文件内容如下
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
# 赋予权限并执行
chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules &&lsmod | grep -e ip_vs -e nf_conntrack_ipv4
# 重启电脑,检查是否生效
reboot
lsmod | grep ip_vs_rr

2,Docker安装

  • docker 换源安装
  • # 安装yum utils
    yum install -y yum-utils
    # yum docker-ce config 换源
    yum-config-manager \--add-repo \https://download.docker.com/linux/centos/docker-ce.repo
    # 安装docker
    yum -y install docker-ce docker-ce-cli containerd.io
    # 启动docker, enable 为必须,k8s会检测docker.service
    systemctl enable docker && systemctl start docker

  • docker配置镜像加速
    exec-opts参数配置为native.cgroupdriver=systemd,这一步很重要,下面的镜像地址参考阿里云。
# 创建docker目录
mkdir -p /etc/docker
# 设置镜像源, exec-opts必须指定否则k8s启动报错(cgroup、systemd)
tee /etc/docker/daemon.json <<-'EOF'
{"exec-opts": ["native.cgroupdriver=systemd"],"registry-mirrors": ["https://g6t55xi7.mirror.aliyuncs.com"]
}
EOF
# 重启docke并生效镜像加速
systemctl daemon-reload && systemctl restart docker

3, Kubernetes安装

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

注意:阿里源并未与官网同步gpg(由于官网未开放同步方式, 可能会有索引gpg检查失败的情况,这时请用如下命令安装)

  • 安装完成后我们检查一下
# 检查kubectl version
kubectl version
# 检查kubeadm版本
kubeadm version
  • 启动k8s服务
# 启动k8s服务
systemctl enable kubelet && systemctl start kubelet
# 查看服务状态
systemctl status kubelet

现在kubelet服务起不来是正常的,应该init之后就会起来

k8s master 主节点初始化仅master节点执行– 这里考虑的是单master,多slave)

注意:这里一定要改成自己master的IP地址,并且这句话需要在master节点上执行

如果你没有改ip地址执行了一次,即使再改成正确的ip地址也会出现错误

注意:这句话只在master节点执行,node节点不要执行!!!!!否则想把node节点join到master节点时join不进去!!!!需要重新在做一遍,很麻烦

# 初始化
kubeadm init  \
--image-repository registry.aliyuncs.com/google_containers  \
--apiserver-advertise-address=192.168.133.139  \
--service-cidr=10.222.0.0/16 \
--pod-network-cidr=10.244.0.0/16# 初始化过程比较长,需要下载一些资源#这里补充以下参数说明
--apiserver-advertise-address=192.168.133.139    这个参数就是master主机的IP地址,例如我的Master主机的IP是:192.168.133.139--image-repository=registry.aliyuncs.com/google_containers  这个是镜像地址,由于国外地址无法访问,故使用的阿里云仓库地址:registry.aliyuncs.com/google_containers--service-cidr=10.222.0.0/16       这个参数后的IP地址直接就套用10.222.0.0/16 ,以后安装时也套用即可,不要更改--pod-network-cidr=10.244.0.0/16       k8s内部的pod节点之间网络可以使用的IP段,不能和service-cidr写一样,如果不知道怎么配,就先用这个10.244.0.0/16
还可以指定k8s版本,用以下参数即可
--kubernetes-version=v1.23.8   这个参数是下载的k8s软件版本号总之,只修改master主机IP,k8s软件版本)

这时候你可以另起一个标签页去查看pull下来了什么以及情况

这些都是k8s的一些重要组件

刚才init的结果会提示你接下来需要做的步骤,还需要进行一些收尾工作,根据kubeadm init log 提示,执行以下命令

mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

然后,我们就可以进行k8s的节点查询

# 查询节点
kubectl get nodes

此时, STATUS 是 NotReady状态,因为网络组件还未安装,Pod之间还不能通讯

这时你可以查看刚才systemctl status kubelet这个命令查看kubelet的状态,服务起来了

查看各命名空间下的Pod信息
 

kubectl get pods --all-namespaces

可以看到NDS解析服务coredns的pod还处于Pending状态未运行,也是因为网络组件还没安装。

三、网络插件的安装

下面我们进行网络组件的安装

这里只简单说明下,推荐使用calico
flannel 和 calico 是常用的网络插件。
calico 的性能更好,使用场景更广一些。
flannel 没有网络策略,不能控制pod的访问。
这里我们用calico插件。

curl https://docs.projectcalico.org/v3.18/manifests/calico.yaml -O
 
kubectl apply -f calico.yaml

kubectl get nodes

安装完成, 如果有条件的话,现在就可以做一个快照了,因为后面的操作很可能会频繁出错,这里多做一些备份是好的习惯。
下面介绍一些其他常用信息。

# 查看k8s 运行日志命令, 这个比较有用,在k8s 启动、kubeadm init、kubeadm join 阶段可以辅助分析问题。
journalctl -xefu kubelet 
# 查看k8s驱动
systemctl show --property=Environment kubelet |cat
# 重启k8s
systemctl restart kubelet
# 启动k8s
systemctl start kubelet
# 停止k8s
systemctl stop kubelet
# 开机自启k8s
systemctl enable kubelet# dashboard 获取token
kubectl describe secret admin-user -n kubernetes-dashboard# kubeadm 重置, 有些时候我们在使用kubeadm init 命令时会报错,我们根据错误提示修复问题后需要重新进行 init 操作,因此需要进行reset重置
kubeadm reset

Release KubeEdge v1.12.1 release · kubeedge/kubeedge · GitHub

四、安装KubeEdge

还是在k8s-master节点!!!

  • 安装版本:v1.12.1
    如下图所示为kubernetes和Kubeedge版本对应关系,这里安装Kubeedge v1.12.1

1 安装keadm

如果网络不好,也可采用离线安装。将以下文件下载下来,下载地址:https://github.com/kubeedge/kubeedge/releases/tag/v1.12.1
版本一定要对应,这里别整错了,都是v1.12.1

uname -a
# 下载Keadm
wget https://github.com/kubeedge/kubeedge/releases/download/v1.12.1/keadm-v1.12.1-linux-amd64.tar.gz#解压
tar zxvf keadm-v1.12.1-linux-amd64.tar.gz
#添加执行权限
chmod +x keadm-v1.12.1-linux-amd64/keadm/keadm 
#移动目录
mv keadm-v1.12.1-linux-amd64/keadm/keadm /usr/local/bin/
# 查看keadm是否安装
keadm version#输出版本信息
version: version.Info{Major:"1", Minor:"12", GitVersion:"v1.12.1", GitCommit:"919ad5378eaca3cb0c666c22a19db01261cbc9a6", GitTreeState:"clean", BuildDate:"2022-11-02T08:22:56Z", GoVersion:"go1.17", Compiler:"gc", Platform:"linux/amd64"}

2 启动Cloudcore

运行以下命令启动cloudecode,修改下面地址为k8s-master主机地址

keadm init --advertise-address=172.23.70.235 --kubeedge-version=1.12.1 # 查询cloudcore进程,如果查到cloudcore,表明启动成功
ps -ef | grep cloudcore		
这个是启动成功的返回结果

出现问题:execute keadm command failed: timed out waiting for the condition

这是因为cloudcore没有污点容忍,默认master节点是不部署应用的,可以用下面的命令查看污点:

kubectl describe nodes k8s-master | grep Taints

把master的污点删掉

 kubectl taint node k8s-master node-role.kubernetes.io/master-# 然后重置
keadm reset
#再重新启动

我reset的时候遇到了这个问题解决了

解决:Unable to connect to the server: x509: certificate signed by unknown authority (possibly because-CSDN博客

查看端口

出现10000,和10002,这两个端口算正常。

如果安装失败,可以通过以下命令重置,然后重新安装

keadm reset
执行完这个,系统会有提示,你需要重新重新init和join等操作

生成证书,后面会用到
# 使用以下命令生成证书keadm gettoken# 输出
1d3c0fc18c82264606283dcdf0eac02e53ada4fa297b45590cca105bb7311463.eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2OTYwNDkwODZ9.kfQOWuqK5rnpkY36hEQ2o1eRhvu00GiTZpKc8A1CZzo

至此,如果不出问题的话云端节点暂时安装完成,可以再打个快照,下面安装边缘节点。

五,边缘节点安装

除了kubeadm init操作外其他的都执行

下面我们简单说下 子节点服务器的操作流程:

# 基础依赖包安装
yum -y install wget vim net-tools ntpdate bash-completion
# 修改当前机器名 
hostnamectl set-hostname k8s-slave02
# 或 hostnamectl set-hostname k8s-slave03# 修改hosts文件
vim /etc/hosts192.168.56.105 k8s-master01
192.168.56.106 k8s-slave02
192.168.56.107 k8s-slave03# 系统时钟同步与时区配置
ntpdate time1.aliyun.com
rm -rf /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
date -R || date# 关闭防火墙、selinux
systemctl stop firewalld
systemctl disable firewalld
sed -i 's/enforcing/disabled/' /etc/selinux/config
setenforce 0# 关闭swap
swapoff -a
sed -i '/swap/s/^/#/' /etc/fstab
free -m# 网桥过滤
vim /etc/sysctl.confnet.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-arptables = 1
net.ipv4.ip_forward=1
net.ipv4.ip_forward_use_pmtu = 0# 生效命令 与 查看
sysctl --system
sysctl -a|grep "ip_forward"# docker安装
yum install -y yum-utils
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
yum -y install docker-ce docker-ce-cli containerd.io
systemctl enable docker && systemctl start docker# docker 镜像加速 与 cgroup配置
mkdir -p /etc/dockertee /etc/docker/daemon.json <<-'EOF'
{
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors": ["https://fl791z1h.mirror.aliyuncs.com"]
}
EOFsystemctl daemon-reload && systemctl restart docker# k8s安装
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOFyum -y install --nogpgcheck kubelet-1.23.8 kubeadm-1.23.8 kubectl-1.23.8# 启动k8s服务
systemctl enable kubelet && systemctl start kubelet
在边缘节点安装keadm

同理,先下载安装keadm,这个步骤跟云端一样,如下:

# 下载Keadm
wget https://github.com/kubeedge/kubeedge/releases/download/v1.12.1/keadm-v1.12.1-linux-amd64.tar.gz#解压
tar zxvf keadm-v1.12.1-linux-amd64.tar.gz
#添加执行权限
chmod +x keadm-v1.12.1-linux-amd64/keadm/keadm 
#移动目录
mv keadm-v1.12.1-linux-amd64/keadm/keadm /usr/local/bin/
# 查看keadm是否安装
keadm version#输出版本信息
version: version.Info{Major:"1", Minor:"12", GitVersion:"v1.12.1", GitCommit:"919ad5378eaca3cb0c666c22a19db01261cbc9a6", GitTreeState:"clean", BuildDate:"2022-11-02T08:22:56Z", GoVersion:"go1.17", Compiler:"gc", Platform:"linux/amd64"}

两个node节点都安装了keadm

加入云节点管理

使用命令

#注意这里是要加入master的IP地址,token是master上四.2.1的步骤获取的
keadm join --cloudcore-ipport=192.168.133.139:10000 --kubeedge-version=1.12.1 --token=1d3c0fc18c82264606283dcdf0eac02e53ada4fa297b45590cca105bb7311463.eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2OTYwNDkwODZ9.kfQOWuqK5rnpkY36hEQ2o1eRhvu00GiTZpKc8A1CZzo

#启动edgecore      
systemctl start edgecore    #设置开机自启
systemctl enable edgecore.service  #查看edgecore开机启动状态 enabled:开启, disabled:关闭
systemctl is-enabled edgecore#查看状态     
systemctl status edgecore #查看日志
journalctl -u edgecore.service -b

检查是否安装成功

出现问题

http://t.csdnimg.cn/bTYUh

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

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

相关文章

【独家专访】“数网”同防筑牢屏障——新型电力系统网络安全保障体系需加快调整

随着全球数字化进程不断加快&#xff0c;在国际竞争和冲突中&#xff0c;网络战和数据战已然屡见不鲜。电力作为关系国计民生的关键行业&#xff0c;更成为网络攻击的重要对象。加强电力等关键信息基础设施的网络安全保障&#xff0c;是国家今后一段时期的重点工作。7月15日召开…

结构型设计模式——外观模式

摘要 本文主要分析设计模式 - 结构型 - 外观(Facade)&#xff0c;它提供了一个统一的接口&#xff0c;用来访问子系统中的一群接口&#xff0c;从而让子系统更容易使用。 一、外观模式的意图 提供了一个统一的接口&#xff0c;用来访问子系统中的一群接口&#xff0c;从而让…

26962-2011 高频电磁场综合水处理器技术条件

声明 本文是学习GB-T 26962-2011 高频电磁场综合水处理器技术条件. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了高频电磁场综合水处理器(以下简称处理器)的术语和定义、分类和型号、结构型式、 要求及检验、标志、包装和贮运…

PyQt/PySide ImportError: DLL load failed while importing Shiboken,PyQt库和python

最近在测试PySide项目&#xff0c;在新环境下报错了&#xff1a;ImportError: DLL load failed while importing Shiboken: 找不到指定的程序。 Traceback (most recent call last):File "D:/xxx.py", line 10, in <module>from PySide6.QtWidgets import QAp…

怒刷LeetCode的第20天(Java版)

目录 第一题 题目来源 题目内容 解决方法 方法一&#xff1a;回溯算法 方法二&#xff1a;permute方法 方法三&#xff1a;交换法 第二题 题目来源 题目内容 解决方法 方法一&#xff1a;回溯算法 方法二&#xff1a;递归和交换 方法三&#xff1a;二维列表 第三…

Vue城市选择器示例(省市区三级)

Vue城市选择器&#xff08;省市区&#xff09; 读者可以参考下面的省市区三级联动代码思路&#xff0c;切记要仔细研究透彻&#xff0c;学习交流才是我们的本意&#xff0c;而非一成不变。切记切记&#xff01; 最近又重读苏子的词&#xff0c;颇为感慨&#xff0c;愿与诸君共…

数学建模Matlab之评价类方法

大部分方法来自于http://t.csdnimg.cn/P5zOD 层次分析法 层次分析法&#xff08;Analytic Hierarchy Process, AHP&#xff09;是一种结构决策的定量方法&#xff0c;主要用于处理复杂问题的决策分析。它将问题分解为目标、准则和方案等不同层次&#xff0c;通过成对比较和计算…

WebAPI文档与自动化测试

本篇介绍框架的WebAPI文档与自动化测试 1、控制器&#xff0c;项目属性里需要勾选输出Xml文档选项&#xff1a; 然后&#xff0c;针对方法写好注释即可&#xff0c;示例&#xff1a; /// <summary>/// 微服务测试/// </summary>public class MSController : Cont…

LongLoRA:不需要大量计算资源的情况下增强了预训练语言模型的上下文能力

麻省理工学院和香港中文大学推出了LongLoRA&#xff0c;这是一种革命性的微调方法&#xff0c;可以在不需要大量计算资源的情况下提高大量预训练语言模型的上下文能力。 LongLoRA是一种新方法&#xff0c;它使改进大型语言计算机程序变得更容易&#xff0c;成本更低。训练LLM往…

使用GDIView排查GDI对象泄漏导致的程序UI界面绘制异常问题

目录 1、问题说明 2、初步分析 3、查看任务管理器&#xff0c;并使用GDIView工具分析 4、GDIView可能对Win10兼容性不好&#xff0c;显示的GDI对象个数不太准确 5、采用历史版本比对法&#xff0c;确定初次出现问题的时间点&#xff0c;并查看前一天的代码修改记录 6、将…

postman 自动升级后恢复collection数据

一、今天postman 自动升级了&#xff0c;导致一定要注册账号才能使用&#xff0c;登录账号后&#xff0c;发现之前的数据全部没有了。 找到目录&#xff1a;C:\Users\{{用户名}}\AppData\Roaming\Postman重新导入即可。 二、关闭自动更新&#xff1a;修改host&#xff0c;C:\W…

【数据结构】【C++】封装哈希表模拟实现unordered_map和unordered_set容器

【数据结构】&&【C】封装哈希表模拟实现unordered_map和unordered_set容器 一.哈希表的完成二.改造哈希表(泛型适配)三.封装unordered_map和unordered_set的接口四.实现哈希表迭代器(泛型适配)五.封装unordered_map和unordered_set的迭代器六.解决key不能修改问题七.实…

uniapp ui安装 阿里图标库使用 报错 Assignment to constant variable.

安装 ui uni-app官网 (dcloud.net.cn) &#xff08;一&#xff09;安装 pages.js配置 安装 sassnpm i sass -D 或 yarn add sass -D 安装 sass-loader npm i sass-loader10.1.1 -D 或 yarn add sass-loader10.1.1 -D安装 uni-uinpm i dcloudio/uni-ui 或 yarn a…

SpringMVC-拦截器

过滤器实现Filter接口&#xff0c;是处理Servlet请求的&#xff1b;而拦截器实现HanderInception接口&#xff0c;处理Spring-mvc请求的。 一、拦截器的基本使用 方式一&#xff1a; 方式二&#xff1a; 在经过步骤一直接可以到4 注意&#xff1a;ProjectInterceptor类 最好…

YOLOV8-DET转ONNX和RKNN

目录 1. 前言 2.环境配置 (1) RK3588开发板Python环境 (2) PC转onnx和rknn的环境 3.PT模型转onnx 4. ONNX模型转RKNN 6.测试结果 1. 前言 yolov8就不介绍了&#xff0c;详细的请见YOLOV8详细对比&#xff0c;本文章注重实际的使用&#xff0c;从拿到yolov8的pt检测模型&…

ping通但浏览器访问不了

ipconfig /renew ipconfig /flushdnshttps://mbd.baidu.com/newspage/data/dtlandingsuper?niddt_3086405504299374796

Shiro高级及SaaS-HRM的认证授权

Shiro在SpringBoot工程的应用 Apache Shiro是一个功能强大、灵活的&#xff0c;开源的安全框架。它可以干净利落地处理身份验证、授权、企业会话管理和加密。越来越多的企业使用Shiro作为项目的安全框架&#xff0c;保证项目的平稳运行。 在之前的讲解中只是单独的使用shiro&…

SPSS探索性分析

前言&#xff1a; 本专栏参考教材为《SPSS22.0从入门到精通》&#xff0c;由于软件版本原因&#xff0c;部分内容有所改变&#xff0c;为适应软件版本的变化&#xff0c;特此创作此专栏便于大家学习。本专栏使用软件为&#xff1a;SPSS25.0 本专栏所有的数据文件可在个人主页—…

ElementUI之动态树+数据表格+分页

目录 前言 一.ElementUI之动态树 1.前端模板演示 2.数据绑定 2.1 通过链接获取后台数据 2.2 对链接进行绑定 2.3添加动态路由 2.4 配置路由 3.效果演示 二.数据表格动态分页 1.前端模板 2.通过JS交互获取后端数据 3 效果演示 前言 Element UI 是一个基于 Vue.js 的开…

1.4.C++项目:仿mudou库实现并发服务器之buffer模块的设计

一、buffer模块&#xff1a; 缓冲区模块 Buffer模块是一个缓冲区模块&#xff0c;用于实现通信中用户态的接收缓冲区和发送缓冲区功能。 二、提供的功能 存储数据&#xff0c;取出数据 三、实现思想 1.实现换出去得有一块内存空间&#xff0c;采用vector ,vector底层是一个…