全平台通用使用 kind 快速搭建 k8s 开发环境,坑已踩(无坑版)

这篇具有很好参考价值的文章主要介绍了全平台通用使用 kind 快速搭建 k8s 开发环境,坑已踩(无坑版)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

全平台通用使用 kind 快速搭建 k8s 开发环境,坑已踩(无坑版),kubernetes,# k8s operator,kind,kubernetes,云原生,linux,运维,容器

博客原文

什么是 Kind

Kind(Kubernetes in Docker) 是一个 Kubernetes 孵化项目,Kind 是一套开箱即用的 Kubernetes 环境搭建方案。顾名思义,就是将 Kubernetes 所需要的所有组件,全部部署在一个 Docker 容器中,可以很方便的搭建 Kubernetes 集群。

Kind 已经广泛的应用于 Kubernetes 上游及相关项目的 CI 环境中,官方文档中也把 Kind 作为一种本地集群搭建的工具推荐给大家。

项目地址:https://github.com/kubernetes-sigs/kind

Kind 可以做什么?

  1. 快速创建一个或多个 Kubernetes 集群
  2. 支持部署高可用的 Kubernetes 集群
  3. 支持从源码构建并部署一个 Kubernetes 集群
  4. 可以快速低成本体验一个最新的 Kubernetes 集群,并支持 Kubernetes 的绝大部分功能
  5. 支持本地离线运行一个多节点集群

Kind 有哪些优势?

  1. 最小的安装依赖,仅需要安装 Docker 即可
  2. 使用方法简单,只需 Kind Cli 工具即可快速创建集群
  3. 使用容器来模似 Kubernetes 节点
  4. 内部使用 Kubeadm 的官方主流部署工具
  5. 通过了 CNCF 官方的 K8S Conformance 测试

安装 docker

让apt可以支持HTTPS

$ apt install apt-transport-https ca-certificates curl software-properties-common -y

将官方Docker库的GPG公钥添加到系统中

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - 

# 阿里源
$ curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

将Docker库添加到APT里

# 官方源
$ add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"

# 阿里源
$ add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu focal stable"
# echo "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu focal stable" >> /etc/apt/source.list

更新包列表

$ apt update 

为了确保修改生效,让新的安装从Docker库里获取,而不是从Ubuntu自己的库里获取,执行:

$ apt-cache policy docker-ce

安装 docker-ce

$ apt install -y docker-ce

配置 docker 阿里源镜像地址

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
	"registry-mirrors": ["https://nol6uuul.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

踩坑: 我用了阿里云的镜像地址反而无法拉取 kind 的镜像, 此时需要删除阿里源

检查 docker 运行状态

$ systemctl status docker 
● docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2024-01-05 16:02:08 CST; 17min ago
TriggeredBy: ● docker.socket
       Docs: https://docs.docker.com
   Main PID: 241165 (dockerd)
      Tasks: 12
     Memory: 29.6M
     CGroup: /system.slice/docker.service
             └─241165 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Jan 05 16:02:08 master1 dockerd[241165]: time="2024-01-05T16:02:08.136300388+08:00" level=info msg="Docker daemon" commit=311b9ff graphdriver=overla>
Jan 05 16:02:08 master1 dockerd[241165]: time="2024-01-05T16:02:08.136351488+08:00" level=info msg="Daemon has completed initialization"
Jan 05 16:02:08 master1 dockerd[241165]: time="2024-01-05T16:02:08.254789219+08:00" level=info msg="API listen on /run/docker.sock"
Jan 05 16:02:08 master1 systemd[1]: Started Docker Application Container Engine.
Jan 05 16:02:46 master1 dockerd[241165]: time="2024-01-05T16:02:46.543587374+08:00" level=warning msg="Error persisting manifest" digest="sha256:2fc>
Jan 05 16:03:38 master1 dockerd[241165]: time="2024-01-05T16:03:38.612170892+08:00" level=info msg="ignoring event" container=6d8d34f0066bde04811038>
Jan 05 16:04:50 master1 dockerd[241165]: time="2024-01-05T16:04:50.406175352+08:00" level=info msg="ignoring event" container=504632135d04b87b5ed83f>
Jan 05 16:05:35 master1 dockerd[241165]: time="2024-01-05T16:05:35.656175212+08:00" level=error msg="Error setting up exec command in container 5046>
Jan 05 16:09:52 master1 dockerd[241165]: time="2024-01-05T16:09:52.944844810+08:00" level=info msg="Layer sha256:a87ab3c028db3c73f360b49c9dcd171e236>
Jan 05 16:09:52 master1 dockerd[241165]: time="2024-01-05T16:09:52.946428917+08:00" level=info msg="Layer sha256:82ae998286b2bba64ce571578647adcabef>
lines 1-21/21 (END)

安装 kubectl

apt 安装

# 安装依赖
apt install apt-transport-https ca-certificates -y

# 编辑镜像源文件,文件末尾加入阿里云k8s镜像源配置
echo 'deb https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial main' >> /etc/apt/sources.list
#更新证书
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add
#更新源
apt update

apt-get install -y kubectl

二进制安装

curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x kubectl
mv kubectl /usr/bin/

配置命令行自动补全(可选)

apt install bash-completion -y
cat << EOF >> ~/.profile
alias k='kubectl'
source <(kubectl completion bash)
complete -F __start_kubectl k
EOF

source ~/.profile

安装 Kind

首先进到 官网, 获取你操作系统的 kind 版本

本教程提供 Linux 下的二进制安装

来自官网的最新安装脚本:

# For AMD64 / x86_64
[ $(uname -m) = x86_64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.20.0/kind-linux-amd64
# For ARM64
[ $(uname -m) = aarch64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.20.0/kind-linux-arm64
chmod +x ./kind
sudo mv ./kind /usr/local/bin/kind

使用 kind 创建集群

搭建一主三从集群 1c3w

1 control plane and 3 worker

cluster.yaml:

kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
  extraPortMappings:
  - containerPort: 31000  # 将主机 31000 端口映射到容器的 31000 端口
    hostPort: 31000
    listenAddress: "0.0.0.0" # Optional, defaults to "0.0.0.0"
    protocol: tcp # Optional, defaults to tcp
- role: worker
- role: worker
- role: worker

**注意: ** 因为 kind 搭建的集群也是容器, 我们要访问容器的服务, 我们需要把集群的 Service 暴露为 NodePort 类型进行访问, (NodePort 范围30000~32767)

$ kind create cluster --config cluster.yaml --name 1c3w
Creating cluster "1c3w" ...
 ✓ Ensuring node image (kindest/node:v1.27.3) 🖼
 ✓ Preparing nodes 📦 📦 📦 📦
 ✓ Writing configuration 📜
 ✓ Starting control-plane 🕹️
 ✓ Installing CNI 🔌
 ✓ Installing StorageClass 💾
 ✓ Joining worker nodes 🚜
Set kubectl context to "kind-1c3w"
You can now use your cluster with:

kubectl cluster-info --context kind-1c3w

Thanks for using kind! 😊

创建 service

# 更换 context
$ kubectl cluster-info --context kind-1c3w

# 创建一个 nginx 的 deploy 测试服务
$ k create deploy nginx --image=nginx

# 冗余部署实现高可用
$ k scale deployment nginx --replicas 3

# 暴露服务
$ k expose deployment nginx --name nginx --port=80 --target-port=80 --type=NodePort

# 修改 NodePort 端口为 31000 让主机能够访问
$ k edit deployment nginx
......
  ports:
  - nodePort: 31000  # 修改
    port: 80
    protocol: TCP
    targetPort: 80
....

$ k get svc
NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)        AGE
kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP        6m5s
nginx        NodePort    10.96.91.4   <none>        80:31000/TCP   3m7s

验证服务

$ curl localhost:31000
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

也可在浏览器输入<虚拟机 ip>:31000

全平台通用使用 kind 快速搭建 k8s 开发环境,坑已踩(无坑版),kubernetes,# k8s operator,kind,kubernetes,云原生,linux,运维,容器文章来源地址https://www.toymoban.com/news/detail-824762.html

到了这里,关于全平台通用使用 kind 快速搭建 k8s 开发环境,坑已踩(无坑版)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • K8S系列文章之 Kind 部署K8S的 服务发布

    下载  https://github.com/kubernetes-sigs/kind/releases/download/0.17.0/kind-linux-amd64 执行以下命令:  之前需要先在本地主机安装好docker  kubectl是Kubernetes的命令行工具,可以让我们通过命令访问、操作、管理Kubernetes集群。brew安装方法如下 安装完毕后,查看kubectl版本信息,确认安装成功

    2024年02月14日
    浏览(36)
  • Kind创建k8s - JAVA操作控制

    kind 是 Kubernetes in Docker 的简写,是一个使用 Docker 容器作为 Nodes,在本地创建和运行 Kubernetes 群集的工具。适用于在本机创建 Kubernetes 群集环境进行开发和测试。 官网:https://kind.sigs.k8s.io/ kind 由以下组件构成: Go packages implementing cluster creation, image build, etc. A command line interfac

    2024年02月03日
    浏览(48)
  • k8s简介及虚拟机快速搭建k8s集群

    1.1、部署方式的变迁 传统部署时代: 在物理服务器上运行应用程序 无法为应用程序定义资源边界 导致资源分配问题 例如,如果在物理服务器上运行多个应用程序,则可能会出现一个应用程序占用大部分资源的情况, 结果可能导致其他应用程序的性能下降。 一种解决方案是

    2024年02月12日
    浏览(66)
  • k8s的yaml文件中kind类型详解

    在Kubernetes(k8s)的YAML语法中,kind是一种重要的,它用于指定Kubernetes资源的类型。根据Kubernetes官方文档,以下是kind可能的取值: Deployment:用于定义应用程序的声明式更新。 StatefulSet:用于有状态应用程序的声明式更新和管理。 DaemonSet:用于在集群中运行一个pod的声

    2024年02月06日
    浏览(35)
  • Kind | Kubernetes in Docker 把k8s装进docker!

    有点像杰克船长的黑珍珠 目录 零、说明 一、安装 安装 Docker 安装 kubectl 安装 kind 二、创建/切换/删除集群 创建 切换 删除 将镜像加载到 kind 群集中 官网:kind Kind: Kubernetes in Docker 的简称。kind 是一个使用 Docker 容器“节点”运行本地 Kubernetes 集群的工具。kind 主要设计用于

    2024年02月16日
    浏览(35)
  • k8s简介、虚拟机快速搭建k8s集群、集群管理方式及K8S工作原理和组件介绍

    1.1、部署方式的变迁 传统部署时代: 在物理服务器上运行应用程序 无法为应用程序定义资源边界 导致资源分配问题 例如,如果在物理服务器上运行多个应用程序,则可能会出现一个应用程序占用大部分资源的情况, 结果可能导致其他应用程序的性能下降。 一种解决方案是

    2024年02月12日
    浏览(69)
  • Kubernetes(K8S)快速搭建typecho个人博客

    Kubernetes(K8S)快速搭建typecho个人博客 K8S集群环境,搭建教程参考腾讯云Lighthouse组建跨地域Kubernetes集群 K8S集群面板,搭建教程参考Kubernetes集群管理面板的安装及使用 - 青阳のblog-一个计算机爱好者的个人博客 (hipyt.cn) 如果没有集群或者服务器不够可以通过传送门新购。 腾讯

    2024年02月04日
    浏览(57)
  • k8s的yaml文件中的kind类型都有哪些?(清单版本)

    在操作kubernetes的过程中,我们接触到的yaml文件中的kind类型有很多。他们代表了kubernetes的不同类型的对象,了解了kind的类型,也就相当于了解了k8s都有哪些类型的对象。 序号 类型 简述 1 Pod 一个Kubernetes中最基本的资源类型,它用于定义一个或多个容器的共同运行环境。 2

    2024年01月16日
    浏览(68)
  • K8s环境下监控告警平台搭建及配置

    Promethues是可以单机搭建的,参考 prometheus入门 [1] 本文是就Promethues+Grafana在K8s环境下的搭建及配置 启动minikube minikube start 安装helm 使用Helm Chart 安装 Prometheus Operator: helm install prometheus-operator stable/prometheus-operator -n monitoring 报错: 根据 Kubernetes和微服务监控体系 [2] (搜索\\\"降低我们

    2024年02月13日
    浏览(55)
  • 在k8s集群内搭建Prometheus监控平台

    Prometheus由SoundCloud发布,是一套由go语言开发的开源的监控报警时间序列数据库的组合。 Prometheus的基本原理是通过HTTP协议周期性抓取被监控组件的状态,任意组件只要提供对应的HTTP接口就可以接入监控。不需要任何SDK或者其他的集成过程。这样做非常适合做虚拟化环境监控

    2024年02月14日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包