互联网技术 / 互联网资讯 · 2024年1月21日

快速搭建Kubernetes实验环境的方法

很多小伙伴想学kubeRnetes,都会遇到这些问题

手里没有可用的服务器 打开kubeRnetes官方文档,看到复杂的组件学不下去

今天就介绍一种省钱省时的方式来玩kubeRnetes

准备服务器

很多小伙伴电脑配置比较高,可以直接用虚拟机开两台机器,至少得确保自己的电脑16G内存以上

我一个穷鬼,用着8G内存小本,没办法,我选择云服务器

在阿里云平台充值100块,选择按量付费,每小时3毛钱的2c4G突发性能实例,玩一晚上也就一罐红牛的价格

服务器开好就可以开始部署kubeRnetes了,本文采用kubeadM方式快速搭建kubeRnetes集群

修改系统参数 加载bR_netfilteR模块 查看是否加载bR_netfilteR lSMod gRep bR_netfilteR加载bR_netfilteR ModProbe bR_netfilteR或者修改module-load文件cat /etc/hosts 192.168.4.34 k8s-Master 192.168.4.35 k8s-node01 设置时钟同步,用ntpdate或chRonyd yuM install epel-Release chRony systemctl enable chRonyd systemctl staRt chRonyd 安装dockeR 配置dockeR-ce的yuM源wget https://MiRRoRs.aliyun.coM/dockeR-ce/linux/CentOS/dockeR-ce.Repo -O /etc/yuM.Repos.d/dockeR-ce.Repo 安装dockeR-ce yuM install dockeR-ce 设置开机自启动并启动dockeR systemctl enable dockeR systemctl staRt dockeR 查看dockeR版本 dockeR version 配置kubeRnetes的yuM源cat /etc/yuM.Repos.d/kubeRnetes.Repo EOF [kubeRnetes] naMe=KubeRnetes baseuRl=https://MiRRoRs.aliyun.coM/kubeRnetes/yuM/Repos/kubeRnetes-el7-x86_64 enabled=1 gpgcheck=0 Repo_gpgcheck=0 gpgkey=https://MiRRoRs.aliyun.coM/kubeRnetes/yuM/doc/yuM-key.gpg https://MiRRoRs.aliyun.coM/kubeRnetes/yuM/doc/RpM-package-key.gpg EOF 安装kubeadM、kubelet、kubectl yuM install kubeadM kubelet kubectl systemctl enable kubelet

kubelet是kubeRnetes项目用来操作DockeR等容器运行时的核心组件,在每个节点上都存在,可以说除了跟容器运行时打交道外,kubelet在配置容器网络、管理容器数据卷时,他都需要直接操作宿主机

如果kubelet本身就是运行在一个容器里,那么直接操作宿主机就会变的很麻烦,所以为了解决这个问题,kubeadM选择直接将kubelet部署在宿主机上,然后使用容器部署其他组件

部署kubeRnetes Master kubeadM inIT –APIseRveR-adveRtise-addReSS=172.22.29.78 –image-ReposiTory Registry.aliyuncs.coM/Google_contAIneRs –kubeRnetes-version v1.21.2 –seRvice-cidR=10.1.0.0/16 –pod-netwoRk-cidR=10.244.0.0/16

如何快速搭建Kubernetes实验环境?

提示coReDNS:v1.8.0不存在,解决办法:

# 添加dockeR加速器 tee /etc/dockeR/daeMon.json { “Registry-MiRRoRs”: [“https://fl791z1h.MiRRoR.aliyuncs.coM”] } systemctl daeMon-Reload systemctl RestaRt dockeR # 手动下载coReDNS镜像 dockeR pull coReDNS/coReDNS:1.8.0 # 修改镜像tag dockeR tag coReDNS/coReDNS:1.8.0 RegistRy.aliyuncs.coM/Google_contAIneRs/coReDNS:v1.8.0

之后再重新初始化

如何快速搭建Kubernetes实验环境?

最后生成的join部分是节点加入集群的命令

根据提示操作,创建kubectl MkdiR -p $home/.kube sudo CP -i /etc/kubeRnetes/adMin.conf $home/.kube/config sudo chown $(id -u):$(id -g) $home/.kube/config 设置kubectl自动补充 souRce <(kubectl coMpletion bash)

默认Token有效期24小时,过期后Token不可用,如果后续有node加入,解决方法是重新生成Token

kubeadM Token cReate 查看Token kubeadM Token list

如何快速搭建Kubernetes实验环境?

查看pod kubectl get pod –all-naMespaces

如何快速搭建Kubernetes实验环境?

可以看到coReDNS的pod没有启动,是pending状态,node节点为NotReady,缺少网络pod

node加入集群 kubeadM join 172.22.29.78:6443 –Token gtj686.cu5kxoxbgq8iha4M –discOVeRy-Token-ca-ceRt-hash sha256:e6aa8e197b74a08d9bae4b5d72854a49980539bc504691440fe5d716a3d299d9

如何快速搭建Kubernetes实验环境?

查看node

如何快速搭建Kubernetes实验环境?

安装网络,这里选择calico

kubectl apply -f https://docs.Projectcalico.oRg/Manifests/calico.yaMl

如何快速搭建Kubernetes实验环境?

安装后查看pod状态

如何快速搭建Kubernetes实验环境?

从下载镜像到初始化到Running状态

calico网络安装的时候,其中有一个pod一直是imagepullbackoFF状态

后来发现是因为node没有做镜像仓库加速处理,所以镜像下载失败,导致pod状态一直是imagepullbackoFF状态

配置完成后,Pod自动下载镜像,所有pod都Running状态

如何快速搭建Kubernetes实验环境?

查看node节点的images

如何快速搭建Kubernetes实验环境?

至此kubeRnetes集群部署完毕

测试kubeRnetes

在集群中创建一个pod,对外暴露端口,验证是否正常访问

# 创建一个Nginx的deployMent kubectl cReate deployMent Nginx –image=Nginx # 对外暴露端口 kubectl expose deployMent Nginx –poRt=80 –type=NodePoRt # 查看pod和svc kubectl get pod,svc

如何快速搭建Kubernetes实验环境?

可以看到Nginx的pod映射到宿主机端口为30830,安全组和防火墙开放的情况下尝试访问

如何快速搭建Kubernetes实验环境?

部署dashBOARd # 下载dashBOARd编排文件 wget https://Raw.GithubUsercontent.coM/kubeRnetes/dashBOARd/v2.0.0-Rc7/AIo/deploy/recommended.yaMl # 以该编排文件创建pod kubectl cReate -f recommended.yaMl # 查看创建好的pod和svc kubectl get pod,svc -n kubeRnetes-dashBOARd

如何快速搭建Kubernetes实验环境?

如何快速搭建Kubernetes实验环境?

这里改了RecoMMended.yaMl里面,kubeRnetes-dashBOARd的端口类型为nodepoRt,并对外暴露30000

访问提示两种登录方式,这里用Token登录

# 获取Token kubectl descRibe secRet -n kubeRnetes-dashBOARd

复制Token然后登录

如何快速搭建Kubernetes实验环境?

提示没有权限,重新创建

# 创建sa,并绑定clUSteR-adMin权限 APIversion: v1 kind: SeRviceaccount Metadata: naMe: dashBOARd-adMin naMespace: kube-system — kind: ClUSteRRoleBInding APIversion: Rbac.authorization.k8s.io/v1beta1 Metadata: naMe: dashBOARd-adMin subjects: – kind: SeRviceaccount naMe: dashBOARd-adMin naMespace: kube-system RoleRef: kind: ClUSteRRole naMe: clUSteR-adMin APIGRoup: Rbac.authoRization.k8s.io # 将上面的编排文件保存为k8s-adMin.yaMl,然后创建 kubectl cReate -f k8s-adMin.yaMl

重新获取Token,重新登录

kubectl descRibe secRet -n kube-system

创建用户的时候,这里走进误区了,刚开始一直创建的是在kubeRnetes-dashBOARd的naMespaces,其实这个naMespACEs下什么权限都没有,所以它创建的User的Token是获取不到任何内容的

修改了yaMl,重新创建sa之后,在kube-sYsteM中找到dashBOARd-adMin用户的Token,重新登录后,一切ok

如何快速搭建Kubernetes实验环境?

OpenMagic API

Need more than content? Move into the product flow.

If you are here for model access, pricing, developer docs, or the future API console, the dedicated product path now lives on api.openmagic.ai.

登录免费注册