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 后是这样的。

脚本

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

新建一个 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

浅入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. Windows 审计日志 安全部分不刷新的解决办法

    现在存在一个问题如图示: 有接近15个小时的日志没有进行记录和展示. 要追查问题比较麻烦. 后来发现必须要手动刷新一下 审计记录才可以实现. 感觉比较奇怪 位置为  计算机配置->windows ...

  2. fiddler如何抓取https请求

    pc端browse 1.打开下载好的fiddler,点击tools选择options后进入https tab下,勾选Decrypt  HTTPS CONNECTS 和Ignore server cer ...

  3. pycharm像vs那样进行代码折叠

    在visual studio中可以使用#region和#endregion来进行代码折叠,我尝试在pycharm中也可以使用相同的指令来折叠代码. 但是如果#endregion是在方法的最后面或者类的 ...

  4. PostgreSQL中的B-TREE索引

    分析了解pgsql中的索引 前言 索引 B-tree B-Tree和B+Tree的区别: pgsql中B-Tree 实现 如果该节点不是最右节点 如果该节点是最右节点 参考 分析了解pgsql中的索引 ...

  5. 深度学习应用篇-计算机视觉-目标检测[4]:综述、边界框bounding box、锚框(Anchor box)、交并比、非极大值抑制NMS、SoftNMS

    深度学习应用篇-计算机视觉-目标检测[4]:综述.边界框bounding box.锚框(Anchor box).交并比.非极大值抑制NMS.SoftNMS 1.目标检测综述 对计算机而言,能够&quo ...

  6. Gin 中间件

    中间件 在Gin框架中,中间件(Middleware)指的是可以拦截http请求-响应生命周期的特殊函数,在请求-响应生命周期中可以注册多个中间件,每个中间件执行不同的功能,一个中间执行完再轮到下一个 ...

  7. Linux虚拟机追加扩展磁盘

    一.使用VMware给虚拟机追加磁盘 使用VMware打开虚拟机设置对话框,选择硬盘,点击右侧的扩展按钮,输入扩展后的磁盘容量. 点击扩展按钮.提示磁盘已成功扩展. 二.对闲置的空间进行分区 上面扩展 ...

  8. 安装kali linux操作系统(转) - 初学者系列 - 学习者系列文章

    前段时间想到操作系统安全问题,所以对操作系统的防火墙和安全软件都进行了安装.然后,涉及到Linux系统的安全测试问题,所以找到了Linux系统里的安全测试的版本Kali Linux系统.本文仅对该系统 ...

  9. JVM metaspace思维导图整理

    JDK8中用元空间metaspace代替了永久代perm,原因和其特性简单介绍一下. 思维导图 图中gc log详解链接:https://www.jianshu.com/p/cd34d6f3b5b4 ...

  10. 如何修改11g RAC集群名称

    背景:有一套11.2.0.4 RAC集群的环境,为了测试DG,直接复制了一套一模一样的环境,修改过IP之后,依然有问题,无法同时启动. 初步判断是因为在同一子网存在两个同名的集群(都是jystdrac ...