K8s入门:Docker,kubectl,Kind的安装

这篇博客详细记录了K8s入门过程,包括如何在虚拟机环境下关闭Hyper-V,系统内核隔离设置,以及安装Docker的曲折经历。在遇到阿里云服务器下载Docker失败的问题后,通过修改命令地址成功下载。最后,通过手动下载并上传到虚拟机完成了kind的安装。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安装Kind:使用K8s

 

开启虚拟机

 

关闭Hyper-V

系统设置中搜索“内核隔离”,将其关闭

基于虚拟化的安全设置为“已禁用”

 

失败!(依然无法启动虚拟机)

重连 - 使用 阿里云服务器

报错没有文件

打开连接:Index of /docker-ce/linux/centos/:发现是没有相关文件链接

修改命令地址:

wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum/repos.d/docker-ce.repo

成功!

安装docker

 

需要依赖,各种解决方案尝试都不行

失败!

怀疑是系统原因(不是mac系统、不能用阿里云服务器、···),还是要用本地虚拟机

于是决定重装本地vm workstation===》

经过两次安装失败,终于找到正确的 vm workstation15 安装包及注册码。


 

本地kind安装日志:

docker安装,kubectl安装

[root@localhost ~]# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
--2020-02-19 18:26:54--  https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
mirrors.aliyun.com (mirrors.aliyun.com)... 119.96.207.98, 119.96.207.99, 116.211.224.241, ...
100%[======================================>] 2,640       --.-K/s 鐢ㄦ椂 0s      

2020-02-19 18:26:54 (627 MB/s) - 宸蹭繚瀛?鈥?etc/yum.repos.d/docker-ce.repo鈥?[2640/2640])

[root@localhost ~]# yum install -y docker-ce-18.06.1.ce-3.el7
已加载插件:fastestmirror
Repository base is listed more than once in the configuration
Repository updates is listed more than once in the configuration
Repository extras is listed more than once in the configuration
Repository centosplus is listed more than once in the configuration
base                                                                                    | 3.6 kB  00:00:00     
docker-ce-stable                                                                        | 3.5 kB  00:00:00     
extras                                                                                  | 2.9 kB  00:00:00     
google                                                                                  | 1.3 kB  00:00:00     
updates                                                                                 | 2.9 kB  00:00:00     
(1/7): docker-ce-stable/x86_64/updateinfo                                               |   55 B  00:00:00     
(2/7): base/7/x86_64/group_gz                                                           | 165 kB  00:00:00     
(3/7): docker-ce-stable/x86_64/primary_db                                               |  38 kB  00:00:00     
(4/7): extras/7/x86_64/primary_db                                                       | 159 kB  00:00:00     
(5/7): base/7/x86_64/primary_db                                                         | 6.0 MB  00:00:01     
(6/7): google/primary                                                                   | 1.7 kB  00:00:00     
(7/7): updates/7/x86_64/primary_db                                                      | 6.7 MB  00:00:03     
Determining fastest mirrors
 * base: mirrors.cn99.com
 * extras: mirrors.cn99.com
 * updates: mirrors.163.com
google                                                                                                     3/3
正在解决依赖关系
--> 正在检查事务
---> 软件包 docker-ce.x86_64.0.18.06.1.ce-3.el7 将被 安装
--> 正在处理依赖关系 container-selinux >= 2.9,它被软件包 docker-ce-18.06.1.ce-3.el7.x86_64 需要
--> 正在处理依赖关系 libcgroup,它被软件包 docker-ce-18.06.1.ce-3.el7.x86_64 需要
--> 正在检查事务
---> 软件包 container-selinux.noarch.2.2.107-3.el7 将被 安装
--> 正在处理依赖关系 selinux-policy-targeted >= 3.13.1-216.el7,它被软件包 2:container-selinux-2.107-3.el7.noarch 需要
--> 正在处理依赖关系 selinux-policy-base >= 3.13.1-216.el7,它被软件包 2:container-selinux-2.107-3.el7.noarch 需要
--> 正在处理依赖关系 selinux-policy >= 3.13.1-216.el7,它被软件包 2:container-selinux-2.107-3.el7.noarch 需要
--> 正在处理依赖关系 policycoreutils-python,它被软件包 2:container-selinux-2.107-3.el7.noarch 需要
---> 软件包 libcgroup.x86_64.0.0.41-21.el7 将被 安装
--> 正在检查事务
---> 软件包 policycoreutils-python.x86_64.0.2.5-33.el7 将被 安装
--> 正在处理依赖关系 policycoreutils = 2.5-33.el7,它被软件包 policycoreutils-python-2.5-33.el7.x86_64 需要
--> 正在处理依赖关系 setools-libs >= 3.3.8-4,它被软件包 policycoreutils-python-2.5-33.el7.x86_64 需要
--> 正在处理依赖关系 libsemanage-python >= 2.5-14,它被软件包 policycoreutils-python-2.5-33.el7.x86_64 需要
--> 正在处理依赖关系 audit-libs-python >= 2.1.3-4,它被软件包 policycoreutils-python-2.5-33.el7.x86_64 需要
--> 正在处理依赖关系 python-
<think>嗯,用户问的是“k8s怎么在docker中模拟环境”。我需要先理解用户的问题到底是什么意思。K8s指的是Kubernetes,而用户可能想了解如何在Docker环境中模拟或运行一个Kubernetes集群。可能用户是刚开始接触容器化和Kubernetes,想在自己的开发环境中搭建一个测试用的Kubernetes环境,而不需要云服务或者物理服务器。 首先,我需要确认用户的需求。用户可能希望在本地机器上使用Docker来运行Kubernetes集群,用于学习、测试或者开发。这时候,常用的工具有Minikube、Kind(Kubernetes in Docker)、或者k3s等。这些工具都是可以在Docker容器中运行Kubernetes节点的解决方案。 接下来,我需要考虑用户的技术背景。用户可能已经了解Docker的基本概念,但对Kubernetes还不熟悉,或者想了解如何在Docker内部署Kubernetes。因此,回答需要简明扼要,分步骤说明如何操作,同时解释每个步骤的作用,帮助用户理解背后的原理。 然后,我需要比较不同的工具,比如Minikube和Kind的区别。Minikube通常会创建一个虚拟机来运行单节点的Kubernetes集群,而Kind则是直接在Docker容器中运行多个节点,更轻量级,可能更适合用户提到的“在Docker中模拟环境”。因此,Kind可能是更合适的推荐。 另外,用户可能关心如何快速开始,所以需要提供具体的安装步骤和使用示例。比如,安装Kind客户端,创建集群,验证集群状态,以及部署应用的步骤。同时,需要提醒用户可能的常见问题和注意事项,比如资源分配、网络配置等。 还需要考虑用户可能遇到的困难,比如Docker环境的配置,权限问题,或者网络问题。在回答中应该包含一些故障排除的基本步骤,或者建议用户查阅相关文档。 最后,要确保回答结构清晰,步骤详细,语言通俗易懂,避免使用过于专业的术语,或者在必要时进行解释。同时,强调这些工具适合开发和测试环境,生产环境需要更稳健的解决方案。</think>以下是使用 Docker 模拟 Kubernetes(k8s)环境的详细指南: --- ### 一、核心思路 Kubernetes 是**容器编排系统**,其节点(Master/Worker)本质上是运行容器的服务器。通过 Docker 模拟 Kubernetes 环境的核心逻辑是:**用 Docker 容器虚拟化 k8s 节点**,构建一个轻量级的本地开发/测试集群。 --- ### 二、常用工具对比 | 工具名称 | 原理 | 适用场景 | 特点 | |--------------|----------------------------------------------------------------------|------------------------|-------------------------------| | **Kind** | 直接在 Docker 容器中运行 k8s 节点 | 本地开发、CI/CD 测试 | 轻量快速,无需虚拟机 | | **Minikube** | 通过虚拟机(或 Docker)创建单节点集群 | 入门学习 | 简单易用,但资源消耗较高 | | **k3d** | 基于轻量级 k3s 发行版,用 Docker 容器模拟集群 | 快速搭建多节点环境 | 专为 k3s 优化,适合边缘计算场景 | --- ### 三、以 **Kind** 为例实操 #### 步骤 1:安装依赖 - **Docker Desktop**(确保已启用 `Kubernetes` 选项) - **Kind 命令行工具**: ```bash # Linux/macOS curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.20.0/kind-linux-amd64 chmod +x ./kind sudo mv ./kind /usr/local/bin/ # Windows(通过 PowerShell) curl.exe -Lo kind-windows-amd64.exe https://kind.sigs.k8s.io/dl/v0.20.0/kind-windows-amd64 Move-Item .\kind-windows-amd64.exe C:\Windows\kind.exe ``` #### 步骤 2:创建集群 ```bash # 创建默认单节点集群(自动生成配置文件) kind create cluster --name my-k8s # 验证集群状态 kubectl cluster-info kubectl get nodes # 应显示一个名为 `kind-control-plane` 的节点 ``` #### 步骤 3:自定义集群配置(可选) 创建 `kind-config.yaml` 文件定义多节点集群: ```yaml kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 nodes: - role: control-plane # Master 节点 - role: worker # Worker 节点 1 - role: worker # Worker 节点 2 ``` 启动集群: ```bash kind create cluster --name multi-node --config kind-config.yaml ``` #### 步骤 4:部署测试应用 ```bash # 部署 Nginx kubectl create deployment nginx --image=nginx:alpine kubectl expose deployment nginx --port=80 # 查看 Pod 和 Service kubectl get pods,svc ``` #### 步骤 5:访问服务 ```bash # 将服务端口映射到本地 kubectl port-forward svc/nginx 8080:80 # 浏览器访问 http://localhost:8080 即可看到 Nginx 页面 ``` --- ### 四、关键原理剖析 1. **节点虚拟化** Kind 使用 Docker 容器模拟 k8s 节点,每个节点对应一个容器: ```bash docker ps # 查看名为 `kind-control-plane` 和 `kind-worker` 的容器 ``` 2. **网络互联** Kind 自动创建 Docker 网络,确保容器间通信: ```bash docker network ls | grep kind ``` 3. **kubeconfig 配置** Kind 会自动将集群配置写入 `~/.kube/config`,实现无缝对接 `kubectl`。 --- ### 五、常见问题解决 #### 1. 镜像拉取失败 - **现象**:Pod 状态为 `ImagePullBackOff` - **解决**:手动将镜像加载到 Kind 集群: ```bash kind load docker-image my-image:tag --name my-k8s ``` #### 2. 资源不足 - **调整 Docker 资源分配**:在 Docker Desktop 中增加 CPU/Memory 限制。 - **简化集群配置**:减少 Worker 节点数量。 #### 3. 持久化存储测试 Kind 默认使用临时存储,测试持久化卷需挂载宿主机目录: ```yaml apiVersion: v1 kind: PersistentVolume metadata: name: test-pv spec: storageClassName: manual capacity: storage: 1Gi accessModes: - ReadWriteOnce hostPath: path: "/data" # 宿主机目录需提前创建 ``` --- ### 六、适用场景与限制 #### 适合场景: - 本地开发调试 - k8s 功能验证(如 CRD、Operator 开发) - CI/CD 流水线测试 #### 局限性: - **性能差异**:容器化节点与真实物理节点存在性能偏差 - **网络限制**:某些网络策略(如 NodePort)需额外端口映射 - **存储局限**:持久化存储依赖宿主机目录挂载 --- ### 七、进阶技巧 1. **集成 Helm** 在 Kind 集群中直接部署 Helm Chart: ```bash helm install my-release bitnami/nginx ``` 2. **调试节点** 进入 Master 节点容器排查问题: ```bash docker exec -it kind-control-plane bash ``` 3. **销毁集群** ```bash kind delete cluster --name my-k8s ``` --- 通过上述方法,您可以在 **5 分钟内** 快速构建一个功能完整的 Kubernetes 沙盒环境,无需依赖云服务商或物理服务器。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值