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”

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

//安装kubectl

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

//查看版本

kubectl version --client

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

//设置kubectl自动补全

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

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

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

(二)安装和启动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

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

版本为1.20.0

4、 启动minikube集群

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

minikube start

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

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

5、 查看minikube状态

minikube status

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

6、 查看集群信息

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

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

7、 查看minikube创建的节点

//查看节点

kubectl get nodes

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

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

//查看节点的详情

kubectl get node -o wide

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

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

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

ssh root@192.168.49.2

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

至此,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

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

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

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

service创建成功。

(3) 设置端口转发

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

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

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

(4) 访问应用

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

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

可看到nginx的欢迎界面:

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

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

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

service创建成功

(5) 设置端口转发

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

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

(6) 访问应用

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

firefox 127.0.0.1:1080

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

(二)kubectl查看类命令

1、 查看kubectl版本

kubectl version

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

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

2、 查看集群信息

(1) 查看集群信息

kubectl cluster-info

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

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

(2) 查看名称空间

kubectl get namespaces

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

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

(3) 查看节点

kubectl get nodes

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

minikube 只有一个节点。

3、 查看deployment的信息

(1) 查看deployment、服务和pod

kubectl get pods,deployment,svc

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

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

4、 查看pod信息

(1) 查看pod和所在的node

kubectl get pods -o wide

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

minikube只有一个node。

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

kubectl get pod -A

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

(3) 查看pod的环境变量

kubectl exec nginx-6799fc88d8-jl6hn env

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

(4) 查看指定pod的日志

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

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

(5) 查看异常的pod

kubectl get pods -A | grep -v Running

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

5、 查看service信息

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

kubectl get service -A

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

(三)kubectl操作类命令

1、 进入容器

//查看pod

kubectl get pod | grep nginx

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

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

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

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

kubectl exec nginx-5bb6c97bfd-t9hcj – ls /

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

2、 设置标签

//为指定节点添加标签

kubectl label nodes minikube zone=qianxin

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

//查看节点标签

kubectl get node --show-labels

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

//通过标签查找节点

kubectl get node -l zone=qianxin

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

//删除节点的标签

kubectl label nodes minikube zone-

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

//为指定pod添加标签

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

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

//查看pod的标签

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

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

//修改pod的标签值

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

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

//删除pod的标签

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

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

3、 限制资源使用

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

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

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

4、 编辑配置文件

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

kubectl edit pods nginx-5bb6c97bfd-t9hcj

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

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

kubectl edit deployment nginx

(四)删除应用

1、 停止转发

ctrl-c即可停止

2、 删除service

kubectl delete service nginx-service

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

3、 删除deployments

kubectl delete deployments/nginx

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

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

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

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

kubectl delete deployments/nginx services/nginx-service

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

//删除deployment

kubectl delete -f hello.yaml

//删除服务

kubectl delete -f hello-service.yaml

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

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://www.icode9.com/i/ll/?i=img_convert/f3f60b1d00c2c8d14dd3177a199fff7f.png)
上一篇:Kapacitor 教程


下一篇:nginx解析php请求为404