欧拉系统部署K8S单节点集群(Containerd)
-1

kubernetes集群角色

k8s集群需要建⽴在多个节点上,将多个节点组建成一个集群,然后进⾏统⼀管理,但是在k8s集群内部,这些节点⼜被划分成了两类⻆⾊

Kubernetes 也称为 K8s,是用于自动部署、扩缩和管理容器化应用程序的开源系统。

它将组成应用程序的容器组合成逻辑单元,以便于管理和服务发现。Kubernetes 源自 Google 15 年生产环境的运维经验,同时凝聚了社区的最佳创意和实践。:

  • 一类⻆⾊为管理节点,叫Master/node,负责集群的所有管理工作;
  • ⼀类⻆⾊为⼯作节点,叫work/node,负责运行集群中所有用户的容器应用 ;

Master管理节点组件

  • API Server:作为集群的管理入口,处理外部和内部通信,接收用户请求并处理集群内部组件之间的通信;
  • Scheduler:作为集群资源调度计算,根据调度策略,负责将待部署的 Pod 分配到合适的 Node 节点上;
  • Controller Manager:管理集群中的各种控制器,例如 Deployment、ReplicaSet、DaemonSet等,管理集群中的各种资源;
  • etcd:作为集群的数据存储,保存集群的配置信息和状态信息;

Node工作节点组件

  • Kubelet:负责与 Master 节点通信,并根据 Master 节点的调度决策来创建、更新和删除 Pod,同时维护 Node 节点上的容器状态;
  • 容器运行时(如 Docker、containerd 等):负责运行和管理容器,提供容器生命周期管理功能。例如:创建、更新、删除容器等;
  • Kube-proxy:负责为集群内的服务实现网络代理和负载均衡,确保服务的访问性;

K8S集群插件

  • DNS服务:严格意义上的必须插件,在k8s中,很多功能都需要用到DNS服务,例如:服务发现、负载均衡、有状态应用的访问等;
  • Dashboard: 是k8s集群的Web管理界面(需消耗较多内存);
  • 资源监控:例如metrics-server监视器,用于监控集群中资源利用率;

kubernetes集群类型

  • 一主多从集群:由一台Master管理节点和多台Node工作节点组成,生产环境下Master节点存在单点故障的风险,适合学习和测试环境使用;
  • 多主多从集群:由多台Master管理节点和多Node工作节点组成,安全性高,适合生产环境使用;

前期准备

kubernetes集群规划

主机名IP地址角色操作系统硬件配置
master01192.168.1.1管理节点openEuler 24.034CPU/8G内存/100
node01192.168.1.2工作节点openEuler 24.034CPU/4G内存/50G
node02192.168.1.3工作节点openEuler 24.034CPU/4G内存/50G

关闭防火墙(每个节点都要)

systemctl stop firewalld && systemctl disable firewalld #关闭防火墙
setenforce 0 #临时关闭
sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config #(永久关闭)
hostnamectl set-hostname 主机名  #(每台主机搜需要)

设置解析(每个节点都要)

echo "192.168.1.1 master
192.168.1.2 node01
192.168.1.3 node02" >> /etc/hosts  #每台主机都需要


开启bridge网桥过滤(类似虚拟交换机,提供网络功能(每个节点都要))

vi /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1


由于开启网桥功能,需要加载br_netfilter模块来允许在网桥设备上的数据包经过iptables防火墙处理(每个节点都要)

modprobe br_netfilter && lsmod | grep br_netfilter
sysctl -p /etc/sysctl.d/k8s.conf


关闭SWAP交换分区(每个节点都要)

swapoff -a 
sed -ri 's/.*swap.*/#&/' /etc/fstab

配置源(可选,openEuler默认源可直接下载containerd(每个节点都要))

vi /etc/yum.repos.d/docker-ce.repo 
[docker-ce-stable]
name=Docker CE Stable - \$basearch
baseurl=https://mirrors.huaweicloud.com/docker-ce/linux/centos/9/\$basearch/stable
enabled=1
gpgcheck=1
gpgkey=https://mirrors.huaweicloud.com/docker-ce/linux/centos/gpg

安装(每个节点都要)

dnf install -y containerd-1.6.22-16.oe2403sp1.x86_64

生成配置文件(每个节点都要)

containerd config default | tee /etc/containerd/config.toml


启用Cgroup用于限制进程的资源使用量(每个节点都要)

sed -i 's#SystemdCgroup = false#SystemdCgroup = true#' /etc/containerd/config.toml


替换文件中pause镜像的下载地址为阿里云仓库(每个节点都要)

sed -i 's#sandbox_image = "registry.k8s.io/pause:3.6"#sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.9"#' /etc/containerd/config.toml


为Containerd配置镜像加速器,在文件中找(每个节点都要)到[plugins."io.containerd.grpc.v1.cri".registry.mirrors],在下方添加镜像加速器

vim /etc/containerd/config.toml
#...
      [plugins."io.containerd.grpc.v1.cri".registry.mirrors]
        [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
           endpoint = ["https://abde64ba3c6d4242b9d12854789018c6.mirror.swr.myhuaweicloud.com"]


启动containerd并设置随机自启(每个节点都要)

systemctl enable containerd --now


配置kubeadm仓库,本实验使用阿里云 YUM源(每个节点都要)

vi  /etc/yum.repos.d/k8s.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

安装以下软件包:

  • kubeadm:用于初始化集群,并配置集群所需的组件并生成对应的安全证书和令牌;
  • kubelet:负责与 Master 节点通信,并根据 Master 节点的调度决策来创建、更新和删除 Pod,同时维护 Node 节点上的容器状态;
  • kubectl:用于管理k8集群的一个命令行工具;

安装软件,(每个节点都要安装)

yum -y install kubeadm-1.28.2 kubelet-1.28.2 kubectl-1.28.2


kubelet启用Cgroup控制组,用于限制进程的资源使用量(每个节点都要)

vi /etc/sysconfig/kubelet 
KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"


设置kubelet开机自启动即可,集群初始化后自动启动(每个节点都要)

systemctl enable kubelet

集群初始化

kubeadm config images list

#...以下是集群初始化所需的集群组件镜像
v1.27.1; falling back to: stable-1.23
k8s.gcr.io/kube-apiserver:v1.23.17
k8s.gcr.io/kube-controller-manager:v1.23.17
k8s.gcr.io/kube-scheduler:v1.23.17
k8s.gcr.io/kube-proxy:v1.23.17
k8s.gcr.io/pause:3.6
k8s.gcr.io/etcd:3.5.1-0
k8s.gcr.io/coredns/coredns:v1.8.6


在master01节点生成初始化集群的配置文件

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


配置文件需要修改如下内容

#管理节点的IP地址
advertiseAddress: 192.168.0.50

#本机注册到集群后的节点名称
name: master01

#集群镜像下载地址,修改为阿里云
imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers


通过配置文件初始化集群

kubeadm init --config kubeadm-config.yaml 


根据集群初始化后的提示,执行如下命令

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


根据提示将node节点加入集群,加入成功后在master节点验证,此时节点处于未就绪,因为没有网络

kubectl get nodes
 
NAME     STATUS     ROLES                  AGE     VERSION
master01 NotReady   control-plane,master   3m31s   v1.23.0
node01   NotReady   <none>                 12s     v1.23.0
node02   NotReady   <none>                 89s     v1.23.0


如果哪个节点出现问题,可以使用下列命令重置当前节点

kubeadm  reset



Calico 使用 BGP (边界网关协议)进行路由,Calico 可以实现直接的 Pod 到 Pod 通信,而无需在节点之间进行额外的封装和解封装操作。这使得 Calico 在大型或高度动态的集群中具有更好的性能


部署集群网络Calico,只需在master节点部署pod网络

wget https://raw.githubusercontent.com/projectcalico/calico/v3.24.1/manifests/calico.yaml


创建calico网络

kubectl apply -f calico.yaml


查看Calico Pod状态是否为Running

kubectl get pod -n kube-system

NAME READY STATUS RESTARTS AGE
calico-kube-controllers-66966888c4-whdkj 1/1 Running 0 101s
calico-node-f4ghp 1/1 Running 0 101s
calico-node-sj88q 1/1 Running 0 101s
calico-node-vnj7f 1/1 Running 0 101s
calico-node-vwnw4 1/1 Running 0 101s


在master01节点查看集群信息

kubectl get nodes

NAME       STATUS   ROLES                  AGE   VERSION
master01   Ready    control-plane,master   25m   v1.23.0
node01     Ready    <none>   							 25m   v1.23.0
node02     Ready    <none>   							 24m   v1.23.0

欧拉系统部署K8S单节点集群(Containerd)
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇