Minikube搭建Kubernetes集群


Posted in Servers onMarch 31, 2022

Minikube

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

或者直接下载 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 后是这样的。

Minikube搭建Kubernetes集群

脚本

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

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

到此这篇关于Minikube搭建Kubernetes集群的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Servers 相关文章推荐
nginx常用命令放入shell脚本详解
Mar 31 Servers
nginx基于域名,端口,不同IP的虚拟主机设置的实现
Mar 31 Servers
Nginx 过滤静态资源文件的访问日志的实现
Mar 31 Servers
Filebeat 采集 Nginx 日志的方法
Mar 31 Servers
nginx限制并发连接请求数的方法
Apr 01 Servers
Nginx URL重写rewrite机制原理及使用实例
Apr 01 Servers
nginx配置虚拟主机的详细步骤
Jul 21 Servers
nginx负载功能+nfs服务器功能解析
Feb 28 Servers
Vertica集成Apache Hudi重磅使用指南
Mar 31 Servers
Kubernetes部署实例并配置Deployment、网络映射、副本集
Apr 01 Servers
详解如何使用Nginx解决跨域问题
May 06 Servers
winserver2019安装软件一直卡在应用程序正在为首次使用做准备
Jun 10 Servers
Apache Pulsar结合Hudi构建Lakehouse方案分析
Apache Hudi的多版本清理服务彻底讲解
Z-Order加速Hudi大规模数据集方案分析
Mar 31 #Servers
深入解析Apache Hudi内核文件标记机制
Apache Hudi数据布局黑科技降低一半查询时间
Apache Hudi集成Spark SQL操作hide表
Nginx工作模式及代理配置的使用细节
You might like
PHP用函数嵌入网站访问量计数器
2017/10/27 PHP
PHP实现可添加水印与生成缩略图的图片处理工具类
2018/01/16 PHP
PHP基于GD2函数库实现验证码功能示例
2019/01/27 PHP
PHP数组遍历的几种常见方式总结
2019/02/15 PHP
PHP容器类的两种实现方式示例
2019/07/24 PHP
零基础php编程好学吗
2019/10/11 PHP
用innerhtml提高页面打开速度的方法
2013/08/02 Javascript
jquery实现textarea 高度自适应
2015/03/11 Javascript
jQuery检测鼠标左键和右键点击的方法
2015/03/17 Javascript
详细分析使用AngularJS编程中提交表单的方式
2015/06/19 Javascript
Backbone.js的一些使用技巧
2015/07/01 Javascript
JS访问SWF的函数用法实例
2015/07/01 Javascript
Javascript的表单与验证-非空验证
2016/03/18 Javascript
js自定义select下拉框美化特效
2016/05/12 Javascript
node.js学习之base64编码解码
2016/10/21 Javascript
JavaScript中捕获/阻止捕获、冒泡/阻止冒泡方法
2016/12/07 Javascript
探讨Vue.js的组件和模板
2017/10/27 Javascript
在Vue中使用echarts的方法
2018/02/05 Javascript
JS跨域请求的问题解析
2018/12/03 Javascript
小程序实现背景音乐播放和暂停
2020/06/19 Javascript
Vue时间轴 vue-light-timeline的用法说明
2020/10/29 Javascript
vue使用keep-alive实现组件切换时保存原组件数据方法
2020/10/30 Javascript
[01:08:17]2018DOTA2亚洲邀请赛3月29日 小组赛B组 EG VS VGJ.T
2018/03/30 DOTA
python处理csv数据的方法
2015/03/11 Python
Python实现文件复制删除
2016/04/19 Python
Python实现剪刀石头布小游戏(与电脑对战)
2019/12/31 Python
英国航空官网:British Airways
2016/09/11 全球购物
Darphin迪梵官网: 来自巴黎,植物和精油调制的护肤品牌
2016/10/11 全球购物
洲际酒店集团英国官网:IHG英国
2019/07/10 全球购物
法国一家多品牌成衣精品中/高档商店:Graduate Store
2019/08/28 全球购物
优质飞蝇钓和渔具:RiverBum
2020/05/10 全球购物
高级技校毕业生自荐信
2013/11/18 职场文书
销售简历自我评价
2014/01/24 职场文书
乡镇党的群众路线教育实践活动制度建设计划
2014/11/03 职场文书
2015年高校图书馆工作总结
2015/04/30 职场文书
在 SQL 语句中处理 NULL 值的方法
2021/06/07 SQL Server