K8S部署攻略

此教程以一主二从为例,需要三台服务器。

主机最低需求: 4 核 CPU,4 GB 内存,硬盘:20 GBx2 (需保留一个未分区的磁盘)

从机最低需求: 4 核 CPU,8 GB 内存,硬盘:20 GBx2 (需保留一个未分区的磁盘)

软件版本:

Ubuntu22.04

Kubesphere:3.4.1

Docker20.10.24

K8s1.23.17

Rook:1.13.6

1. 配置Cgroup驱动

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2",
"registry-mirrors": [
"https://hub-mirror.c.163.com/",
"https://dockerproxy.com/"
]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

2. 配置docker存储库,安装docker-ce

sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
sudo curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get -y update
sudo apt-get -y install docker-ce=5:20.10.24~3-0~ubuntu-jammy
sudo systemctl enable docker && sudo systemctl start docker

3. 关闭交换分区

sudo swapoff -a
sudo vi /etc/fstab

注释掉swap行并保存

4. 允许 iptables 检查桥接流量

sudo modprobe br_netfilter
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sudo sysctl --system

5. 安装 kubeadm、kubelet 和 kubectl

sudo apt-get update && sudo apt-get install -y apt-transport-https
sudo curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
sudo tee /etc/apt/sources.list.d/kubernetes.list <<-'EOF'
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
sudo apt-get update
sudo apt-get install -y kubelet=1.23.17-00 kubeadm=1.23.17-00 kubectl=1.23.17-00
sudo systemctl enable kubelet && sudo systemctl start kubelet

6. 初始化控制平面节点(仅主节点执行)

sudo kubeadm init \
--image-repository registry.cn-hangzhou.aliyuncs.com/google_containers \
--kubernetes-version v1.23.17 \
--pod-network-cidr=10.244.0.0/16

出现如下信息表示初始化成功,将token(图中最后两行)复制保存,后面会用到,token有效期为24小时

执行命令:

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

7. 安装 Pod 网络附加组件(仅主节点执行,方式二选一)

方式一:

下载文件:https://files.cnblogs.com/files/blogs/785788/kube-flannel.zip?t=1710498095&download=true

解压上传kube-flannel.yml文件至主节点用户根目录下,执行:

sudo kubectl apply -f kube-flannel.yml

方式二:

sudo kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml

执行命令查看安装是否完成

watch kubectl get pod -n kube-system -o wide

输出中检查 CoreDNS Pod 的STATUS直到变成 Running 表示完成(需要几分钟)

8. 配置hosts

sudo vi /etc/hosts

配置示例:

192.168.1.100 k8s1

192.168.1.101 k8s2

192.168.1.102 k8s3

9. 从节点加入主节点

在从节点执行步骤六保存的token,注意非root用户前面加上sudo

sudo kubeadm join 192.168.1.100:6443 --token **** \
--discovery-token-ca-cert-hash sha256:****

成功输出:

失败可以关闭防火墙后重试:

sudo systemctl stop firewalld

sudo systemctl disable firewalld

完毕后,执行kubectl get nodes查看,等待所有节点状态变成Ready(需要几分钟)

10. 删除污点(仅主节点执行)

kubectl taint nodes <主节点名,比如k8s1> node-role.kubernetes.io/master:NoSchedule

11. 安装Rook-CephFS(仅主节点执行,方式二选一)

方式一:

下载文件:https://files.cnblogs.com/files/blogs/785788/rook-1.13.6.zip?t=1710498602&download=true

解压后把rook整个文件夹,上传到主节点用户根目录。

方式二:

git clone --single-branch --branch v1.13.7 https://github.com/rook/rook.git

执行命令:

cd /rook/deploy/examples
kubectl create -f crds.yaml -f common.yaml -f operator.yaml
kubectl create -f cluster.yaml

待安装完成(需要十分钟左右),使用 kubectl get pods -n rook-ceph 来确认安装进度,除 rook-ceph-osd-prepare-*** 以外,其他都要为Runing

12. 创建默认StorageClass,恢复污点(仅主节点执行)

cd /rook/deploy/examples
kubectl create -f filesystem.yaml
kubectl create -f csi/cephfs/storageclass.yaml
Kubectl patch storageclass rook-cephfs -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
kubectl taint nodes <主节点名,比如k8s1> node-role.kubernetes.io=master:NoSchedule

使用:kubectl get sc确认是否成功。

13. 安装KubeSphere(仅主节点执行)

kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.4.1/kubesphere-installer.yaml
kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.4.1/cluster-configuration.yaml

查看安装进度:

kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l 'app in (ks-install, ks-installer)' -o jsonpath='{.items[0].metadata.name}') -f

成功输出:

完结撒花!

附件:k8s部署攻略.doc

K8S-1.23.17+Ceph+KubeSphere 一主二从部署攻略的更多相关文章

  1. 主程的晋升攻略(4):TCP、消息分包和协议设计

    在<主程的晋升攻略(3):IP.DNS和CDN>中,一次网络请求经过DNS解析知道了目的IP,如今就要发出网络包,这里我们说一说TCP的相关话题. TCP是一种流式协议 讲网络编程的教科书 ...

  2. 主程的晋升攻略(3):IP、DNS和CDN

    有段时间我面试程序猿时,喜欢问这个问题:局域网IP有哪些IP段?由这个问题再追问NAT(网络地址转换). 为什么不是每一个设备一个公网IP? 先说个关于QQ的小故事,最早开发QQ时.小马哥他们也没想到 ...

  3. 解魔方的机器人攻略17 – 魔方CFOP算法

    由 动力老男孩 发表于 2010/01/03 17:38:09 本来我想把这个攻略做成一个NXT开发的教程,把传感器,电机,发声等部分都介绍一遍.不过现在看来有些同学很心急,希望早点看到“核心代码”, ...

  4. Ceph分布式存储-原理介绍及简单部署

    1)Ceph简单概述Ceph是一个分布式存储系统,诞生于2004年,最早致力于开发下一代高性能分布式文件系统的项目.Ceph源码下载:http://ceph.com/download/.随着云计算的发 ...

  5. Ceph Jewel 10.2.3 环境部署

    Ceph 测试环境部署 本文档内容概要 测试环境ceph集群部署规划 测试环境ceph集群部署过程及块设备使用流程 mon节点扩容及osd节点扩容方法 常见问题及解决方法 由于暂时没有用到对象存储,所 ...

  6. redis 一主二从三哨兵

    总体部署 一主二从三哨兵 ip地址分配分别为 主 127.0.0.1:6379 从 127.0.0.1:6389 从 127.0.0.1:6399 哨兵 127.0.0.1:26379 哨兵 127. ...

  7. redis-3.28 一主二从模式介绍、主从从模式介绍、sentinel模式一主两从高可用

    一.redis-3.28部署 yum install gcc tclwget http://download.redis.io/releases/redis-3.2.8.tar.gztar -zxvf ...

  8. docker compose搭建redis7.0.4高可用一主二从三哨兵集群并整合SpringBoot【图文完整版】

    一.前言 redis在我们企业级开发中是很常见的,但是单个redis不能保证我们的稳定使用,所以我们要建立一个集群. redis有两种高可用的方案: High availability with Re ...

  9. ​KubeSphere离线无网络环境部署

    KubeSphere离线无网络环境部署 KubeSphere 是 GitHub 上的一个开源项目,是成千上万名社区用户的聚集地.很多用户都在使用 KubeSphere 运行工作负载.对于在 Linux ...

  10. LVS+MYCAT+读写分离+MYSQL主备同步部署手册

    LVS+MYCAT+读写分离+MYSQL主备同步部署手册 1          配置MYSQL主备同步…. 2 1.1       测试环境… 2 1.2       配置主数据库… 2 1.2.1  ...

随机推荐

  1. NC15447 wyh的问题

    题目链接 题目 题目描述 我国现在能源消耗非常严重,现在政府有这样一个工作,每天早上都需要把一些路灯关掉,但是他们想让在关闭的过程中所消耗的能源是最少的,负责路灯关闭的工作人员以1m/s的速度进行行走 ...

  2. 开年!5 款令人惊艳的开源项目「GitHub 热点速览」

    朋友们开工大吉啊!我刚从假期模式切换回来,完全无心工作有些不在状态,比如开机密码错了好几次.闲话少叙,下面就让我们一起看看,春节这段时间 GitHub 上又出了什么有趣.好玩的开源项目. 今年上来就是 ...

  3. Ubuntu20.04下的ESP8266环境

    硬件说明 ESP8266使用的是3.3V供电, 和Arduino不一样, ESP8266的I/O脚是不能防5V的, 连上就烧. 其输出只有12mA, 而Arduino是20-40mA. ESP8266 ...

  4. oracle 游标变量ref cursor详解

    一 介绍      像游标cursor一样,游标变量ref cursor指向指定查询结果集当前行.游标变量显得更加灵活因为其声明并不绑定指定查询. 其主要运用于PLSQL函数或存储过程以及其他编程语言 ...

  5. thymeleaf利用fragment解决html页面间获取context-path问题

    问题说明 我使用spring boot+thymeleaf做了个项目,那前台页面都是html,里面有各种api调用和路径跳转. 大家都知道这些路径不能写死,为保证任何情况下路径的正确性,一般都是这种格 ...

  6. Java集合框架学习(二) HashSet详解

    HashSet介绍 这个类实现了Set接口,背后是一个hash table(实际上是个HashMap 实例) .它不保证元素的迭代顺序.尤其是,随着时间推 移它不保证某一元素的位置不变.这个类是非线程 ...

  7. sentry-native 在 windows 平台上搭建

    官方文档:https://github.com/getsentry/sentry-native 虽说官方文档有搭建步骤,奈何我用 git bash 试了 n 遍,最终都会报一大堆错误,白白浪费了我快一 ...

  8. 海康摄像头开发笔记(一):连接防爆摄像头、配置摄像头网段、设置rtsp码流、播放rtsp流、获取rtsp流、调优rtsp流播放延迟以及录像存储

    前言   Hik防爆摄像头录像,因为防爆摄像头会有对应的APP软件,与普通的网络摄像头和球机不一样,默认认为它不可以通过web网页配置,所以弄了个来实测确认.  经测试实际上也是可以通过web网页配置 ...

  9. https://editor.csdn.net/md/?articleId=131348876

    前言   前面搭建了基础环境,在使用统信UOS系统的相关行业也是不能上网的,但是可以传递压缩包,为了很好的方便相关从业人员工作,特将此种方式流程分享出来.(与国产银河麒麟不同)  本篇文章的重点就是离 ...

  10. 统信UOS系统开发笔记(二):国产统信UOS系统搭建Qt开发环境安装Qt5.12

    前言   开发国产应用,使用到统信UOS系统,安装Qt5.12.8的Qt开发安装包直接安装(这是本篇使用的方式,另外一种源码编译安装将在下一篇讲解)   统信UOS系统版本   系统版本:     Q ...