浅入Kubernetes(4): 使用Minikube体验

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 浅入Kubernetes(4): 使用Minikube体验

Minikube


打开 https://github.com/kubernetes/minikube/releases/tag/v1.19.0 下载最新版本的二进制软件包(deb、rpm包),再使用 apt 或 yum 安装。


PS:买台香港的服务器吧,或者白嫖 Google 、Azure 的试用额度。不然就有 N 种网络问题。


或者直接下载 minikube 最新版本二进制文件(推荐)。


curl -Lo minikube https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/releases/v1.19.0/minikube-linux-amd64
# 上面的是阿里云构建的版本,如果使用 google 构建的,需要翻qiang。
#linux版本 curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
#win版本 curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-darwin-amd64


chmod +x minikube


sudo mv minikube /usr/local/bin


通过 minikube version 命令可以查看 minikube 的版本,接下来我们使用 minikube start 命令,可以直接创建一个 kubernetes 集群。minikube 会自动下载 kubeadm、kubectl、kubelet。


如果启动不起来,可以创建一个 docker 用户。

useradd -m docker
    passwd docker
    # 修改密码后,加入用户组
    gpasswd -a docker docker


打开 /etc/sudoers 文件,在 root ALL=(ALL:ALL) ALL 下 增加新的一行:

docker ALL=(ALL)ALL


然后切换为 docker 用户:su docker


笔者注:如果使用 root 用户启动 minikube 命令,会提示错误,需要使用非 root 用户(一般为docker)。如果你不想切换为别的用户,可以使用 --driver==none


minikube start --driver=none


* Pulling base image ...
* Downloading Kubernetes v1.20.2 preload ...
    > preloaded-images-k8s-v10-v1...: 491.71 MiB / 491.71 MiB  100.00% 60.04 Mi
    > gcr.io/k8s-minikube/kicbase...: 357.67 MiB / 357.67 MiB  100.00% 7.41 MiB
* Creating docker container (CPUs=2, Memory=4000MB) .../


接下来 minikube 会拉取各种镜像,需要一些时间。minikube 完成初始化后,打开新的终端窗口,执行 minikube dashboard 启动面板,根据 URL 地址,可以访问面板。


PS:如果报 X Exiting due to GUEST_MISSING_CONNTRACK: Sorry, Kubernetes 1.20.2 requires conntrack to be installed in root's path,则需要安装 constrack ,apt install constrack

正常的话,执行 docker ps 后是这样的。


微信图片_20220505142231.png


脚本


如果觉得麻烦。。。可以用脚本。。。


新建一个 start.sh,文件内容如下:

echo -n "Starting Kubernetes..."
minikube version
minikube start --wait=false
sleep 2
n=0
until [ $n -ge 10 ]
do
   minikube addons enable dashboard && break
   n=$[$n+1]
   sleep 1
done
sleep 1
n=0
until [ $n -ge 10 ]
do
   kubectl apply -f /opt/kubernetes-dashboard.yaml &>/dev/null  && break
   n=$[$n+1]
   sleep 1
done
echo "Kubernetes Started"


新建一个 kubernetes-dashboard.yaml ,文件内容如下:

apiVersion: v1
kind: Namespace
metadata:
  labels:
    addonmanager.kubernetes.io/mode: Reconcile
    kubernetes.io/minikube-addons: dashboard
  name: kubernetes-dashboard
  selfLink: /api/v1/namespaces/kubernetes-dashboard
spec:
  finalizers:
  - kubernetes
status:
  phase: Active
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: kubernetes-dashboard
  name: kubernetes-dashboard-katacoda
  namespace: kubernetes-dashboard
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 9090
    nodePort: 30000
  selector:
    k8s-app: kubernetes-dashboard
  type: NodePort


把 kubernetes-dashboard.yaml 放到 /opt 目录中。

然后启动 启动 start.sh 即可。


创建 Deployment


Kubernetes Deployment 可以检查 Pod 的健康状况,并在 Pod 中的容器终止的情况下重新启动新的容器。


deployment 可以部署应用并管理实例数量,它提供了一种故障的自我修复机制,当应用挂了后,deployment 可以自动启动一个新的实例,维护固定数量的 pod。


kubectl create 命令创建管理 Pod 的 Deployment。


kubectl create deployment hello-node --image=k8s.gcr.io/echoserver:1.4
# k8s.gcr.io/echoserver:1.4 是镜像名称,hello-node 是 node 名称


k8s.gcr.io/echoserver 镜像暴露了 8080 端口。


查看 Deployment:

kubectl get deployments


查看 pod :

kubectl get pods


查看集群事件:

kubectl get events


查看 kubectl 配置:

kubectl config view


创建 Service


默认情况下,pod 只能在 kubernetes 集群的内部网络访问,如果要外部网络访问,则需要暴露 pod 为 kubnetes service。这里我们把上一小节的 hello-node 节点暴露出去。


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


然后查看刚刚创建的 service:

kubectl get services


NAME         TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
hello-node   LoadBalancer   10.96.194.154   <pending>     8080:31686/TCP   85s
kubernetes   ClusterIP      10.96.0.1       <none>        443/TCP          22m


然后试用 minikube service 提供一个 ip 供外界访问。

minikube service hello-node


root@instance-1:~# minikube service hello-node
|-----------|------------|-------------|-------------------------|
| NAMESPACE |    NAME    | TARGET PORT |           URL           |
|-----------|------------|-------------|-------------------------|
| default   | hello-node |        8080 | http://10.170.0.2:31686 |
|-----------|------------|-------------|-------------------------|
* Opening service default/hello-node in default browser...
  http://10.170.0.2:31686


清理集群资源


首先生成 service、deployment 。

kubectl delete service hello-node
kubectl delete deployment hello-node


然后停止 Minikube 虚拟机(VM):

minikube stop


接着删除 Minikube 虚拟机(VM):

minikube delete
相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
1月前
|
弹性计算 Kubernetes Linux
如何使用minikube搭建k8s集群
如何使用minikube搭建k8s集群
|
3月前
|
Kubernetes 监控 API
在K8S中,什么是 Minikube、Kubectl、Kubelet?
在K8S中,什么是 Minikube、Kubectl、Kubelet?
|
3月前
|
Kubernetes 监控 API
在K8S中,Minikube、Kubectl、Kubelet是什么?
在K8S中,Minikube、Kubectl、Kubelet是什么?
|
6月前
|
Kubernetes 调度 Docker
玩转Kubernetes—使用minikube操作集群
玩转Kubernetes—使用minikube操作集群
487 0
|
6月前
|
Kubernetes Cloud Native 虚拟化
云原生|kubernetes|minikube的部署安装完全手册(修订版)
云原生|kubernetes|minikube的部署安装完全手册(修订版)
1306 1
|
6月前
|
Kubernetes 虚拟化 开发者
Win环境中 Minikube 创建 Kubernetes 集群
Minikube 提供了一个方便的方式,在本地计算机上快速搭建一个小型的 Kubernetes 集群。这个集群是一个单节点的 Kubernetes 集群,包括主节点(control plane)和工作节点(node),运行在虚拟机中。
84 1
|
Kubernetes 应用服务中间件 nginx
解释一下Kubernetes Minikube是什么,以及如何在本地运行一个Minikube集群
步骤1:准备环境 在开始之前,您需要确保本地环境已经具备以下几个关键的工具和组件:
817 1
|
Kubernetes 负载均衡 Linux
【k8s 系列】k8s 学习六,minikube 试炼
今天我们先来尝试使用一下 minikube ,可以进入到 kubernetes.io/zh/docs/tut… 页面上直接感受,或者通过如下指令,将 minikube 放入我们的服务器上面进行使用
183 0
|
缓存 Kubernetes Linux
基于minikube快速搭建kubernetes单节点环境
本文主要介绍在 Centos7 环境下基于 Minikube 来快速部署 Kubernetes 单节点集群环境,并在浏览器上访问部署在 k8s 上的 dashboard 服务。
1202 2
基于minikube快速搭建kubernetes单节点环境
|
Kubernetes Linux Shell
minikube安装kubernetes以及start启动报错解决办法:Unable to find image ‘gcr.io/k8s-minikube/kicbase
使用minikubu安装kuburnetes集群,所遇到的问题,以及如何设置。
2714 1