写点什么

5 分钟带你在本地搭建一套云原生实验环境

作者:谢烟客
  • 2022-11-22
    北京
  • 本文字数:2104 字

    阅读完需:约 7 分钟

5 分钟带你在本地搭建一套云原生实验环境

要学习云原生的技术,例如:kubernetes、Istio 等,搭建一个自己可以随时进行实验的 k8s 环境是必不可少的,但是让一个新手同学进行 k8s 集群的搭建,即使有 kubeadm 进行加持也是很难完成的,刚要开始云原生之旅就夭折在了环境搭建上,显得十分的可惜。这里介绍一个我本人常用的搭建实验环境的方法,以便帮助广大新手同学可以快速走上云原生之路,本文对于很多已经有一定 k8s 基础的同学也可以帮助到你在本地快速的搭建自己的实验环境进行新版本特性的验证与学习。

前置准备

docker 的安装

你本机电脑中需要已经安装好了 docker,如果 docker 还没有安装请按照 docker 的官方的安装文档进行搭建,docker 的安装并不复杂如果可以访问这个地址,跟着操作就可以完成

kind 的安装

  1. 下载 kind 的 v0.17.0 版本,下载地址 如下图,下载时根据你自己电脑的操作系统类型及处理器架构进行相应下载

  2. 下载完毕后将其放入到你操作系统的环境变量配置的目录中即可,这里需要注意的是 kind v0.17.0 最低支持安装 k8s 的版本为 1.19,如果要搭建更之前版本的 k8s 实验环境,请下载 kind v0.16.0 或者更之前的 kind 版本



kind 的 docker image 下载

这里我选择了目前的稳定 k8s v1.24.7 版本

docker pull kindest/node:v1.24.7@sha256:577c630ce8e509131eab1aea12c022190978dd2f745aac5eb1fe65c0807eb315
复制代码

如果要安装其他版本的 k8s 集群将 docker pull 后面的内容替换为 下面列表中的镜像名称即可:


  • 1.25: kindest/node:v1.25.3@sha256:f52781bc0d7a19fb6c405c2af83abfeb311f130707a0e219175677e366cc45d1

  • 1.24: kindest/node:v1.24.7@sha256:577c630ce8e509131eab1aea12c022190978dd2f745aac5eb1fe65c0807eb315

  • 1.23: kindest/node:v1.23.13@sha256:ef453bb7c79f0e3caba88d2067d4196f427794086a7d0df8df4f019d5e336b61

  • 1.22: kindest/node:v1.22.15@sha256:7d9708c4b0873f0fe2e171e2b1b7f45ae89482617778c1c875f1053d4cef2e41

  • 1.21: kindest/node:v1.21.14@sha256:9d9eb5fb26b4fbc0c6d95fa8c790414f9750dd583f5d7cee45d92e8c26670aa1

  • 1.20: kindest/node:v1.20.15@sha256:a32bf55309294120616886b5338f95dd98a2f7231519c7dedcec32ba29699394

  • 1.19: kindest/node:v1.19.16@sha256:476cb3269232888437b61deca013832fee41f9f074f9bed79f57e4280f7c48b7

前置验证

docker 服务验证

# docker --version
Docker version 20.10.21, build baeda1f
复制代码

kind 服务验证

# kind version
kind v0.17.0 go1.19.2 linux/amd64
复制代码


如果输入以上两行命令后都得到了 docker 与 kind 的版本输出,则表明此时已经准备好了本地 k8s 集群安装的条件

k8s 本地环境安装

声明 kind 的安装清单

将以下的内容复制到 cluster.yaml 文件中,文件名其实可以自定义

name: istio-labnetworking:  ipFamily: ipv4  podSubnet: "10.244.0.0/16"  serviceSubnet: "10.96.0.0/16"  kubeProxyMode: "ipvs"nodes:- role: control-plane  image: kindest/node:v1.24.7@sha256:577c630ce8e509131eab1aea12c022190978dd2f745aac5eb1fe65c0807eb315- role: worker  image: kindest/node:v1.24.7@sha256:577c630ce8e509131eab1aea12c022190978dd2f745aac5eb1fe65c0807eb315  extraPortMappings:  - containerPort: 30080    hostPort: 30080  - containerPort: 30443    hostPort: 30443  kubeadmConfigPatches:  - |    kind: JoinConfiguration    nodeRegistration:      kubeletExtraArgs:        node-labels: "ingress=true"- role: worker  image: kindest/node:v1.24.7@sha256:577c630ce8e509131eab1aea12c022190978dd2f745aac5eb1fe65c0807eb315  kubeadmConfigPatches:  - |    kind: JoinConfiguration    nodeRegistration:      kubeletExtraArgs:        node-labels: "egress=true"- role: worker  image: kindest/node:v1.24.7@sha256:577c630ce8e509131eab1aea12c022190978dd2f745aac5eb1fe65c0807eb315
复制代码

这里声明的是一个控制节点三个工作节点的 k8s 清单,其中两个节点分别标记的 ingress,与 egress 标签用于进行集群的出入口收敛,在 ingress 节点上我们将 k8s 集群容器的 30080、30443 端口映射到了宿主机电脑上的 30080、30443 端口上,用于通过本机访问 k8s 集群中的服务,这里为了方便大家快速搭建 k8s 集群使用的 kind 自己默认的容器网络插件 kind-net,如果有需要自定义的同学也可以通过配置关闭 kind-net 后自己在另行安装所需的容器网络插件

安装本地 k8s 集群

# kind create cluster --config ./cluster.yaml
复制代码

安装 kubectl

根据安装文档 安装对应操作系统及处理器架构的 kubectl

本地 k8s 集群验证

如果执行如下命令,且输出中的 status 均为 ready,则表明本地 k8s 集群已经顺利安装完毕

# kubectl get no
NAME STATUS ROLES AGE VERSIONistio-lab-control-plane Ready control-plane 20h v1.24.7istio-lab-worker Ready <none> 20h v1.24.7istio-lab-worker2 Ready <none> 20h v1.24.7istio-lab-worker3 Ready <none> 20h v1.24.7
复制代码


发布于: 刚刚阅读数: 5
用户头像

谢烟客

关注

对发送的内容保守一点,收到的内容宽容一点 2017-10-17 加入

立志于写代码的架构一枚

评论

发布
暂无评论
5 分钟带你在本地搭建一套云原生实验环境_Kubernetes_谢烟客_InfoQ写作社区