请看之前的博客:Dockerfile制作镜像部署springboot项目
Deployment对象,顾名思义,是用于部署应用的对象。它是Kubernetes中最常用的一个对象,它为ReplicaSet和Pod的创建提供了一种声明式的定义方法,从而无需像手动创建ReplicaSet和Pod对象。使用Deployment而不直接创建ReplicaSet是因为Deployment对象拥有许多ReplicaSet没有的特性,例如滚动升级和回滚。
通过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
1.下载地址:kubectl.exe
放到D:\Program Files\kubectl
2.在用户目录(C:\Users\Administrator)新建目录.kube,拷贝master节点config
打开看下
到本机C:\Users\Administrator.kube目录下
3.打开cmd窗口,执行命令kubectl get nodes
执行之前,在每个节点的/etc/docker/daemon.json文件添加
“insecure-registries”: [“192.168.136.133:5001”],这样就可以以http协议访问私有的harbor仓库,原因是我的harbor设置的http,没有配置https。
kubectl create namespace tt
kubectl apply -f Deployment.yaml
kubectl get pods -o wide -n tt
一个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
浏览器访问三个节点的地址都能访问到192.168.136.129:31298/192.168.136.131:31298/192.168.136.132:31298