提交 18311be2 编写于 作者: F feilong

增加kubectl/minikube/kind节

上级 20658fab
{
"node_id": "cloud_native-3e630dc8a6844e7c94343bedab4f7abc",
"node_id": "cloud_native-f22bbbe40efb4940914c5ba59021998d",
"keywords": [],
"children": [],
"export": [],
"export": [
"install.json"
],
"keywords_must": [],
"keywords_forbid": []
}
\ No newline at end of file
{
"type": "code_options",
"author": null,
"source": "install.md",
"notebook_enable": false,
"exercise_id": "3767250c65a64d4b89f714ed9185a6f2"
}
\ No newline at end of file
# 安装 kubectl
kubectl 是用来与 Kubernetes 集群通讯的命令行工具。通过 Kubectl 可以在 Kubernetes 集群上完成如下操作:
* 部署和管理应用
* 查看资源信息
* 删除和更新组件
kubectl 适配了不同操作系统不同指令架构的安装版本
* [在 Linux 上安装 Kubectl](https://kubernetes.io/zh/docs/tasks/tools/install-kubectl-linux/)
* [在 MacOS 上安装 Kebuctl](https://kubernetes.io/zh/docs/tasks/tools/install-kubectl-macos/)
* [在 Windows 上安装 Kubectl](https://kubernetes.io/zh/docs/tasks/tools/install-kubectl-windows/)
以在 MacOS 上安装 Kebuctl 为例,执行命令:
针对 Intel 芯片:
```bash
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl"
```
针对 Apple 芯片:
```bash
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/arm64/kubectl"
```
截图如下:
![](./imgs/install_kubectl.png)
依次执行如下命令配置权限:
```bash
chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl
sudo chown root: /usr/local/bin/kubectl
```
![](./imgs/install_kubectl_02.png)
使用如下两个命令分别查看版本信息:
```bash
kubectl version --client
kubectl version --client --output yaml
```
![](./imgs/install_kubectl_03.png)
以下关于 kubectl 安装说法错误的是?
## 答案
```bash
kubectl 可以直接用来直接部署 Kubernetes 集群
```
## 选项
### A
```bash
kubectl 可以删除和更新 Kubernetes 上的组件
```
### B
```bash
kubectl 可以查看 Kubernetes 集群上的资源情况
```
### C
```bash
kubectl 针对Linux/Windows/MacOS不同操作系统平台,一级不同的芯片都提供了对应的安装版本
```
\ No newline at end of file
{
"node_id": "cloud_native-11d2f89fd5a3498ba9ca55475b281b2d",
"node_id": "cloud_native-506bd8a7aa254e03b6394e15f139d9c6",
"keywords": [],
"children": [],
"export": [],
"export": [
"install_4_learning.json",
"install_minikube.json",
"minikube_commnds.json",
"start_k8s.json"
],
"keywords_must": [],
"keywords_forbid": []
}
\ No newline at end of file
{
"type": "code_options",
"author": null,
"source": "install_4_learning.md",
"notebook_enable": false,
"exercise_id": "278162c0c42641d3a539f557d7e86f05"
}
\ No newline at end of file
# 安装 kubernetes 集群的几种选择
生产环境的 kubernetes 集群安装涉及到较多细节,也不适合在个人机器上安装和学习。开发者学习 kubernetes 可以使用的环境有几种:
* 使用云厂商提供的套装
* 在云主机上自己安装和配置
* 在开发者主机上安装和配置
从成本上来说,在开发者主机上安装和配置是比较方便的。以学习为目的,在个人主机上安装和配置 kubernetes 有两个可选的套装
* [kind](https://kind.sigs.k8s.io/docs/): kind 让你能够在本地计算机上运行 Kubernetes。 kind 要求你安装并配置好 Docker。
* [minikube](https://minikube.sigs.k8s.io/): 与 kind 类似,minikube 是一个工具, 能让你在本地运行 Kubernetes。 minikube 在你本地的个人计算机(包括 Windows、macOS 和 Linux PC)运行一个单节点的 Kubernetes 集群,以便你来尝试 Kubernetes 或者开展每天的开发工作。
kind 或者 minikube 不会安装 kubectl,因此kubectl是需要独立安装的。生产环境上的集群安装和配置则不建议使用 kind 或者 minikube.
以下关于安装 kubernetes 集群方案的描述错误的是?
## 答案
```bash
生成环境上也应该使用 kind 或者 minikube 安装 kubernetes 集群
```
## 选项
### A
```bash
在学习阶段可以使用 minikube 或者kind 在开发机上安装 kubernetes 集群
```
### B
```bash
以学习为目的,kind 和 minikube 都是可选的简化安装 kubernetes 集群的方式
```
### C
```bash
无论安装 kind 还是 minikube,都应该安装 kubectl ,通过 kubectl 与集群通讯
```
{
"type": "code_options",
"author": null,
"source": "install_minikube.md",
"notebook_enable": false,
"exercise_id": "511d5df92425424197302efa19cad475"
}
\ No newline at end of file
# 使用 minikube 安装 kubernetes
安装 minikube 需要系统满足以下配置
* CPU:2核+
* 内存:2GB+
* 磁盘空间:20GB+
* 安装了至少一种虚拟机环境,可选的有Docker,xhyve、VirtualBox、VMwareFusion、hyperV、KVM
不同环境下的 [minikube 安装指引](https://minikube.sigs.k8s.io/docs/start/)
例如,MacOS的amd版本下载:
```bash
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-darwin-amd64
```
然后将minikube安装到系统目录:
```bash
sudo chmod +x ./minikube-darwin-amd64
sudo install minikube-darwin-amd64 /usr/local/bin/minikube
```
测试下版本号:
```bash
minikube version
```
![](./img/minikube_version.png)
安装成功。以下对 minikube 说法错误的是?
## 答案
```bash
minikube 无法在Mac上运行
```
## 选项
### A
```bash
minikube 的版本号信息里还带有对应的 git 仓库的版本commit号
```
### B
```bash
minikube 依赖安装了Docker环境
```
### C
```bash
minikube 针对不同的操作系统和不同的芯片构架提供了不同的版本。
```
{
"type": "code_options",
"author": null,
"source": "minikube_commnds.md",
"notebook_enable": false,
"exercise_id": "0ba6346aee9042ea8a44a443be4ed11a"
}
\ No newline at end of file
# 熟悉 minikube 命令体系
学习一个新工具,先大致熟悉它的命令体系,在后续使用中按图索骥是一种常见的方式。先看一下 minikube 有哪些命令选项,输入 `minikube` 直接回车,可以看到
![](./img/minikube_options.png)
首先是一组基础命令,用来开始、暂停、恢复、停止、删除 kubernetes 集群:
```bash
Basic Commands:
start Starts a local Kubernetes cluster
status Gets the status of a local Kubernetes cluster
stop Stops a running local Kubernetes cluster
delete Deletes a local Kubernetes cluster
dashboard 访问在 minikube 集群中运行的 kubernetes dashboard
pause pause Kubernetes
unpause 恢复 Kubernetes
```
其次是一组镜像管理命令
```bash
Images Commands:
docker-env 配置环境以使用 minikube's Docker daemon
podman-env 配置环境以使用 minikube's Podman service
cache Add, delete, or push a local image into minikube
image Manage images
```
接着是配置和插件管理命令
```bash
Configuration and Management Commands:
addons Enable or disable a minikube addon
config Modify persistent configuration values
profile Get or list the current profiles (clusters)
update-context Update kubeconfig in case of an IP or port change
```
还有几个其他分组命令。以下关于 minikube 命令说法错误的是?
## 答案
minikube 的命令风格是 `minikube -xxx`
## 选项
### A
使用 minikube 命令可以快速开始、暂停、恢复、停止、删除 kubernetes 集群
### B
minikube 命令包含一组镜像管理子命令
### C
minikube 命令包含一组插件和配置管理命令
\ No newline at end of file
{
"type": "code_options",
"author": null,
"source": "start_k8s.md",
"notebook_enable": false,
"exercise_id": "d9a94bb8d8ff4d149ba2c02481ddef6c"
}
\ No newline at end of file
# 使用 minikube 启动k8s集群
使用 minikube 启动 k8s 环境的命令如下:
```bash
minikube start --vm-driver=docker --image-mirror-country='cn'
```
参数说明:
* `--vm-driver=docker` 指定了使用 docker 作为虚拟化驱动
* `--image-mirror-country='cn'` 配置了使用中文dockcer镜像仓库,否则会很慢
启动过程截图:
![](./img/minikube_start.png)
安装过程中可能会遇到各种问题,例如下图遇到了镜像下载失败使用回退版本的策略
![](./img/minikube_start_success.png)
幸运的是,启动成功了,提示 `kubectl` 已经配置到和`minikube` k8s 集群连接:
```bash
Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default
```
使用命令`kubectl cluster-info --context minikube` 查看下集群的信息
![](./img/minikube_cluster_info.png)
以下对 minikube 启动说法错误的是?
## 答案
minikube 启动k8s环境不需要下载数据
## 选项
### A
使用 `minikube status` 命令可以查看k8s环境状态
```bash
minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured
```
### B
国内用户配置 --image-mirror-country='cn' 可以加速镜像下载
### C
通过选项 --vm-driver 可以指定虚拟机的驱动,例如virualbox
\ No newline at end of file
{
"node_id": "cloud_native-cc3ba40cae784d5d923e90ae1553bdaf",
"node_id": "cloud_native-7788644c8b714ed9a0e04caa25934ce2",
"keywords": [],
"children": [],
"export": [],
"export": [
"start_k8s.json",
"install_kind.json",
"get_info.json"
],
"keywords_must": [],
"keywords_forbid": []
}
\ No newline at end of file
{
"type": "code_options",
"author": null,
"source": "get_info.md",
"notebook_enable": false,
"exercise_id": "b267edaeac6d49d2bde26232a9e2cba0"
}
\ No newline at end of file
# 查看 kind 创建的 k8s 集群信息
通过命令`kind get clusters` 查看 kind 创建的集群列表
![](./img/kind_get_clusters.png)
通过命令`kind get nodes --name test` 查看 kind 创建的节点列表
![](./img/kind_get_nodes.png)
可以看到test集群下的单节点 `test-control-plane`
k8s 集群的节点包含`Control Plane``Worker` 两种类型。例如使用命令`minikube status`查看之前`minikube`创建的集群信息,可以看到类型也是 Control Plane.
```bash
minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured
```
以下关于 cluster 和 nodes 说法错误的是?
## 答案
一个 k8s cluster 只能有一个 node
## 选项
### A
可以使用 minikube 和 kind 创建多个cluster
### B
使用 minikube 和 kind 创建的一个cluster 可以包含1个或者多个 nodes
### C
k8s 的 node 包含 `Control Plane``Worker` 两种类型
{
"type": "code_options",
"author": null,
"source": "install_kind.md",
"notebook_enable": false,
"exercise_id": "34ae63ea33ab4500844b158d26eb8c6a"
}
\ No newline at end of file
# 安装 kind
kind 是另一个在开发机上快速安装 kubernetes 的管理工具。使用 kind 需要安装了 docker。这里是它的安装指南[kind/quick-start](https://kind.sigs.k8s.io/docs/user/quick-start/).
MacOS 上使用 brew 安装 kind 的相对简单
```bash
brew install kind
```
Window上如果使用 choco 包管理工具安装 kind 也比较简单:
```bash
choco install kind
```
Linux 上安装 kind 可以直接从二进制发布包安装
```bash
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.12.0/kind-linux-amd64
chmod +x ./kind
mv ./kind /some-dir-in-your-PATH/kind
```
最新的版本号,可以从这里查看:https://github.com/kubernetes-sigs/kind/releases
安装成功:
![](./img/kind_install.png)
版本信息:
![](./img/kind_version.png)
子命令列表
![](./img/kind_commands.png)
以下对安装 kind 说法错误的是?
## 答案
kind 在安装中也会直接安装 kubectl
## 选项
### A
kind 不依赖虚拟机,直接使用 docker 来构建 k8s
### B
kind 直接子命令选项比 minikube 少
### C
kind 和 minikube 都可以用来创建 k8s 单机集群
{
"type": "code_options",
"author": null,
"source": "start_k8s.md",
"notebook_enable": false,
"exercise_id": "585600fc1b0e4894baf2066148693be6"
}
\ No newline at end of file
# 使用 kind 创建k8s 并启动
使用如下的命令创建 k8s 集群
```bash
kind create cluster --name test
```
创建一个 k8s 集群
![](./img/kind_start.png)
同样的,kind 提示了可以使用 kubectl 获取集群信息
```bash
Set kubectl context to "kind-test"
You can now use your cluster with:
kubectl cluster-info --context kind-test
```
使用命令`kubectl cluster-info --context kind-test` 测试一下:
![](./img/kind_cluster_info.png)
以下说法错误的是?
## 答案
kind 创建本地 k8s 集群会和 minikube 创建的 k8s 集群冲突
## 选项
### A
`kind create` 会创建并启动k8s本地集群
### B
kind 创建集群时可以通过参数`--name xxx`指定名字
### C
对于 kubectl 来说,kind 和 minikube 创建集群是等价的
{
"node_id": "cloud_native-4c92cae2d6634c59bfef877cf8500f61",
"keywords": [],
"children": [],
"export": [],
"keywords_must": [],
"keywords_forbid": []
}
\ No newline at end of file
{
"node_id": "cloud_native-8611bbf8e1224f1dae0ed6bf20c6eed1",
"keywords": [],
"children": [],
"export": [],
"keywords_must": [],
"keywords_forbid": []
}
\ No newline at end of file
{
"node_id": "cloud_native-be3fffb284e242489400a9c65ae1b217",
"keywords": [],
"keywords_must": [],
"keywords_forbid": []
}
\ No newline at end of file
......@@ -64,13 +64,13 @@
}
},
{
"容器集群管理(kubernetes)": {
"容器编排(学习环境 kubernetes)": {
"node_id": "cloud_native-62126de2412e4f528827e9e4a192f894",
"keywords": [],
"children": [
{
"kubernetes核心组件": {
"node_id": "cloud_native-3e630dc8a6844e7c94343bedab4f7abc",
"安装kubectl": {
"node_id": "cloud_native-f22bbbe40efb4940914c5ba59021998d",
"keywords": [],
"children": [],
"keywords_must": [],
......@@ -78,8 +78,8 @@
}
},
{
"kubernetes基本概念": {
"node_id": "cloud_native-cc3ba40cae784d5d923e90ae1553bdaf",
"安装minikube": {
"node_id": "cloud_native-506bd8a7aa254e03b6394e15f139d9c6",
"keywords": [],
"children": [],
"keywords_must": [],
......@@ -87,26 +87,8 @@
}
},
{
"使用kind创建k8s集群": {
"node_id": "cloud_native-11d2f89fd5a3498ba9ca55475b281b2d",
"keywords": [],
"children": [],
"keywords_must": [],
"keywords_forbid": []
}
},
{
"使用minikube创建k8s集群": {
"node_id": "cloud_native-4c92cae2d6634c59bfef877cf8500f61",
"keywords": [],
"children": [],
"keywords_must": [],
"keywords_forbid": []
}
},
{
"使用play-with-k8s创建k8s集群": {
"node_id": "cloud_native-8611bbf8e1224f1dae0ed6bf20c6eed1",
"安装kind": {
"node_id": "cloud_native-7788644c8b714ed9a0e04caa25934ce2",
"keywords": [],
"children": [],
"keywords_must": [],
......@@ -118,6 +100,15 @@
"keywords_forbid": []
}
},
{
"容器编排(生产环境 kubernates)": {
"node_id": "cloud_native-be3fffb284e242489400a9c65ae1b217",
"keywords": [],
"children": [],
"keywords_must": [],
"keywords_forbid": []
}
},
{
"服务网格(istio)": {
"node_id": "cloud_native-4ebf1370e7124635a812ccc4bd5cdc21",
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册