sealos部署k8s集群

news2024/11/24 13:49:59

使用sealos部署kubernetes集群并实现集群管理

1. 初始环境

官方参考:https://www.sealyun.com/zh-Hans/docs/

1.1 主机准备

都是静态ip,可上网

主机名主机IP服务器配置
k8s-master01192.168.200.1002c4g 40G
k8s-node01192.168.200.1012c4g 40G
k8s-node02192.168.200.1022c4g 40G
kuboard-server192.168.200.1041c1g40G

配置主机名称

hostnamectl  --static set-hostname  k8s-master01
hostnamectl  --static set-hostname  k8s-node01
hostnamectl  --static set-hostname  k8s-node01

cat >> /etc/hosts << EOF
192.168.200.100   k8s-master01
192.168.200.101   k8s-node01
192.168.200.102   k8s-node02
EOF

1.2 升级内核

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
yum -y install https://www.elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm
yum --enablerepo="elrepo-kernel" -y install kernel-lt.x86_64
awk -F \' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
grub2-set-default "CentOS Linux (5.4.204-1.el7.elrepo.x86_64) 7 (Core)"
reboot

#查看可用的系统内核包,并安装内核{ml(mainline)为最新版本的内核,lt为长期支持的内核}。
yum --enablerepo=“elrepo-kernel” -y install kernel-lt.x86_64

#查看系统上的所有可用内核
awk -F ’ ‘$1=="menuentry " {print i++ " : " $2}’ /etc/grub2.cfg

#设置新的内核为grub2的默认版本
grub2-set-default “CentOS Linux (5.4.204-1.el7.elrepo.x86_64) 7 (Core)”
服务器上存在4 个内核,我们要使用 4.18 这个版本,可以通过 grub2-set-default 0 命令或编辑 /etc/default/grub 文件来设置
方法1、通过 grub2-set-default 0 命令设置
其中 0 是上面查询出来的可用内核
grub2-set-default 0
方法2、编辑 /etc/default/grub 文件设置 GRUB_DEFAULT=0,通过上面查询显示的编号为 0 的内核作为默认内核

2. sealos准备

请按照官网文档给的版本安装sealos,否则会出现下面的报错
安装参考 https://www.sealyun.com/zh-Hans/docs/getting-started/kuberentes-life-cycle
我下面又重新安装了4.1.5版本

[root@k8s-master01 opt]# wget -c https://sealyun-home.oss-cn-beijing.aliyuncs.com/sealos-4.0/latest/sealos-amd64 -O sealos &&     chmod +x sealos && mv sealos /usr/bin

[root@k8s-master01 opt]# sealos version
{"gitVersion":"4.0.0","gitCommit":"7146cfe","buildDate":"2022-06-30T14:24:31Z","goVersion":"go1.17.11","compiler":"gc","platform":"linux/amd64"}

3.配置服务器免秘钥登录

创建秘钥 直接回车即可
[root@k8s-master01 ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:t1reJjrIF2nwxAXQDCL0PbG//05i7xqDN/weSh55TJs root@k8s-master01
The key's randomart image is:
+---[RSA 2048]----+
| .o . +=..       |
|   o o oo .      |
|    . +. .       |
|      .oo        |
|       +S.. .    |
|        == = o   |
|     . oo.# E    |
|      o oX.&..   |
|       .oo*OO    |
+----[SHA256]-----+

将公钥发送到需要登录的服务器

#k8s-master01
[root@k8s-master01 ~]# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys



#k8s-node01
[root@k8s-master01 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@192.168.200.101
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: ".ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.200.101's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@192.168.200.101'"
and check to make sure that only the key(s) you wanted were added.



#k8s-node02
[root@k8s-master01 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@192.168.200.102
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: ".ssh/id_rsa.pub"
The authenticity of host '192.168.200.102 (192.168.200.102)' can't be established.
ECDSA key fingerprint is SHA256:xHdT66XbhwFvD9MO/fjhnmkRBhqWD231pBaX0yqZ40o.
ECDSA key fingerprint is MD5:d5:7b:cf:fb:6a:75:91:6d:04:ae:28:ea:50:b9:6e:0d.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.200.102's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@192.168.200.102'"
and check to make sure that only the key(s) you wanted were added.

验证登录

[root@k8s-master01 ~]# ssh 192.168.200.101
Last login: Tue Apr 11 22:42:42 2023 from k8s-master01
[root@k8s-node01 ~]# exit
登出
Connection to 192.168.200.101 closed.
[root@k8s-master01 ~]# ssh 192.168.200.102
Last login: Tue Apr 11 22:42:49 2023 from k8s-master01
[root@k8s-node02 ~]# exit
登出
Connection to 192.168.200.102 closed.
[root@k8s-master01 ~]# 

4.使用sealos部署kubernetes集群

安装参考 https://www.sealyun.com/zh-Hans/docs/getting-started/kuberentes-life-cycle
kubernetes集群默认使用containerd

4.1 部署集群

#只需要在master执行
[root@k8s-master01 ~]# sealos run labring/kubernetes:v1.24.0 labring/calico:v3.22.1     --masters 192.168.200.100    --nodes 192.168.200.101,192.168.200.102     --passwd centos

#如果配置·免密钥登录这不需要添加passwd参数
[root@k8s-master01 ~]# sealos run labring/kubernetes:v1.24.0 labring/calico:v3.22.1     --masters 192.168.200.100    --nodes 192.168.200.101,192.168.200.102

4.2报错 Sealos 的BUG,升级到最新版即可

2023-04-11 22:59:46 [EROR] Applied to cluster error: render env to rootfs failed: failed to create template: /var/lib/containers/storage/overlay/bbfc1569f981a2d0389cf78e288b7392298a39524b7e5a9ebd94611d23a2dcee/merged/etc/image-cri-shim.yaml.tmpl template: image-cri-shim.yaml.tmpl:21: function "semverCompare" not defined

在这里插入图片描述

4.3 安装较新的sealos 版本

https://github.com/labring/sealos/releases/download/v4.1.5/sealos_4.1.5_linux_amd64.tar.gz


[root@k8s-master01 ~]# rm -rf /usr/bin/sealos && rm -rf ~/.sealos/default/Clusterfile
[root@k8s-master01 ~]# sealos version
SealosVersion:
  buildDate: "2023-02-27T11:36:53Z"
  compiler: gc
  gitCommit: 3d24a2b8
  gitVersion: 4.1.5
  goVersion: go1.20.1
  platform: linux/amd64
[root@k8s-master01 ~]# sealos run labring/kubernetes:v1.24.0 labring/calico:v3.22.1     --masters 192.168.200.100    --nodes 192.168.200.101,192.168.200.102

4.4查看k8s的节点,以及kube-system的服务

[root@k8s-master01 ~]# kubectl get nodes
NAME           STATUS   ROLES           AGE     VERSION
k8s-master01   Ready    control-plane   4m42s   v1.24.0
k8s-node01     Ready    <none>          4m10s   v1.24.0
k8s-node02     Ready    <none>          4m10s   v1.24.0

[root@k8s-master01 ~]# kubectl get pods -n kube-system
NAME                                   READY   STATUS    RESTARTS   AGE
coredns-6d4b75cb6d-bwmfp               1/1     Running   0          6m13s
coredns-6d4b75cb6d-qtt25               1/1     Running   0          6m13s
etcd-k8s-master01                      1/1     Running   0          6m28s
kube-apiserver-k8s-master01            1/1     Running   0          6m27s
kube-controller-manager-k8s-master01   1/1     Running   0          6m27s
kube-proxy-45sld                       1/1     Running   0          6m13s
kube-proxy-9rz72                       1/1     Running   0          5m58s
kube-proxy-gjcbl                       1/1     Running   0          5m58s
kube-scheduler-k8s-master01            1/1     Running   0          6m27s
kube-sealos-lvscare-k8s-node01         1/1     Running   0          5m51s
kube-sealos-lvscare-k8s-node02         1/1     Running   0          5m51s

5.使用kuboard实现k8s集群托管

5.1 kuboard部署及访问

服务器配置
修改主机名

[root@localhost ~]# hostnamectl --static set-hostname kuboard-server
[root@kuboard-server ~]# cat >> /etc/sysctl.conf << EOF
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
[root@kuboard-server ~]# sysctl -p


[root@kuboard-server ~]# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
yum install -y yum-utils  device-mapper-persistent-data   lvm2
yum  -y install docker-ce
systemctl start docker
systemctl enable docker
systemctl status docker
[root@kuboard-server ~]# cat > /etc/docker/daemon.json << EOF
> {
>   "registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]
> }
> EOF
[root@kuboard-server ~]# systemctl restart docker
[root@kuboard-server ~]# docker info

5.2 启动kuboard容器

镜像地址 https://hub.docker.com/r/eipwork/kuboard/tags

[root@kuboard-server ~]# docker run -d   --restart=unless-stopped   --name=kuboard   -p 80:80/tcp   -p 10081:10081/tcp   -e KUBOARD_ENDPOINT="http://192.168.200.104:80"   -e KUBOARD_AGENT_SERVER_TCP_PORT="10081"   --mount type=volume,source=kuboard-data,target=/data   eipwork/kuboard:v3

always 和 unless-stopped 的最大区别,就是那些指定了 --restart unless-stopped 并处于 Stopped (Exited) 状态的容器,不会在 Docker daemon 重启的时候被重启。

[root@kuboard-server ~]# docker ps
CONTAINER ID   IMAGE                COMMAND            CREATED         STATUS         PORTS                                                                                       NAMES
f80962610239   eipwork/kuboard:v3   "/entrypoint.sh"   7 seconds ago   Up 6 seconds   0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:10081->10081/tcp, :::10081->10081/tcp, 443/tcp   kuboard

web界面
http://192.168.200.104/sso/auth/default?req=n7tiv2doghq42eigmaefrndk2
默认的账户密码 admin/Kuboard123

在这里插入图片描述
在这里插入图片描述

5.3 kuboard添加k8s集群

5.3.1 添加集群

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

5.3.2 集群的某一个master节点安装kuboard-agent即可

在这里插入图片描述

在master01节点执行即可

curl -k 'http://192.168.200.104:80/kuboard-api/cluster/kubeps/kind/KubernetesCluster/kubeps/resource/installAgentToKubernetes?token=ateT3A32Bof94qEmlMWeQzCv9tyOUthq' > kuboard-agent.yaml
kubectl apply -f ./kuboard-agent.yaml
[root@k8s-master01 ~]# curl -k 'http://192.168.200.104:80/kuboard-api/cluster/kubeps/kind/KubernetesCluster/kubeps/resource/installAgentToKubernetes?token=ateT3A32Bof94qEmlMWeQzCv9tyOUthq' > kuboard-agent.yaml
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  5793    0  5793    0     0  1872k      0 --:--:-- --:--:-- --:--:-- 2828k
[root@k8s-master01 ~]# kubectl apply -f ./kuboard-agent.yaml
namespace/kuboard created
serviceaccount/kuboard-admin created
clusterrolebinding.rbac.authorization.k8s.io/kuboard-admin-crb created
serviceaccount/kuboard-viewer created
clusterrolebinding.rbac.authorization.k8s.io/kuboard-viewer-crb created
deployment.apps/kuboard-agent-hj734q created
deployment.apps/kuboard-agent-hj734q-2 created

在这里插入图片描述

在这里插入图片描述

5.3.3配置访问集群的身份

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

Pytorch实现R-CNN系列目标检测网络

在PyTorch提供的已经训练好的图像目标检测中,均是R-CNN系列的网络&#xff0c;并且针对目标检测和人体关键点检测分别提供了容易调用的方法。针对目标检测的网络&#xff0c;输入图像均要求使用相同的预处理方式&#xff0c;即先将每张图像的像素值预处理到0 &#xff5e;1之间…

Flink 优化 (一) --------- 资源配置调优

目录一、内存设置1. TaskManager 内存模型2. 生产资源配置示例二、合理利用 cpu 资源1. 使用 DefaultResourceCalculator 策略2. 使用 DominantResourceCalculator 策略3 使用 DominantResourceCalculator 策略并指定容器 vcore 数三、并行度设置1. 全局并行度计算2. Source 端…

和猿辅导国奖选手的妈妈聊聊:数学新生代的成长之路

2023年第64届IMO中国国家队名单公布&#xff0c;来自猿辅导的学员王淳稷、孙启傲在此次国家队选拔赛中总成绩排名分列第一、第二&#xff0c;将于今年7月代表中国奔赴日本参加IMO竞赛。 值得一提的是&#xff0c;孙启傲同学继入选2022年IMO国家集训队、获阿里巴巴全球数学竞赛…

ubuntu(20.04)-shell脚本(2)echo-date-awk-sed-iptables-shell变量数组

1.echo 语法:echo [-ne][字符串]补充说明: 1、echo会将输入的字符串送往标准输出。 2、输出的字符串间以空白字符隔开,并在最后加上换行号。OPTIONS&#xff1a; -n 不要在最后自动换行 -e 若字符串中出现以下字符&#xff0c;则特别加以处理&#xff0c;而不会将它当成一般文…

【学习时序论文】

目录【2021 NeurIPS】Autoformer: Decomposition Transformers with Auto-Correlation for Long-Term Series Forecasting【2022 ICML】FEDformer: Frequency Enhanced Decomposed Transformer for Long-term Series Forecasting【2023 ICLR】TIMESNET: TEMPORAL 2D-VARIATION …

deque,stack,quque容器

一、deque 1.基本概念 功能: 双端数组&#xff0c;可以对头端进行插入删除操作 deque与vector区别: vector对于头部的插入删除效率低&#xff0c;数据量越大&#xff0c;效率越低. deque相对而言&#xff0c;对头部的插入删除速度会比vector快 vector访问元素时的速度会比de…

NDK编译脚本

一、如何通过NDK进行编译。 1、新建jni文件夹&#xff0c;并将Android.mk、Applicatio n.mk、源文件都放入其中。 2、编写Android.mk文件。 LOCAL_PATH : $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE: test LOCAL_C_ALL_FILES : test.c LOCAL_SRC_FILES : $(LOCAL_C_…

centos7虚拟机在集群zookeeper上面配置hbase的具体操作步骤

系列文章目录 centos7配置静态网络常见问题归纳_centos7网络问题 centos7克隆虚拟机完成后的的一些配置介绍 虚拟机centos7配置Hadoop单节点伪分布配置教程 卸载centos7自带的jdk的操作步骤 centos7配置zookeeper本地模式与集群模式的详细教程 centos7虚拟机配置集群时间…

HTML引入Typescript编译JS文件 :Uncaught ReferenceError: exports is not defined

初学TypeScript&#xff0c;尝试在html引入ts编译出来的js文件: 报错&#xff1a;Uncaught ReferenceError: exports is not defined 以下是代码&#xff1a; 创建了TS:加入export {}形成独立的作用域&#xff0c;其他ts文件重复声明相同名称的变量。 export {} let str &…

Python和Java二选一该学啥?

首先我们需要了解Python和 Java分别是什么 根据IEEE Spectrum 2022年编程语言排名前十的分别是&#xff1a;Python&#xff0c;C&#xff0c;C&#xff0c;C#&#xff0c;Java&#xff0c;SQL&#xff0c;JavaScript&#xff0c;R&#xff0c;HTML&#xff0c;TypeScript。从该…

专访丨AWS量子网络中心科学家Antía Lamas谈量子计算

​ Anta Lamas Linares&#xff08;图片来源&#xff1a;网络&#xff09; 47岁的Anta Lamas Linares出生于西班牙西北部的圣地亚哥德孔波斯特拉。她在当地学习物理学&#xff0c;然后在牛津大学和加利福尼亚继续深造。后来&#xff0c;她在新加坡领导了亚马逊网络服务&#xf…

Java中线程的常用操作-后台线程、自定义线程工厂ThreadFactpry、join加入一个线程、线程异常捕获

场景 Java中Thread类的常用API以及使用示例&#xff1a; Java中Thread类的常用API以及使用示例_霸道流氓气质的博客-CSDN博客 上面讲了Thread的常用API&#xff0c;下面记录下线程的一些常用操作。 注&#xff1a; 博客&#xff1a;霸道流氓气质的博客_CSDN博客-C#,架构之…

Doris(4):建表

可以通过在mysql-client中执行以下 help 命令获得更多帮助&#xff1a; help create table 1 基本概念 在 Doris 中&#xff0c;数据都以表&#xff08;Table&#xff09;的形式进行逻辑上的描述。 1.1 Row & Column 一张表包括行&#xff08;Row&#xff09;和列&#…

从零开始:如何集成美颜SDK到你的应用中

现在&#xff0c;随着人们对于美的追求不断提升&#xff0c;美颜应用已经成为了人们生活中不可或缺的一部分。在应用中&#xff0c;美颜功能的实现离不开美颜SDK的支持。那么&#xff0c;如何集成美颜SDK到你的应用中呢&#xff1f;下面&#xff0c;我们就来一步步了解。 第一…

Linux复习 / 线程相关----线程互斥 QA梳理

文章目录前言线程互斥Q&#xff1a;什么是临界资源&#xff1f;临界区呢&#xff1f;Q&#xff1a;什么是互斥&#xff1f;Q&#xff1a;数据不一致的本质是什么&#xff1f;Q&#xff1a;用锁对共享资源进行保护的前提是&#xff1a;锁也要作为共享资源被其他线程使用。那么用…

独家 | 招商银行:玩转校园招聘新方式 挖掘金融科技新人才

数字经济时代&#xff0c;金融科技人才队伍的引进与培养是招商银行人才体系建设的关键任务。 01.金融科技校招2大核心课题 招商银行数字化转型过程中&#xff0c;线上化、生态化、平台化、智能化、数据化全面加速发展&#xff0c;对人才队伍能力提出新要求。 2大核心课题&am…

Git的一些使用

虽然说这也不是啥重要的内容&#xff0c;但是作为计算机人也得学学&#xff0c;了解了解。 一些预备内容 首先得下载git&#xff0c;这个就不多说了。 安装完了之后&#xff0c;首先要做的就是设置用户名称和邮箱地址&#xff0c;因为每次Git提交都会使用该信息&#xff0c;…

I.MX6ULL_Linux_驱动篇(33) pinctrl与gpio子系统

上一章我们编写了基于设备树的 LED 驱动&#xff0c;但是驱动的本质还是没变&#xff0c;都是配置 LED 灯所使用的 GPIO 寄存器&#xff0c;驱动开发方式和裸机基本没啥区别。 Linux 是一个庞大而完善的系统&#xff0c;尤其是驱动框架&#xff0c;像 GPIO 这种最基本的驱动不可…

Linux实战学习

文章目录一、Linux权限信息权限控制信息chmodifconfigpingnmap netstatps killzip unzip常用快捷键二、搭建Java环境yumJDKTomcatMysql三、部署Web项目到服务器一、Linux权限信息 Linux中&#xff0c;拥有最大权限的账户为: root(超级管理员)&#xff0c;而普通用户在很多地方…

UWB成为智慧工厂时代的代表技术

UWB成为智慧工厂时代的代表技术 随着智慧工厂的到来&#xff0c;在人员安全问题较为重要的行业中&#xff0c;为了避免人员安全事故的出现&#xff0c;各家企业都逐步装备了UWB定位系统。UWB信号的辐射非常低&#xff0c;通常只有手机辐射的千分之一&#xff0c;因此在工业上应…