mengjincn 发表于 2020-11-19 12:16

miniKube安装

## 安装

> https://developer.aliyun.com/article/221687
>
> 如需更新minikube,需要更新 minikube 安装包
>
> - `minikube delete` 删除现有虚机,删除 `~/.minikube` 目录缓存的文件
>
> - 重新创建 minikube 环境
>
>   
>
>   Docker Desktop 也为Mac/Windows用户提供了Kubernetes开发环境的支持 (https://yq.aliyun.com/articles/672675?spm=a2c6h.12873639.0.0.ab202043NoZPpi),大家也可以试用

### 先安装kubectl

> https://developer.aliyun.com/mirror/kubernetes?spm=a2c6h.13651102.0.0.3e221b1177rqcc

MiniKube 的安装需要先安装 kubectl 及相关驱动

#### Debian / Ubuntu

```bash
apt-get update && apt-get install -y apt-transport-https
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
apt-get update
# apt-get install -y kubelet kubeadm kubectl
apt-get install -y kubectl
```

#### CentOS / RHEL / Fedora

```bash
cat <<EOF > /etc/yum.repos.d/kubernetes.repo

name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
setenforce 0
# yum install -y kubelet kubeadm kubectl
yum install -y kubectl
# systemctl enable kubelet && systemctl start kubelet
```

### Minikube安装

Mac OSX

```bash
curl -Lo minikube https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/releases/v1.13.0/minikube-darwin-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/
```

Linux

```bash
curl -Lo minikube https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/releases/v1.13.0/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/
```

Windows

下载 (https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/releases/v1.13.0/minikube-windows-amd64.exe?spm=a2c6h.12873639.0.0.ab202043NoZPpi&file=minikube-windows-amd64.exe) 文件,并重命名为 `minikube.exe`

### 启动

```bash
minikube start --cpus=4 --memory=4096mb --image-mirror-country cn --registry-mirror=https://tuy5brdc.mirror.aliyuncs.com
```



## 常用命令

```bash
# 进入集群节点
minikube ssh

# 查看节点 IP
minikube ip

# 停止集群
minikube stop

# 删除集群
minikube delete
```

##### 在浏览器中打开 Kubernetes dashboard:

```bash
minikube dashboard
```

> https://kubernetes.io/zh/docs/tutorials/hello-minikube/



# 你好 Minikube

本教程向您展示如何使用 (https://kubernetes.io/zh/docs/setup/learning-environment/minikube) 和 Katacoda 在 Kubernetes 上运行一个简单的 “Hello World” Node.js 应用程序。Katacoda 提供免费的浏览器内 Kubernetes 环境。

> **说明:**
>
> 如果您已在本地安装 (https://kubernetes.io/zh/docs/tasks/tools/install-minikube/),也可以按照本教程操作。

## 教程目标

- 将 "Hello World" 应用程序部署到 Minikube。
- 运行应用程序。
- 查看应用日志

## 准备开始

本教程提供了从以下文件构建的容器镜像:

[`minikube/server.js` ](https://raw.githubusercontent.com/kubernetes/website/master/content/zh/examples/minikube/server.js)!(_images/minikube%E6%95%99%E7%A8%8B/copycode.svg)

```js
var http = require('http');

var handleRequest = function(request, response) {
console.log('Received request for URL: ' + request.url);
response.writeHead(200);
response.end('Hello World!');
};
var www = http.createServer(handleRequest);
www.listen(8080);
```

[`minikube/Dockerfile` ](https://raw.githubusercontent.com/kubernetes/website/master/content/zh/examples/minikube/Dockerfile)!(_images/minikube%E6%95%99%E7%A8%8B/copycode.svg)

```conf
FROM node:6.14.2
EXPOSE 8080
COPY server.js .
CMD [ "node", "server.js" ]
```

有关 `docker build` 命令的更多信息,请参阅 (https://docs.docker.com/engine/reference/commandline/build/)。

## 创建 Minikube 集群

1. 点击 **启动终端**

   

   > **说明:** If you installed Minikube locally, run `minikube start`.

2. 在浏览器中打开 Kubernetes dashboard:

   ```shell
   minikube dashboard
   ```

3. 仅限 Katacoda 环境:在终端窗口的顶部,单击加号,然后单击 **选择要在主机 1 上查看的端口**。

4. 仅限 Katacoda 环境:输入“30000”,然后单击 **显示端口**。

## 创建 Deployment

Kubernetes [*Pod*](https://kubernetes.io/zh/docs/concepts/workloads/pods/pod/) 是由一个或多个为了管理和联网而绑定在一起的容器构成的组。本教程中的 Pod 只有一个容器。Kubernetes [*Deployment*](https://kubernetes.io/zh/docs/concepts/workloads/controllers/deployment/) 检查 Pod 的健康状况,并在 Pod 中的容器终止的情况下重新启动新的容器。Deployment 是管理 Pod 创建和扩展的推荐方法。

1. 使用 `kubectl create` 命令创建管理 Pod 的 Deployment。该 Pod 根据提供的 Docker 镜像运行 Container。

   ```shell
   kubectl create deployment hello-node --image=k8s.gcr.io/echoserver:1.4
   ```

1. 查看 Deployment:

   ```shell
   kubectl get deployments
   ```

```
输出结果类似于这样:

​```
NAME         READY   UP-TO-DATE   AVAILABLE   AGE
hello-node   1/1   1            1         1m
​```
```

1. 查看 Pod:

   ```shell
   kubectl get pods
   ```

```
输出结果类似于这样:

​```
NAME                        READY   STATUS    RESTARTS   AGE
hello-node-5f76cf6ccf-br9b5   1/1       Running   0          1m
​```
```

1. 查看集群事件:

   ```shell
   kubectl get events
   ```

1. 查看 `kubectl` 配置:

   ```shell
   kubectl config view
   ```

> **说明:** 有关 kubectl 命令的更多信息,请参阅 (https://kubernetes.io/zh/docs/user-guide/kubectl-overview/)。

## 创建 Service

默认情况下,Pod 只能通过 Kubernetes 集群中的内部 IP 地址访问。要使得 `hello-node` 容器可以从 Kubernetes 虚拟网络的外部访问,您必须将 Pod 暴露为 Kubernetes [*Service*](https://kubernetes.io/zh/docs/concepts/services-networking/service/)。

1. 使用 `kubectl expose` 命令将 Pod 暴露给公网:

   ```shell
   kubectl expose deployment hello-node --type=LoadBalancer --port=8080
   ```

   The `--type=LoadBalancer` flag indicates that you want to expose your Service outside of the cluster.

1. 查看您刚刚创建的服务:

   ```shell
   kubectl get services
   ```

```
输出结果类似于这样:

​```
NAME         TYPE         CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
hello-node   LoadBalancer   10.108.144.78   <pending>   8080:30369/TCP   21s
kubernetes   ClusterIP      10.96.0.1       <none>      443/TCP          23m
​```
```

在支持负载均衡器的云服务提供商上,将提供一个外部 IP 来访问该服务。在 Minikube 上,`LoadBalancer` 使得服务可以通过命令 `minikube service` 访问。

1. 运行下面的命令:

   ```shell
   minikube service hello-node
   ```

1. 仅限 Katacoda 环境:单击加号,然后单击 **选择要在主机 1 上查看的端口**。

1. 仅限 Katacoda 环境:请注意在 service 输出中与 `8080` 对应的长度为 5 位的端口号。此端口号是随机生成的,可能与您不同。在端口号文本框中输入您自己的端口号,然后单击显示端口。如果是上面那个例子,就需要输入 `30369`。

   这将打开一个浏览器窗口,为您的应用程序提供服务并显示 “Hello World” 消息。

## 启用插件

Minikube 有一组内置的 [插件](https://kubernetes.io/zh/docs/concepts/cluster-administration/addons/),可以在本地 Kubernetes 环境中启用、禁用和打开。

1. 列出当前支持的插件:

   ```shell
   minikube addons list
   ```

```
输出结果类似于这样:

​```
|-----------------------------|----------|--------------|
|         ADDON NAME          | PROFILE|    STATUS    |
|-----------------------------|----------|--------------|
| ambassador                  | minikube | disabled   |
| dashboard                   | minikube | enabled ✅   |
| default-storageclass      | minikube | enabled ✅   |
| efk                         | minikube | disabled   |
| freshpod                  | minikube | disabled   |
| gcp-auth                  | minikube | disabled   |
| gvisor                      | minikube | disabled   |
| helm-tiller               | minikube | disabled   |
| ingress                     | minikube | disabled   |
| ingress-dns               | minikube | disabled   |
| istio                     | minikube | disabled   |
| istio-provisioner         | minikube | disabled   |
| kubevirt                  | minikube | disabled   |
| logviewer                   | minikube | disabled   |
| metallb                     | minikube | disabled   |
| metrics-server            | minikube | enabled ✅   |
| nvidia-driver-installer   | minikube | disabled   |
| nvidia-gpu-device-plugin    | minikube | disabled   |
| olm                         | minikube | disabled   |
| pod-security-policy         | minikube | disabled   |
| registry                  | minikube | disabled   |
| registry-aliases            | minikube | disabled   |
| registry-creds            | minikube | disabled   |
| storage-provisioner         | minikube | enabled ✅   |
| storage-provisioner-gluster | minikube | disabled   |
|-----------------------------|----------|--------------|
​```
```

1. 启用插件,例如 `metrics-server`:

   ```shell
   minikube addons enable metrics-server
   ```

```
输出结果类似于这样:

​```
metrics-server was successfully enabled
​```
```

1. 查看刚才创建的 Pod 和 Service:

   ```shell
   kubectl get pod,svc -n kube-system
   ```

```
输出结果类似于这样:

​```
NAME                                        READY   STATUS    RESTARTS   AGE
pod/coredns-5644d7b6d9-mh9ll                1/1       Running   0          34m
pod/coredns-5644d7b6d9-pqd2t                1/1       Running   0          34m
pod/metrics-server-67fb648c5                1/1       Running   0          26s
pod/etcd-minikube                           1/1       Running   0          34m
pod/influxdb-grafana-b29w8                  2/2       Running   0          26s
pod/kube-addon-manager-minikube             1/1       Running   0          34m
pod/kube-apiserver-minikube               1/1       Running   0          34m
pod/kube-controller-manager-minikube      1/1       Running   0          34m
pod/kube-proxy-rnlps                        1/1       Running   0          34m
pod/kube-scheduler-minikube               1/1       Running   0          34m
pod/storage-provisioner                     1/1       Running   0          34m

NAME                           TYPE      CLUSTER-IP      EXTERNAL-IP   PORT(S)             AGE
service/metrics-server         ClusterIP   10.96.241.45    <none>      80/TCP            26s
service/kube-dns               ClusterIP   10.96.0.10      <none>      53/UDP,53/TCP       34m
service/monitoring-grafana   NodePort    10.99.24.54   <none>      80:30002/TCP      26s
service/monitoring-influxdb    ClusterIP   10.111.169.94   <none>      8083/TCP,8086/TCP   26s
​```
```

1. 禁用 `metrics-server`:

   ```shell
   minikube addons disable metrics-server
   ```

```
输出结果类似于这样:

​```
metrics-server was successfully disabled
​```
```

## 清理

现在可以清理您在集群中创建的资源:

```shell
kubectl delete service hello-node
kubectl delete deployment hello-node
```

可选的,停止 Minikube 虚拟机(VM):

```shell
minikube stop
```

可选的,删除 Minikube 虚拟机(VM):

```shell
minikube delete
```

https://minikube.sigs.k8s.io/docs/handbook/deploying/

那美克星神龙 发表于 2020-11-19 14:29

谢谢大佬分享

XX924230 发表于 2020-11-19 15:28

感谢大佬分享~~

wanshiz 发表于 2020-11-20 07:08

谢谢分享,借鉴了。
页: [1]
查看完整版本: miniKube安装