您的位置:首页 > 教育 > 培训 > 上海公安局官网_免费自制app软件手机版_一站式推广平台_百度指数官网

上海公安局官网_免费自制app软件手机版_一站式推广平台_百度指数官网

2025/4/19 7:19:50 来源:https://blog.csdn.net/2301_79868845/article/details/147276343  浏览:    关键词:上海公安局官网_免费自制app软件手机版_一站式推广平台_百度指数官网
上海公安局官网_免费自制app软件手机版_一站式推广平台_百度指数官网

一、实验目的

1、理解k8s的组件的功能;

2、理解k8s中的资源类型;

3、 熟练掌握k8s部署配置;

二、实验内容:

前置知识点:

写出k8s有哪些组件并简述作用?

①Master 组件:

Master 组件提供集群的管理控制中心,对集群进行全局决策(如调度),并检测和响应集群事件。Master 组件可以在群集中的任何计算机上运行,但建议 Master 节点占据一个独立的服务器。因为 Master 是整个集群的大脑,如果 Master 所在节点宕机或不可用,那么所有的控制命令都将失效。

②Node 组件

除了 Master,Kubernetes 集群中的其他机器被称为 Node 节点。与 Master 节点一样,Node 节点可以是一台物理主机,也可以是一台虚拟机。Node 节点是 Kubernets 集群中的工作负载节点,每个 Node 都会被 Master 分配一些工作负载。当某个 Node 宕机时,其上的工作负载会被 Master 自动转移到其他节点上去。

简述k8s的资源有哪些,并简述作用?

①Pod

作用:k8s 创建或部署的最小基本单位,代表集群上运行的进程,由一个或多个容器组成,共享存储和网络,有特殊“根容器”Pause 容器。

②Label

作用:k8s 核心概念,key-value 键值对,可附加到 Node、Pod、Service 等资源对象上,实现多维度资源分组管理,通过标签选择器查询筛选资源对象。

③Replication Controller(RC)

作用:k8s 集群中最早保证 Pod 高可用的 API 对象,监控运行中的 Pod,保证指定数目 Pod 副本,适用于长期伺服型业务。

④Deployment

作用:用户对 k8s 集群的更新操作,比 RS 应用模式更广,可创建或更新服务,实现滚动升级,未来用于管理所有长期服务型业务。

⑤Service

作用:解决访问服务问题,每个 Service 对应集群内部有效虚拟 IP,集群内部通过虚拟 IP 访问服务,Kube-proxy 实现集群内部负载均衡。

⑥Job

作用:控制批处理型任务的 API 对象,批处理业务运行有头有尾,根据用户设置,管理的 Pod 任务成功完成自动退出,成功标志根据不同策略而定。

⑦DaemonSet

作用:确保所有或某些节点运行同一个 Pod,节点可能是所有集群节点或通过 nodeSelector 选定的特定节点,适用于后台支撑型服务,如存储、日志和监控等。

1、拓扑图:

2、配置步骤

准备硬件

主机名

ip

硬件最低要求

建议,跑的快

master(k8s-master)

10.1.1.19

2核,2G

内存给个6G

node2(k8s-worker1)

10.1.1.20

1核,1G

内存给个6G

node3(k8s-worker2)

10.1.1.21

1核,1G

内存给个6G

(1)在 s1 这个机器上执行修改主机名命令

hostnamectl set-hostname k8s-master

在s2 这个机器上执行修改主机名命令

hostnamectl set-hostname k8s-worker1

 在s3这个机器上执行修改主机名命令

hostnamectl set-hostname k8s-worker2

(2)主机名DNS解析(这里有些图片均为后期加入,但是三台虚拟机前面操作均一样)

(3)关闭防火墙,安装iptables

systemctl stop firewalld

systemctl disable firewalld

安装iptables

yum -y install iptables-services

各节点启动

systemctl start iptables

清空规则iptables -F

开机启动

systemctl enable iptables

(4)禁用selinux

setenforce 0

sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

(5)设置时区

timedatectl set-timezone Asia/Shanghai

(6)关闭 swap 分区

(7)安装 ipvs

yum install -y ipvsadm ipset

(8)加载 bridge

yum install -y epel-release
yum install -y bridge-utils
modprobe br_netfilter
echo 'br_netfilter' >> /etc/modules-load.d/bridge.conf
echo 'net.bridge.bridge-nf-call-iptables=1' >> /etc/sysctl.conf
echo 'net.bridge.bridge-nf-call-ip6tables=1' >> /etc/sysctl.conf
echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf
sysctl -p

(9)添加 docker-ce yum 源

yum install -y yum-utils device-mapper-persistent-data lvm2

yum-config-manager--add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.rep o   

sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo

(10)安装docker(27.3.1 )   

yum -y install docker-ce

注:不一定是这个版本,只是提醒一下,我们安装的docker 是高版本;如果下面不想使用cri-docker ,安装的docker 版本不要高于20.10,因为kubeadm-1.23.6 不支持太高的版本;

(11)配置 daemon.json 重要的是配置源

cat > /etc/docker/daemon.json <<EOF
{"data-root": "/data/docker","exec-opts": ["native.cgroupdriver=systemd"],"log-
driver":"json-file","log-opts":{"max-size": "100m","max-file": "100"},"registry-
mirrors":
["https://docker.m.daocloud.io","https://docker.hpcloud.cloud","https://docker.u
nsee.tech","https://docker.1panel.live","http://mirrors.ustc.edu.cn","https://do
cker.chenby.cn","http://mirror.azure.cn","https://dockerpull.org","https://docke
rhub.icu","https://hub.rat.dev"]}
EOF

(12)重启docker服务

systemctl daemon-reload && systemctl restart docker && systemctl enable docker

(13)安装 cri-docker

为了在 Pod 中运行容器,Kubernetes 使用  容器运行时(   Container Runtime)。默认情况下,Kubernetes 使用  容器运行时接口(   Container Runtime Interface,CRI) 来与你所选择的容器运行时交互。

Docker Engine 没有实现CRI,而这是容器运行时在 Kubernetes 中工作所需要的。 为此,必须安装一个额外的服务 cri-dockerd。 cri-dockerd 是一个基于传统的内置 Docker 引擎支持的项目, 它在 1.24版本从 kubelet中移除。   https://codeload.github.com/Mirantis/cri-dockerd/zip/refs/heads/master

在 Kubernetes 1.24 及更高版本中, kubeadm 默认移除了对 Docker 的集成,转而使用 containerd作为默认的容器运行时。然而,如果你仍然希望使用 Docker 作为容器运行时,可以通过 cri-dockerd来实现。 cri-dockerd 是一个适配器,允许 Docker 作为 Kubernetes 的容器运行时接口(CRI)实现。

(14)配置 cri-docker 服务

cat > /etc/docker/daemon.json <<EOF

(15)添加 cri-docker 套接字

(16) 启动 cri-docker 对应服务

(17) 添加 kubeadm yum 源

(18)安装 kubernetes 1.28.2   

3、测试前准备
Master 节点初始化 K8s

所有准备工作都完成了,于可以进行 K8s 的初始化了,只需要在 Master 节点上执行以下初始化命令。

kubeadm init \
  --apiserver-advertise-address=10.1.1.19 \
  --image-repository registry.aliyuncs.com/google_containers \
  --kubernetes-version v1.28.0 \
  --service-cidr=10.96.0.0/12 \
  --pod-network-cidr=10.244.0.0/16 \
  --cri-socket=unix:///var/run/cri-dockerd.sock \
  --ignore-preflight-errors=all

其中,在以上返回结果中有 3 条命令需要立即执行,这是用来设置 kubectl 工具的管理员权限,执行之后就可以在 Master 节点上通过终端窗口使用 kubectl 命令。

Worker 节点加入 K8s 集群

K8s 初始化之后,就可以在其他 2 个工作节点上执行 “kubeadm join” 命令,因为我们使用了 cri-dockerd ,需要在命令加上 “–cri-socket=unix:///var/run/cri-dockerd.sock” 参数。

# 在两个工作节点上执行

kubeadm join 10.1.1.19:6443 --token 6zfnhz.vj8kn1wxh5k8m1hb \

        --discovery-token-ca-cert-hash sha256:eb98343bdd6e8474d2d759cc12d2f4409118955f5f93e3c68199f1b3584893b6 \

        --cri-socket=unix:///var/run/cri-dockerd.sock(每个人的不一样!

此时,我们的集群就部署成功了。你可以使用 “kubectl get node” 命令来查看集群节点状态。

执行kubectl get node 查看节点是否加入成功

安装K8s网络插件

# 下载 Calico 插件部署文件

wget https://docs.projectcalico.org/manifests/calico.yaml

下载后进入vi编辑calico.yaml文件,并修改如图所示

最后执行:kubectl apply -f calico.yaml将 Calico 插件部署到集群里

Calico 部署会比较慢,大概等个几分钟,等待 Calico 部署完成后,再次通过命令 “kubectl get node” 查看节点状态,就可以看到所有节点已经准备就绪,此时集群正式搭建成功。

三、实验结论

(1)确保所有服务器的硬件和系统配置符合要求;

(2)在每个服务器安装了 Docker 和 cri-dockerd 作为容器引擎;

(3)安装 kubeadm、kubelet 和 kubectl 这三个工具。

(4)在 Master 节点上执行集群初始化,初始化完成后就可以加入工作节点。

(5)最后部署 Calico 网络插件,以确保集群内部的网络通信。

最后,你就成功搭建了一个 K8s 集群。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com