Minikube

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

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

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

  1. curl -Lo minikube https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/releases/v1.19.0/minikube-linux-amd64
  2. # 上面的是阿里云构建的版本,如果使用 google 构建的,需要翻qiang。
  3. #linux版本 curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
  4. #win版本 curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-darwin-amd64
  1. chmod +x minikube
  1. sudo mv minikube /usr/local/bin

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

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

  1. useradd -m docker
  2. passwd docker
  3. # 修改密码后,加入用户组
  4. gpasswd -a docker docker

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

  1. docker ALL=(ALL)ALL

然后切换为 docker 用户:su docker

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

  1. minikube start --driver=none
  1. * Pulling base image ...
  2. * Downloading Kubernetes v1.20.2 preload ...
  3. > preloaded-images-k8s-v10-v1...: 491.71 MiB / 491.71 MiB 100.00% 60.04 Mi
  4. > gcr.io/k8s-minikube/kicbase...: 357.67 MiB / 357.67 MiB 100.00% 7.41 MiB
  5. * 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 后是这样的。

脚本

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

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

  1. echo -n "Starting Kubernetes..."
  2. minikube version
  3. minikube start --wait=false
  4. sleep 2
  5. n=0
  6. until [ $n -ge 10 ]
  7. do
  8. minikube addons enable dashboard && break
  9. n=$[$n+1]
  10. sleep 1
  11. done
  12. sleep 1
  13. n=0
  14. until [ $n -ge 10 ]
  15. do
  16. kubectl apply -f /opt/kubernetes-dashboard.yaml &>/dev/null && break
  17. n=$[$n+1]
  18. sleep 1
  19. done
  20. echo "Kubernetes Started"

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

  1. apiVersion: v1
  2. kind: Namespace
  3. metadata:
  4. labels:
  5. addonmanager.kubernetes.io/mode: Reconcile
  6. kubernetes.io/minikube-addons: dashboard
  7. name: kubernetes-dashboard
  8. selfLink: /api/v1/namespaces/kubernetes-dashboard
  9. spec:
  10. finalizers:
  11. - kubernetes
  12. status:
  13. phase: Active
  14. ---
  15. apiVersion: v1
  16. kind: Service
  17. metadata:
  18. labels:
  19. app: kubernetes-dashboard
  20. name: kubernetes-dashboard-katacoda
  21. namespace: kubernetes-dashboard
  22. spec:
  23. ports:
  24. - port: 80
  25. protocol: TCP
  26. targetPort: 9090
  27. nodePort: 30000
  28. selector:
  29. k8s-app: kubernetes-dashboard
  30. type: NodePort

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

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

创建 Deployment

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

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

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

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

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

查看 Deployment:

  1. kubectl get deployments

查看 pod :

  1. kubectl get pods

查看集群事件:

  1. kubectl get events

查看 kubectl 配置:

  1. kubectl config view

创建 Service

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

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

然后查看刚刚创建的 service:

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

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

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

清理集群资源

首先生成 service、deployment 。

  1. kubectl delete service hello-node
  2. kubectl delete deployment hello-node

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

  1. minikube stop

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

  1. minikube delete

浅入Kubernetes(4):使用Minikube体验的更多相关文章

  1. 浅入Kubernetes(6):CKAD认证中的部署教程

    目录 预设网络 kubeadm 安装 k8s 配置 calico 自动补全工具 状态描述 目前为止,笔者已经写了 5 篇关于 k8s 的文章,这一篇笔者将介绍 CKAD 认证官方课程中,如何部署 k8 ...

  2. 浅入Kubernetes(11):了解 Service 和 Endpoint

    目录 Srevice Service 的创建及现象 Service 定义 Endpoint slices 创建 Endpoint.Service Service 创建应用 创建 Endpoint 浅入 ...

  3. 浅入Kubernetes(8):外网访问集群

    目录 查询 Service Service 外部服务类型 配置 ServiceType 伸缩数量 阶段总结 在前面几篇文章中,我们学习了 kubeadm .kubectl 的一些命令,也学会了 Dep ...

  4. 浅入kubernetes(5):尝试kubeadm

    本篇介绍利用 kubernetes 的命令行工具,快速创建集群实例,完成 hello world 实践. 上一篇试用 minikube 去搭建集群,这一篇将介绍通过 kubeadm 去操作. 命令行工 ...

  5. 浅入kubernetes(1):Kubernetes 入门基础

    目录 Kubernetes 入门基础 Introduction basic of kubernetes What Is Kubernetes? Components of Kubernetes Kub ...

  6. 浅入kubernetes(2):Kubernetes 的组成

    目录 说明 Kubernetes集群的组成 What are containerized applications? What are Kubernetes containers? What are ...

  7. 浅入Kubernetes(7):应用部署实例,Deployment、Service、ReplicaSet

    目录 Deployment 创建 Deployment kubectl apply/create 网络端口映射和更新 Deployment ReplicaSet 在本文之前,你需要阅读: 尝试 kub ...

  8. 浅入Kubernetes(10):控制节点的部署,选择器、亲和性、污点

    目录 标签和nodeSelector 标签选择 亲和性和反亲和性 污点和容忍度 系统默认污点 容忍度 DaemonSet 在前面的学习中,我们学到了 Deployment 部署,以及副本数(Repli ...

  9. 浅入Kubernetes(12):Deployment 的升级、回滚

    目录 更新 上线 会滚 缩放 Deployment 直接设置 Pod 水平自动缩放 比例缩放 暂停 Deployment 上线 本篇内容讨论 Pod 的更新和回滚,内容不多. 更新 打开 https: ...

  10. 包学会之浅入浅出Vue.js:结业篇(转)

    蔡述雄,现腾讯用户体验设计部QQ空间高级UI工程师.智图图片优化系统首席工程师,曾参与<众妙之门>书籍的翻译工作.目前专注前端图片优化与新技术的探研. 在第一篇<包学会之浅入浅出Vu ...

随机推荐

  1. 【网络流,dp】Gym102220A Apple Business

    Problem Link 有一棵 \(n\) 个点的完全二叉树(点 \(i\) 的父亲是 \(\lfloor i/2\rfloor\)),第 \(i\) 个点有 \(a_i\) 个苹果.现在有 \(m ...

  2. 【K哥爬虫普法】北京某公司惨遭黑客攻击13000000余次,连夜报警……

    我国目前并未出台专门针对网络爬虫技术的法律规范,但在司法实践中,相关判决已屡见不鲜,K 哥特设了"K哥爬虫普法"专栏,本栏目通过对真实案例的分析,旨在提高广大爬虫工程师的法律意识, ...

  3. 【译】PEP-3129 类装饰器

    PEP原文 : https://www.python.org/dev/peps/pep-3129 PEP标题: Class Decorators PEP作者: Collin Winter 创建日期: ...

  4. # 重要-即时通讯IM开源项目OpenIM关于版本管理及v2.3.0发布计划

    越来越多的客户把OpenIM用到了生产环境,由于新特性持续迭代和bug修复,会涉及到后续的升级方案,为了让大家后续从容应对,本文重点总结OpenIM对未来版本管理的思路和方案.同时,官网对于文档进行了 ...

  5. 4.6 Windows驱动开发:内核遍历进程VAD结构体

    在上一篇文章<内核中实现Dump进程转储>中我们实现了ARK工具的转存功能,本篇文章继续以内存为出发点介绍VAD结构,该结构的全程是Virtual Address Descriptor即虚 ...

  6. 火山引擎ByteHouse:分析型数据库如何设计列式存储

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 列式存储通过支持按列存储数据,提供高性能的数据分析和查询.作为云原生数据仓库的 ByteHouse,也采用列式存储 ...

  7. 47从零开始用Rust编写nginx,配对还有这么多要求!负载均衡中的路径匹配

    wmproxy wmproxy已用Rust实现http/https代理, socks5代理, 反向代理, 负载均衡, 静态文件服务器,websocket代理,四层TCP/UDP转发,内网穿透等,会将实 ...

  8. Vulkan学习苦旅03:零号显卡,启动!(选择物理设备VkPhysicalDevcie)

    随着近几年AI的迅速发展,GPU变得越来越抢手.然而,GPU的全称为Graphics Processing Unit, 从名字中就可以看出,GPU是为了处理图形而诞生的,后来才被应用到科学计算等领域中 ...

  9. 目录:CH57x/CH58x/CH59x/CH32V208低功耗蓝牙应用

    外设相关: CH59x 系统16位PWM使用 - 小舟从此逝_1 - 博客园 (cnblogs.com) CH59X/CH58X/CH57X PWM使用 - 小舟从此逝_1 - 博客园 (cnblog ...

  10. 我自创的 Response泛型 返回类,全自动 推断,非常方便使用。

    package com.diandaxia.common.utils; import java.util.Date; /** * by liyuxin 2019.12.16 更新 * 统一返回格式 * ...