centos7系统中安装minikube并部署应用

centos7系统中安装minikube并部署应用

参考网址:

minikube 安装

https://mp.weixin.qq.com/s/XeH789bCzkihNJGXlzE2bA

minikube dashboard 界面安装使用

https://mp.weixin.qq.com/s?__biz=MzU1Nzg4NjgyMw==&mid=2247488842&idx=1&sn=259ef19f414d968748193df89a0a6c73&scene=21#wechat_redirect

说明:

参考 https://mp.weixin.qq.com/s/XeH789bCzkihNJGXlzE2bA可以搭建好minikube

我之前踩了很多坑,发现搭建总是失败 ,该片文章总结的非常好 ,基本按照步骤 ,可以搭建成功,

防止后面忘记 , 收藏记录一下

minikube简介

Minikube是由Kubernetes社区维护的单机版的Kubernetes集群,支持macOS、Linux和Windows等多种操作系统平台。Minikube使用最新的官方stable版本,并支持Kubernetes的大部分功能,从基础的容器编排管理,到高级特性如负载均衡、Ingress,权限控制等,非常适合作为Kubernetes入门,或开发测试环境使用。

关键词 入门 , 学习测试

环境准备

安装 minikube 基础环境

  • centos7
  • docker
  • docker-compose

系统要求

CPU:至少两核

内存:至少2GB

安装

一)准备工作

1、 CentOS 7虚拟机配置

CPU:至少两核

内存:至少2GB

2、 创建操作系统用户

useradd user1 //创建账户

passwd user1 //设置密码

3、 安装需要的软件

yum install conntrack

yum install firefox

yum install xauth

yum install epel-release.noarch

yum install bash-completion.noarch //安装自动补全

4 、配置X11转发

vi /etc/ssh/sshd_config //修改下面的属性

X11Forwarding yes

X11DisplayOffset 10

X11UseLocalhost no

保存退出

systemctl restart ssh //重启ssh服务

5、 安装docker

//更新软件

sudo yum update

//安装docker

sudo yum install docker

//启动docker服务

sudo systemctl start docker

//设置docker服务开机自动启动

sudo systemctl enable docker

//添加docker组,将当前用户加入该组

sudo groupadd docker

sudo usermod -aG docker user1

sudo systemctl restart docker

//需要切换下用户,生效配置

su root

su user1

6、 安装kubectl

//下载kubectl

sudo curl -LO “https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl”

image-20220103210734866

//安装kubectl

sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl

//查看版本

kubectl version --client

image-20220103210749214

//设置kubectl自动补全

kubectl completion bash >/etc/bash_completion.d/kubectl

//注销后重新登录,可以看到自动完成的效果

image-20220103210806553

(二)安装和启动minikube

1、首先需要了解一些kubernetes的术语

1)Pod

Pod是Kubernetes运行的最小单位,一个Pod对应到一个应用。每个Pod都有一个yaml格式的配置文件。

一个Pod里面可以有一个或多个容器。

同一个Pod中的容器共享相同资源及网络。

2)deployment(部署)

deployment是Kubernetes 中的一个资源对象,用于描述应用的生命周期,比如应用使用的镜像、容器集数量,以及容器集更新方式。deployment完全由 Kubernetes 后端管理,整个更新过程在服务器端执行,无需客户端干预。

3)service(服务)

容器是短暂的,重启时其IP地址可能会改变,因此使用service建立前端容器与后台容器之间的对应关系。

4)node(节点)

node是Kubernetes运行的最小硬件单位,一个节点对应一台机器。kubernetes有worker node和master node两种节点,但minikube只有master节点。

5)label(标签)

Label是attach到Pod的一对键/值对,用来传递用户定义的属性。通过label来对pod进行区分和定位。

6)cluster(集群)

clster是Kubernetes中多个Node与Master的集合。

2、 安装minikube

//下载安装程序

curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-latest.x86_64.rpm

//本地安装

sudo rpm -ivh minikube-latest.x86_64.rpm

3、 查看minikube的版本

minikube version

image-20220103210830802

版本为1.20.0

4、 启动minikube集群

//普通用户身份启动集群

minikube start

image-20220103210849782

minikube自动创建虚拟机作为节点(node),在该虚拟机中安装docker并下载镜像。

5、 查看minikube状态

minikube status

image-20220103210903355

6、 查看集群信息

kubectl cluster-info //查看集群的详细信息和健康状态

image-20220103210919327

7、 查看minikube创建的节点

//查看节点

kubectl get nodes

image-20220103210945653

minikube只创建一个节点,节点的名称为minikube,角色为master。

//查看节点的详情

kubectl get node -o wide

image-20220103210958613

可以看到node的名称、状态、内部IP地址、操作系统类型、内核版本、容器运行时版本等。

//登录到node中,口令也是root

ssh root@192.168.49.2

image-20220103211019857

至此,minikube安装完成。

需要说明的是,minikube创建的环境所使用的docker守护进程与宿主机上的docker守护进程不同,所以在宿主机上执行docker ps看不到kubernetes集群中的容器实例。

exit //退出minikube创建的虚拟机

三、在minikube集群中部署应用

Kubernetes管理集群资源的唯一入口是调用apiserver的接口。kubectl是官方的CLI命令行工具,用于与apiserver进行通信,将用户在命令行输入的命令组织并转化为apiserver能识别的信息,进而管理Kubernetes各种资源。

(一)部署应用

1、 命令行方式部署应用

(1) 创建deployment

kubectl create deployment nginx --image=nginx

//查看deployment

kubectl get deployments

image-20220103211041438

deplyment创建成功。

(2) 创建服务

//使用kubectl expose命令创建服务

kubectl expose deployment nginx --type=NodePort --port=80 --target-port=80 --name=nginx-service

//也可以使用kubectl create service命令创建服务

kubectl create service nodeport nginx --tcp 80:80

//查看服务

kubectl get service

image-20220103211054814

service创建成功。

(3) 设置端口转发

kubectl port-forward service/nginx-service 8080:80

image-20220103211107250

将CentOS虚拟机的8080端口转发到minikube节点的80端口

(4) 访问应用

在CentOS 7虚拟机中使用浏览器访问本地8080端口

image-20220103211125113

可看到nginx的欢迎界面:

image-20220103211140943

2、 使用yaml文件部署应用

(1) 生成deployment的yaml文件

//下面的命令只生成文件,不会真的创建deployment

kubectl create deployment hello-minikube --image=k8s.gcr.io/echoserver:1.4 --dry-run=client -o yaml > hello.yaml

//nginx.yaml文件的内容:

apiVersion: apps/v1 #API对象版本

kind: Deployment #资源类型,区分大小写

metadata:

creationTimestamp: null

labels:

app: hello-minikube

name: hello-minikube #当前Deployment对象名称,同一个命名空间下必须唯一

spec:

replicas: 1 #指定Pod数量

selector: #选择器,定义了Deployment如何找到要管理的Pod

matchLabels: #匹配标签

app: hello-minikube #待匹配的标签键值对

strategy: {}

template: #Pod模板定义

metadata:

creationTimestamp: null

labels: #Pod标签

​ app: hello-minikube #定义Pod标签,由键值对组成

spec: #Pod规范

containers: #容器列表,Pod中至少有一个容器

- image: k8s.gcr.io/echoserver:1.4 #镜像名称

​ name: echoserver #容器名称

​ resources: {}

status: {}

以上是文件内容。我们可以针对文件内容进行更改,使其满足需要。

(2) 应用yaml文件,创建deployment

kubectl apply -f hello.yaml

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wHZujFkz-1641216143006)(C:\Users-\AppData\Roaming\Typora\typora-user-images\image-20220103211205328.png)]

deployment创建成功。

(3) 生成service的yaml文件

//下面的命令只生成文件,不会真的创建service

kubectl create service nodeport hello-minikube --tcp 8080:8080 --dry-run=client -o yaml > hello-service.yaml

//nginx-service.yaml文件的内容

apiVersion: v1

kind: Service #资源类型为服务

metadata:

creationTimestamp: null

labels:

app: hello-minikube

name: hello-minikube

spec:

ports:

- name: 8080-8080

port: 8080

protocol: TCP

targetPort: 8080

selector:

app: hello-minikube

type: NodePort

status:

loadBalancer: {}

以上是nginx-service.yaml文件的内容,可根据需要对其进行更改。

(4) 应用yaml文件,创建service

kubectl apply -f hello-service.yaml

image-20220103211229041

service创建成功

(5) 设置端口转发

kubectl port-forward service/hello-minikube 1080:8080

image-20220103211247200

(6) 访问应用

在CentOS 7虚拟机中使用浏览器访问本地1080端口

firefox 127.0.0.1:1080

image-20220103211306041

(二)kubectl查看类命令

1、 查看kubectl版本

kubectl version

image-20220103211318963

分别输出了客户端和服务端的版本。

2、 查看集群信息

(1) 查看集群信息

kubectl cluster-info

image-20220103211329975

输出了访问kubernetes控制平面和KubeDNS的URL。

(2) 查看名称空间

kubectl get namespaces

image-20220103211343400

存在多个名称空间,其中default名称空间用于部署用户的应用程序。

(3) 查看节点

kubectl get nodes

image-20220103211353775

minikube 只有一个节点。

3、 查看deployment的信息

(1) 查看deployment、服务和pod

kubectl get pods,deployment,svc

image-20220103211406650

未指定名称空间,则显示default名称空间的资源。

4、 查看pod信息

(1) 查看pod和所在的node

kubectl get pods -o wide

image-20220103211417873

minikube只有一个node。

(2) 查看全部名称空间中的pod

kubectl get pod -A

image-20220103211433903

(3) 查看pod的环境变量

kubectl exec nginx-6799fc88d8-jl6hn env

image-20220103211525490

(4) 查看指定pod的日志

kubectl logs -f --tail 500 -n default hello-minikube-6ddfcc9757-srq2p

image-20220103211536161

(5) 查看异常的pod

kubectl get pods -A | grep -v Running

image-20220103211547037

5、 查看service信息

(1) 查看所有名称空间的service信息

kubectl get service -A

image-20220103211557524

(三)kubectl操作类命令

1、 进入容器

//查看pod

kubectl get pod | grep nginx

//因pod中只有一个容器,可直接进入容器

kubectl exec -it nginx-5bb6c97bfd-t9hcj -n default /bin/sh

image-20220103211609536

//在容器中执行命令但不进入容器的shell

kubectl exec nginx-5bb6c97bfd-t9hcj – ls /

image-20220103211628027

2、 设置标签

//为指定节点添加标签

kubectl label nodes minikube zone=qianxin

image-20220103211637571

//查看节点标签

kubectl get node --show-labels

image-20220103211648311

//通过标签查找节点

kubectl get node -l zone=qianxin

image-20220103211700159

//删除节点的标签

kubectl label nodes minikube zone-

image-20220103211712597

//为指定pod添加标签

kubectl label pod nginx-6799fc88d8-jl6hn -n default role-name=test

image-20220103211723559

//查看pod的标签

kubectl get pod nginx-6799fc88d8-jl6hn -o yaml | grep role-name

image-20220103211734146

//修改pod的标签值

kubectl label pod nginx-6799fc88d8-jl6hn -n default role-name=dev --overwrite

image-20220103211746223

//删除pod的标签

kubectl label pod nginx-6799fc88d8-jl6hn -n default role-name-

image-20220103211756647

3、 限制资源使用

//将deployment的nginx容器cpu限制为300m,将内存限制为512Mi

kubectl set resources deployment nginx -c=nginx --limits=cpu=300m,memory=512Mi

image-20220103211808136

4、 编辑配置文件

//编辑指定pod的配置文件

kubectl edit pods nginx-5bb6c97bfd-t9hcj

image-20220103211826863

//编辑指定deployment的配置文件

kubectl edit deployment nginx

(四)删除应用

1、 停止转发

ctrl-c即可停止

2、 删除service

kubectl delete service nginx-service

image-20220103211856596

3、 删除deployments

kubectl delete deployments/nginx

删除deployment之后pod自然就被删除了。

image-20220103211906159

注意,在尚未删除deployment的情况下,pod可能无法被删除。

//也可以同时删除deployment和服务

kubectl delete deployments/nginx services/nginx-service

4、 通过删除配置文件来删除对应的资源对象

//删除deployment

kubectl delete -f hello.yaml

//删除服务

kubectl delete -f hello-service.yaml

image-20220103211919509

deployment和service都被删除了。

(五)可视化管理

Dashboard是基于网页的K8S用户界面。你可以使用Dashboard将容器应用部署到K8S集群中,也可以对容器应用排错,还能管理集群资源。

  • 查看Minikube内置插件,默认情况下Dashboard插件未启用:
minikube addons list
|-----------------------------|----------|--------------|
|         ADDON NAME          | PROFILE  |    STATUS    |
|-----------------------------|----------|--------------|
| dashboard                   | minikube | disabled     |
| default-storageclass        | minikube | enabled ✅   |
|-----------------------------|----------|--------------|
  • 启用Dashboard插件:
minikube addons enable dashboard
  • 开启Dashboard,通过--url参数不会打开管理页面,并可以在控制台获得访问路径:
minikube dashboard --url
* Verifying dashboard health ...
* Launching proxy ...
* Verifying proxy health ...
http://127.0.0.1:44469/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/
  • 要想从外部访问Dashboard,需要从使用kubectl设置代理才行,--address设置为你的服务器地址;
kubectl proxy --port=44469 --address='192.168.5.94' --accept-hosts='^.*' &
  • 从外部访问服务器需要开启防火墙端口;
# 切换到root用户
su -
# 开启端口
firewall-cmd --zone=public --add-port=44469/tcp --permanent
# 重启防火墙
firewall-cmd --reload
  • 通过如下地址即可访问Dashboard:
http://192.168.5.94:44469/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/
  • 查看K8S集群中的资源状态信息:

oard


- 开启Dashboard,通过`--url`参数不会打开管理页面,并可以在控制台获得访问路径:

minikube dashboard --url

  • Verifying dashboard health …
  • Launching proxy …
  • Verifying proxy health …
    http://127.0.0.1:44469/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/

- 要想从外部访问Dashboard,需要从使用kubectl设置代理才行,`--address`设置为你的服务器地址;

kubectl proxy --port=44469 --address=‘192.168.5.94’ --accept-hosts=’^.*’ &


- 从外部访问服务器需要开启防火墙端口;

切换到root用户

su -

开启端口

firewall-cmd --zone=public --add-port=44469/tcp --permanent

重启防火墙

firewall-cmd --reload


- 通过如下地址即可访问Dashboard:

http://192.168.5.94:44469/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/


- 查看K8S集群中的资源状态信息:

![image-20220103212033285](https://img-blog.csdnimg.cn/img_convert/f3f60b1d00c2c8d14dd3177a199fff7f.png)
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在CentOS 7上安装minikube,可以按照以下步骤进行操作: 1. 首先,清理yum缓存并更新yum源。执行以下命令: ``` yum clean all yum makecache ``` 2. 安装VirtualBox-5.2。执行以下命令: ``` yum install VirtualBox-5.2 ``` 3. 下载minikube并将其移动到/usr/local/bin目录下。执行以下命令: ``` curl -Lo minikube http://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && chmod +x minikube && mv minikube /usr/local/bin/ ``` 4. 下载kubectl。执行以下命令: ``` curl -LO "https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl" ``` 5. 将kubectl移动到/usr/local/bin目录下。执行以下命令: ``` chmod +x kubectl mv kubectl /usr/local/bin/ ``` 6. 设置KUBECONFIG环境变量。执行以下命令: ``` export KUBECONFIG=$HOME/.kube/config ``` 7. 最后,启动minikube。执行以下命令: ``` minikube start ``` 通过按照以上步骤进行操作,你就可以在CentOS 7上成功安装并启动minikube了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [centos7安装minikube](https://blog.csdn.net/tony_vip/article/details/123856588)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值