K8S系列三——集群环境部署应用

文章目录

    • 一、制作镜像push到harbor
    • 二、编写Deployment.yaml
    • 三、windows环境安装kubectl
    • 四、执行部署命令
      • 4.1 部署Deployment.yaml
      • 4.2 部署Service.yaml

一、制作镜像push到harbor

请看之前的博客:Dockerfile制作镜像部署springboot项目

二、编写Deployment.yaml

Deployment对象,顾名思义,是用于部署应用的对象。它是Kubernetes中最常用的一个对象,它为ReplicaSet和Pod的创建提供了一种声明式的定义方法,从而无需像手动创建ReplicaSet和Pod对象。使用Deployment而不直接创建ReplicaSet是因为Deployment对象拥有许多ReplicaSet没有的特性,例如滚动升级和回滚。

通过Deployment对象,你可以轻松的做到以下事情:

  • 创建ReplicaSet和Pod
  • 滚动升级(不停止旧服务的状态下升级)和回滚应用(将应用回滚到之前的版本)
  • 平滑地扩容和缩容
  • 暂停和继续Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
  name: pai-sn
  labels:
  	#应用名称
    app: pai-sn
  #Deployment 命名空间
  namespace: tt
spec:
  #副本个数
  replicas: 2
  selector:
    matchLabels:
      app: pai-sn
  template:
    metadata:
      labels:
        app: pai-sn
    spec:
      containers:
        - name: pai-sn
      	  #docker镜像,已经部署到私有Harbor,指定拉取。
          image: 192.168.136.133:5001/library/pai-sn:alpine
          args:
          	#指定运行环境
            - --spring.profiles.active=test
          imagePullPolicy: Always
          ports:
            - containerPort: 8080
      imagePullSecrets:
      	#拉取私有镜像的密钥,如果镜像是公开的则不需要
        - name: login

三、windows环境安装kubectl

1.下载地址:kubectl.exe
放到D:\Program Files\kubectl
K8S系列三——集群环境部署应用_第1张图片

2.在用户目录(C:\Users\Administrator)新建目录.kube,拷贝master节点config
K8S系列三——集群环境部署应用_第2张图片
打开看下
K8S系列三——集群环境部署应用_第3张图片

到本机C:\Users\Administrator.kube目录下
K8S系列三——集群环境部署应用_第4张图片
3.打开cmd窗口,执行命令kubectl get nodes
K8S系列三——集群环境部署应用_第5张图片

四、执行部署命令

执行之前,在每个节点的/etc/docker/daemon.json文件添加
“insecure-registries”: [“192.168.136.133:5001”],这样就可以以http协议访问私有的harbor仓库,原因是我的harbor设置的http,没有配置https。

4.1 部署Deployment.yaml

kubectl create namespace tt
kubectl apply -f Deployment.yaml

在这里插入图片描述
查看 pod

kubectl get pods -o wide -n tt

在这里插入图片描述

4.2 部署Service.yaml

一个Service可以看作一组提供相同服务的Pods的对外访问接口,Service作用于哪些Pods是通过label selector来定义的,这些Pods能被Service访问,Pod之间的发现和路由(如应用中的前端和后端组件)由Kubernetes Service处理。Service有四种type: ClusterIP(默认)、NodePort、LoadBalancer、ExternalName. 其中NodePort和LoadBalancer两类型的Services可以对外提供服务。这里使用NodePort来配置
Service.yaml内容:

apiVersion: v1
kind: Service
metadata:
  name: pai-sn
  namespace: tt
  labels:
    app: pai-sn
    ingress: service
spec:
  type: NodePort #这里代表是NodePort类型的
  ports:
    - port: 8080 #这里的端口和clusterIP对应,即ip:8080,供内部访问。
      targetPort: 8080 #端口一定要和container暴露出来的端口对应
      #nodePort: 32143   # nodePort不指定自动产生,此端口供外部调用。
  selector:
    app: pai-sn

执行命令应用yaml

kubectl apply -f Service.yaml

K8S系列三——集群环境部署应用_第6张图片
浏览器访问三个节点的地址都能访问到192.168.136.129:31298/192.168.136.131:31298/192.168.136.132:31298

你可能感兴趣的:(kubernetes)