k8s集群搭建学习-部署一个自定义java服务
一、创建docker镜像
- dockerFile
FROM openjdk:13
LABEL by=jty name=docker_boot description="k8s测试" version="v1.0"
RUN mkdir -p /usr/local/k8s/
RUN cd /usr/local/k8s/
WORKDIR /usr/local/k8s
COPY k8s-test-1.0-SNAPSHOT.jar /usr/local/k8s/k8s-test-1.0-SNAPSHOT.jar #k8s-test-1.0-SNAPSHOT.jar为打包后的jar包
EXPOSE 8012
ENTRYPOINT ["java", "-jar", "k8s-test-1.0-SNAPSHOT.jar"]
- 创建镜像
docker build -f /usr/local/k8s/dockerFile -t k8s-test:v1.0 . #保证编辑的dockerFile在-f后的目录中存在
docker images #查看镜像,该镜像在本地镜像仓库,可通过配置提交到如阿里云镜像仓库等服务器
创建namespace、deployment、service
#vim k8s-test-namespace.yaml
#创建名称空间
apiVersion: v1
kind: Namespace
metadata:
name: dev
labels:
name: k8s-test
#vim k8s-test-deploy.yaml
#创建deployment
apiVersion: apps/v1 # 1.9.0 之前的版本使用 apps/v1beta2,可通过命令 kubectl api-versions 查看
kind: Deployment #指定创建资源的角色/类型
metadata: #资源的元数据/属性
name: k8s-test-deploy #资源的名字,在同一个namespace中必须唯一
namespace: dev #命名空间
labels:
app: k8s-test #标签
spec:
replicas: 2 #副本数量2
strategy:
rollingUpdate: ##由于replicas为3,则整个升级,pod个数在2-4个之间
maxSurge: 1 #滚动升级时会先启动1个pod
maxUnavailable: 1 #滚动升级时允许的最大Unavailable的pod个数
selector: #定义标签选择器,部署需要管理的pod(带有该标签的的会被管理)需在pod 模板中定义
matchLabels:
app: k8s-test
template: #这里Pod的定义
metadata:
labels: #Pod的label
app: k8s-test
spec: # 模板的规范
containers:
- name: k8s-test #容器的名字
image: k8s-test:v1.0 #容器的镜像地址
imagePullPolicy: IfNotPresent
resources: ##CPU内存限制
requests:
cpu: 2
memory: 1024Mi
limits:
cpu: 2
memory: 1024Mi
ports:
- name: http
containerPort: 8012 #对service暴露端口
#vim k8s-test-service.yaml
#创建service
apiVersion: v1
kind: Service
metadata:
name: k8s-test-service
spec:
selector:
app: k8s-test
ports:
- protocol: TCP
port: 8012 # 需要暴露的集群端口(service暴露的)
targetPort: 8012 # 容器的端口(后端容器提供服务的端口)
type: NodePort
测试
-
在其中一个节点上查看容器运行情况
-
访问测试