K8s简单部署

一、 环境准备:MiniKube+Docker:

最近开始尝试学习和了解k8s,写这篇文章的目的是进行一个记录,
在探索中学习。欢迎各位大佬前来参观和交流。

1. 安装Docker:

使用IDEA+Docker继续简单的打包部署系列

2. 安装MiniKube:

Minikube 是本地 Kubernetes,专注于让 Kubernetes 易于学习和开发。官方文档:[Minikube官方安装文档]

二、准备:

创建yaml文件:

vi deployment.yaml

配置内容:

apiVersion: apps/v1
kind: Deployment # 配置类型
metadata:
  name: getway-server # 要部署的项目名
  labels:
    app: getway-app # 项目标签
spec: # 规格参数
  # replicas: 2 # 表示有两个 docker-demo 的Pod
  selector:
    matchLabels:
      app: getway-app
  template:
    metadata:
      labels:
        app: getway-app
    spec:
      containers:
        - name:  getway  # 容器名
          # image: getway:v1.0 # 镜像名:tag # 本地仓库
          image: registry.cn-chengdu.aliyuncs.com/xx/xx:getway-v1.0 # 远程仓库
          imagePullPolicy: IfNotPresent #Never只使用本地镜像,Always 每次都下载镜像,IfNotPresent	优先使用本地没有再去下载
          ports:
            - containerPort: 3010 # 容器端口
---
apiVersion: v1
kind: Service # 配置类型
metadata:
  name: getway-service # 服务的名称
  # namespace: demo # 命名空间 kubectl create namespace demo
spec: # 规格参数
  ports:
    - port: 3010 # 集群内部访问Service端口号
      protocol: TCP
      # nodePort: 30001 # 集群外部访问Service端口号
      targetPort: 3010 # Pod端口号
  type: LoadBalancer # 四种类型:LoadBalance、ExternalName、NodePort、ClusterIP
  selector:
    app: getway-app # 被Server 管理的Pod名称

k8s部署使用的镜像可以是本地镜像,或者使用镜像仓库远程拉取。

  1. 使用本地镜像:打包好镜像后,需要将镜像再推送到Minikube的Docker注册表;(Minikube是单机版的k8s,如果集群不推荐使用本地镜像这种方式,因为需要保证每个节点都要有这个镜像,操作不方便)
  2. 使用远程仓库:比如阿里云镜像仓库。远程镜像仓库又分为公有镜像和私有镜像。如果使用私有镜像还需要在k8s集群当中配置ca证书。使用公有镜像则不需要。

以下便是使用,本地镜像和远程公有镜像的两种方式的操作

1. 使用本地镜像:

先将目标镜像保存到本地

  docker save [REPOSITORY]:[TAG] > xx.tar

Minikube的Docker注册表(可以理解为k8s内部的Docker)

 eval $(minikube docker-env)

载入镜像到k8s内部的docker

docker load < xx.tar 

yaml文件中关于本地镜像的配置

containers:
  - name:  getway  # 容器名
     image: getway:v1.0 # 镜像名:tag # 本地仓库
     #image: registry.cn-chengdu.aliyuncs.com/xx/xx:getway-v1.0 # 远程仓库
     imagePullPolicy: Never #Never只使用本地镜像,Always 每次都下载镜像,IfNotPresent  优先使用本地没有再去下载
     ports:
       - containerPort: 3010 # 容器端口

2. 使用使用镜像仓库:

yaml中关于远程仓库镜像的配置

containers:
  - name:  getway  # 容器名
    # image: getway:v1.0 # 镜像名:tag # 本地仓库
    image: registry.cn-chengdu.aliyuncs.com/xx/xx:getway-v1.0 # 远程仓库
    imagePullPolicy: IfNotPresent #Never只使用本地镜像,Always 每次都下载镜像,IfNotPresent 优先使用本地没有再去下载
    ports:
      - containerPort: 3010 # 容器端口

三、启动:

执行配置文件

kubectl apply -f vi deployment.yaml

查看Pod的运行情况

kubectl get pod -o wide

或者使用Minikube自带的dashboard,执行命令

minikube dashboard

在这里插入图片描述

四、测试:

  1. 查看所有的Service
kubectl get svc

在这里插入图片描述
2. 临时对外开放API

minikube service getway-service --url

命令执行后,k8s会临时随机开放一个端口号,给外部访问。使用以下的URL便可以进行一波测试。
在这里插入图片描述在这里插入图片描述

五、暴露服务的几种方式:

k8s对外暴露服务的几种方式:

1. ClusterIp:

集群内部的私有ip,在集群内部访问服务非常方便,是kuberentes集群默认的方式,集群外部则是无法访问的。

2. NodePort:

要想让外部能够直接访问service,需要将service type修改为 nodePort,指定nodePort,将service监听端口映射到node节点。
(nodePort端口范围:30000-32767)

spec: # 规格参数                             
  ports:                                 
    - port: 3010 # 集群内部访问Service端口号      
      protocol: TCP                      
      nodePort: 30001 # 集群外部访问Service端口号 
      targetPort: 3010 # Pod端口号          
  type: NodePort # 四种类型:LoadBalance、ExternalName、NodePort、ClusterIP
  selector:                              
    app: getway-app # 被Server 管理的Pod名称   

3. LoadBalance:

  ports:                                                                
    - port: 3010 #集群内部访问Service端口号                                     
      protocol: TCP                                                                                  
      targetPort: 3010 # Pod端口号                                         
  type: LoadBalancer # 四种类型:LoadBalance、ExternalName、NodePort、ClusterIP 

在上面测试过程中,查看所有的Services,可以看到getway-service的 EXTERNAL-IP处于状态,接着执行以下命令。

minikube tunnel

此时dashborad查看Service,已经将外部访问需要的IP:Port暴露出来
在这里插入图片描述使用PostMan进行测试:
在这里插入图片描述

4. Ingress:

Ingress和Ingress Controller友情连接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值