Ubuntu 22.04搭建 K8S 1.29+Calicao网络+Kuboard 超详细
创始人
2024-11-10 11:03:42
0

提示:自己搭K8S有多痛苦懂的都懂,所以文中提到的各种版本号,尽量保证一致。

1.配置主机名

master 控制节点

hostnamectl set-hostname k8s-master

 工作节点

hostnamectl set-hostname k8s-node01

2.IP配置 (针对本地自己搭建的虚拟机,云服务不要改动,跳过)

master控制节点和node工作节点都要配。

ifconfig看下内网ip。还要注意自己的网卡名啊,比如我下面这个就是ens33

然后配置netplan,配置文件目录就是/etc/netplan/,具体文件名有可能不太一样,敲 00 tab一下。

vi /etc/netplan/00-installer-config.yaml

找网卡ens33。别配错地方了。addresses填本机的内网ip。路由网段也配成自己的。via:192.168.x.x

保存退出,让配置生效。

netplan apply

同上,每个节点都这样配置一遍。

3.主机名IP地址解析

vi /etc/hosts

填写之前配好的主机名,和对应的内网地址。每个节点都要这么把集群内所有节点的主机名IP配上。

保存退出

4.配置K8S内核转发 网桥

每个节点主机都要搞。

创建内核文件

cat << EOF | tee /etc/modules-load.d/k8s.conf overlay br_netfilter EOF

加载

modprobe overlay 
modprobe br_netfilter

验证

lsmod | egrep overlay
lsmod | egrep overlay lsmod | egrep br_netfilter

网桥过滤 内核转发配置

cat << EOF | tee /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 EOF

加载

sysctl --system

5.安装ipset ipvsadm

所有节点主机都要装

apt install ipset ipvsadm

配置ipvsadm 添加模块

cat << EOF | tee /etc/modules-load.d/ipvs.conf ip_vs ip_vs_rr ip_vs_wrr ip_vs_sh nf_conntrack EOF

创建加载模块脚本

cat << EOF | tee ipvs.sh #!/bin/sh modprobe -- ip_vs modprobe -- ip_vs_rr modprobe -- ip_vs_wrr modprobe -- ip_vs_sh modprobe -- nf_conntrack EOF

执行脚本

sh ipvs.sh

验证

lsmod | grep ip_vs

6.关闭SWAP分区

所有节点主机都要关闭

先看是否开启了swap分区

free -m

如果开启则关闭

swapoff -a

设置永久关闭

vi /etc/fstab

注释掉最下面这行

保存退出

7.容器运行时Containerd安装部署

所有节点主机都要装

下载 1.7.11版本https://github.com/containerd/containerd/releases/download/v1.7.11/cri-containerd-1.7.11-linux-amd64.tar.gz

解压到根目录

tar xf cri-containerd-1.7.11-linux-amd64.tar.gz -C /

生成配置文件

mkdir /etc/containerd containerd config default > /etc/containerd/config.toml

修改

vi /etc/containerd/config.toml

65行 sandbox_image,国外服务器只需要把 "pause:3.8" 改成 "pause:3.9",国内改成 "registry.aliyuncs.com/google_containers/pause:3.9"。

137行 SystemdCgroup,false改成true。

启动

systemctl enable --now containerd

验证

containerd --version

8.K8S部署

以下所有节点都要做

如果是国外的主机 走官方库 按照下面这么install

下载k8s软件包仓库公共签名密钥

curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.29/deb/Release.key | sudo gpg --dearmour -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg

添加仓库

echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.29/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list

更新

apt-get update

开始安装

apt-get install -y kubelet=1.29.0-1.1 kubeadm=1.29.0-1.1 kubectl=1.29.0-1.1

关闭自动更新

apt-mark hold kubelet kubeadm kubectl

如果是国内的主机 无梯 这么install

apt-get update && apt-get install -y apt-transport-https curl -fsSL https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.29/deb/Release.key |     gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.29/deb/ /" |     tee /etc/apt/sources.list.d/kubernetes.list apt-get update apt-get install -y kubelet kubeadm kubectl

关闭自动更新

apt-mark hold kubelet kubeadm kubectl

然后操作主节点master节点 下面这一堆都是操作master节点!!

先生成kubeadm配置文件

kubeadm config print init-defaults > kubeadm-config.yaml

修改配置文件

nodeRegistration:name 这个是注册k8s节点时候的名字可改可不改

advertiseAddress 换成自己的内网ip

imageRepository 根据情况换 registry.aliyuncs.com/google_containers

networking加上 podSubnet:10.244.0.0/16 (看图中红框部分)

最后换kubelet内核驱动 末尾加上 (图中红框)

---
kind: KubeletConfiguration
apiVersion: kubelet.config.k8s.io/v1beta1
cgroupDriver: systemd

kubeadm初始化

kubeadm init --config kubeadm-config.yaml

成功如下图 Your Kubernetes control-plane has initialized successfully!

注意蓝框中的部分,需要根据篮筐中的提示生成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 192.168.0.241:6443 --token abcdef.0123456789abcdef \
    --discovery-token-ca-cert-hash sha256:abbd129b388861f1b33d5c11e70bc1fc12ba73b9d48eb7ab759ae90fd16cbd20

这段就是集群添加worker node的命令,这是临时的。

到非master节点去执行,加入到集群中。

到master节点执行

kubectl get nodes

如下图,代表加入成功。

9.Calico部署

操作在主节点上 master

如果服务器有梯或者在国外 直接拉

官网Quickstart for Calico on Kubernetes | Calico Documentation (tigera.io)icon-default.png?t=N7T8https://docs.tigera.io/calico/latest/getting-started/kubernetes/quickstart

Install Calico

注意官网的这个命令是最新的,我们这个用的是3.26.4版本。建议版本不要超过3.27

执行

kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.4/manifests/tigera-operator.yaml

如果是国内服务器无梯 那就先把yaml文件down下来 就是url输入到浏览器 右键另存为

down下来再扔服务器上 (你down文件这步不确定是不是须要魔法 0.0,我知道你很烦,没招啊)

然后执行

kubectl create -f tigera-operator.yaml

下一步执行第二个

这步先下载文件

wget https://raw.githubusercontent.com/projectcalico/calico/v3.26.4/manifests/custom-resources.yaml

然后修改

改成 10.244.0.0/16

改完保存执行

kubectl create -f custom-resources.yaml

然后查看网络创建过程

watch kubectl get pods -n calico-system -o wide

所有pod都是running状态,ready状态,就是组网成功了。

这里强调一下,如果calico-node都不是1/1 ready状态,都是0/1,那么肯定是你原生网络环境有问题。我在这步就掉坑里了,calico BGP模式组网,node间通讯要走TCP,179端口,还有各种烂七八糟的端口,都要能通的。云服务搭建的同学一定要注意这点,先把安全组配好。

TCP:179 5473 6666 6443 2379 2380

UDP:4789 

但还是建议按范围开端口,这些端口是有可能变化的。

如果大多数是1/1,一部分或者某个calico-node是0/1,那么大概率就是网卡错误。先看pod日志,如果看到“Readiness probe failed: calico/node is not ready: BIRD is not ready”,那基本就是网卡不对,节点的ip获取不到。那么就看下你正在使用的网卡是啥,本文是tigera-operator搭建calico,那就修改tigera-operator.yaml。指定网卡,或者正则匹配网卡。我当前使用的网卡是eht0,那就指定为eth0。如下图。

修改custom-resources.yaml文件,spec.calicoNetwork下加上。

nodeAddressAutodetectionV4:
    interface: eth0

然后重拉一遍

kubectl apply -f custom-resources.yaml

10.Kuboard可视化工具部署

可视化web ui有不少,kuboard是我用着最顺手的。

安装 Kuboard v3 - kubernetes | Kuboardicon-default.png?t=N7T8https://kuboard.cn/install/v3/install-in-k8s.html把这个文件wget down下来

wget https://addons.kuboard.cn/kuboard/kuboard-v3-swr.yaml

修改几个地方

注释掉KUBOARD_SERVER_NODE_PORT: '30080'

加上KUBOARD_ENDPOINT: 'http://192.168.0.241:30080'

192.168.0.241 换成你集群随便一个节点的内网IP

#KUBOARD_SERVER_NODE_PORT: '30080'
  KUBOARD_ENDPOINT: 'http://192.168.0.241:30080'

 

128行 镜像拉取策略改成 IfNotPresent

221行也是

都改好了,保存退出,执行。

kubectl apply -f kuboard-v3-swr.yaml

然后执行

watch kubectl get pods -n kuboard

这样就是成功了

浏览器访问 http://IP:30080

如果你是云服务搭建的同学,那IP就是你集群随便一个节点的公网IP地址哈。

公网Kuboard还要注意,如果你的master节点服务器80端口不通(有的云服务厂商需要备案才能开80),那么http://MASTER-NODE-IP:30080很有可能打不开, 可以尝试别的节点的IP看看好不好使,一般来说,work节点IP就能打开了,Kuboard Agent会自己内部跳转。

打开如下图

初始账户密码 admin Kuboard123

公网同学赶紧改密码啊!!!登录进去在用户这里能改。

然后就是导入集群信息

点添加集群

选择KubeConfig

然后把你之前生成的 .kube文件夹下的config里的内容直接粘里,集群名称和描述,自己填好,最后确定。

最后,祝大家搭建顺利,k8s使用快乐,不出问题。(〃'▽'〃)

相关内容

热门资讯

8分钟辅助!心悦海南苹果版辅助... 8分钟辅助!心悦海南苹果版辅助器,确实真的是有辅助教程(有挂方略)亲,关键说明,心悦海南苹果版辅助器...
第一分钟辅助!四川血战到底辅助... 第一分钟辅助!四川血战到底辅助,本来有辅助神器(有挂透视)1、金币登录送、破产送、升级送、活动送。详...
第4分钟辅助!摸一把游戏跑得快... 第4分钟辅助!摸一把游戏跑得快辅助,一贯有辅助工具(有挂技术)1、该软件可以轻松地帮助玩家将摸一把游...
第6分钟辅助!天天爱柳州麻将辅... 第6分钟辅助!天天爱柳州麻将辅助器,确实真的是有辅助神器(真是有挂)1、让任何用户在无需天天爱柳州麻...
2分钟辅助!榕城510k破解版... 2分钟辅助!榕城510k破解版安卓,好像真的有辅助攻略(有挂神器)1、实时榕城510k破解版安卓透视...
第三分钟辅助!决战辅助软件,切... 第三分钟辅助!决战辅助软件,切实真的是有辅助脚本(有挂头条)决战辅助软件破解侠是真的助透视。每个模型...
第十分钟辅助!微乐小程序免费黑... 第十分钟辅助!微乐小程序免费黑科技是真的吗,都是有辅助神器(有挂神器)1、操作简单,无需微乐小程序免...
第五分钟辅助!余干510k副5... 第五分钟辅助!余干510k副510k,切实真的是有辅助脚本(确实有挂)1、余干510k副510k破解...
第2分钟辅助!心悦辅助透视脚本... 第2分钟辅助!心悦辅助透视脚本,真是是有辅助工具(有挂教学)1、进入游戏-大厅左侧-新手福利-激活码...
第八分钟辅助!微信小程序中至吉... 第八分钟辅助!微信小程序中至吉安模拟器,其实真的有辅助器(有挂技巧)1、进入到微信小程序中至吉安模拟...