小知识:Minikube搭建Kubernetes集群

Minikube

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

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

?
1
2
3
4
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
?
1
chmod +x minikube
?
1
sudo mv minikube /usr/local/bin

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

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

?
1
2
3
4
useradd -m docker
passwd docker
# 修改密码后,加入用户组
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
2
3
4
5
* 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 roots path,则需要安装 constrack ,apt install constrack。

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

%小知识:Minikube搭建Kubernetes集群-猿站网-插图

脚本

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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 ,文件内容如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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。

?
1
2
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:

?
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
2
3
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 供外界访问。

?
1
minikube service hello-node
?
1
2
3
4
5
6
7
8
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 。

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

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

?
1
minikube stop

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

?
1
minikube delete

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

原文链接:https://www.cnblogs.com/whuanle/p/14673787.html

声明: 猿站网有关资源均来自网络搜集与网友提供,任何涉及商业盈利目的的均不得使用,否则产生的一切后果将由您自己承担! 本平台资源仅供个人学习交流、测试使用 所有内容请在下载后24小时内删除,制止非法恶意传播,不对任何下载或转载者造成的危害负任何法律责任!也请大家支持、购置正版! 。本站一律禁止以任何方式发布或转载任何违法的相关信息访客发现请向站长举报,会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。本网站的资源部分来源于网络,如有侵权烦请发送邮件至:2697268773@qq.com进行处理。
建站知识

小知识:使用kubeadm命令行工具创建kubernetes集群

2023-3-8 16:39:08

建站知识

小知识:docker基本命令及使用实例详解

2023-3-8 16:53:36

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索