美文网首页K8s
k8s学习(三):发布各种应用及错误排查(持续更新)

k8s学习(三):发布各种应用及错误排查(持续更新)

作者: 笔记本一号 | 来源:发表于2021-05-10 04:10 被阅读0次

一、发布springboot服务

这里是个很简单的springboot应用

拉取镜像上传到harbor仓库

//拉取镜像
docker pull openjdk:8u92-jdk-alpine
docker tag openjdk:8u92-jdk-alpine master128:8082/k8s/openjdk:8u92-jdk-alpine
//上传harbor仓库
docker push master128:8082/k8s/openjdk:8u92-jdk-alpine

编写dockerfile

cd /usr/k8sDemo/demo1

vim Dockerfile

From master128:8082/k8s/openjdk:8u92-jdk-alpine
COPY springbootdemo-0.0.1-SNAPSHOT.jar /springbootdemo-0.0.1-SNAPSHOT.jar
ENTRYPOINT ["java","-jar","/springbootdemo-0.0.1-SNAPSHOT.jar"]

构建镜像

docker build -t springbootdemo:v1 .
//查看镜像
docker images

docker tag springbootdemo:v0.46.0 master128:8082
//上传镜像到harbor
docker push master128:8082/k8s/springbootdemo:v1

运行镜像

docker run -it springbootdemo:v1

编写k8s配置文件,并且配置ingress

vim springbootdemo.yaml

#创建namespace
apiVersion: v1
kind: Namespace
metadata:
  name: ingress-demo
---
#nodePort的方式
apiVersion: v1
kind: Service
metadata:
  name: sbd-nsvc
  namespace: ingress-demo
spec:
  type: NodePort
  ports:
  - port: 80
    targetPort: 8083
  selector:
    app: spring-boot-demo
---
#使用Deployment创建pods
apiVersion: apps/v1
kind: Deployment #对象类型
metadata:
  name: spring-boot-demo
  namespace: ingress-demo
  labels:
    app: spring-boot-demo
spec:
  replicas: 1
  selector:
    matchLabels:
      app: spring-boot-demo
  template:
    metadata:
      labels:
        app: spring-boot-demo
    spec:
      containers:  #容器
      - name: spring-boot-demo
        image: master128:8082/k8s/springbootdemo:v1
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 8083  #这个端口对应我们项目配置文件里的端口
---
apiVersion: v1
kind: Service
metadata:
  name: sbd-svc
  namespace: ingress-demo
spec:
  type: ClusterIP
  ports:
  - port: 80
    targetPort: 8083 #对应容器的端口
  selector:
    app: spring-boot-demo #对应Deployment的标签

---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: sbd-ing
  namespace: ingress-demo
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - host: ingress.demo.com #域名
    http:
      paths:
      - path: /
        backend:
          serviceName: sbd-svc #对应Service的名字
          servicePort: 80 #对应Service的端口

执行配置文件

 kubectl apply -f springbootdemo.yaml

发生的错误及解决办法:

查看pod的情况,这里我没有启动成功,查看详细信息,原来是k8s没有与私有仓库认证

kubectl get pods -n ingress-demo -o wide
kubectl describe pod spring-boot-demo-7dff46b6f9-mbvn9 -n ingress-demo

创建harbor与k8s的认证

 kubectl create secret docker-registry ingressharbor --namespace=default --docker-server=master128:8082 --docker-username=admin --docker-password=123456

删除创建的各种资源

kubectl delete Ingress spring-boot-demo-ingress -n ingress-demo
kubectl delete service spring-boot-demo -n ingress-demo
kubectl delete Deployment  spring-boot-demo -n ingress-demo

#或者直接删除namespace 
kubectl delete namespace ingress-demo

重新执行文件

 kubectl apply -f springbootdemo.yaml

查看ingress-demo下的服务

kubectl get svc -n ingress-demo
nodePort的方式访问,响应成功
custerip的方式访问,响应成功

Ingress 的访问方式

首先配置ingress的pod所在node的ip与域名绑定

 kubectl get pods -n ingress-nginx -o wide 

相关文章

网友评论

    本文标题:k8s学习(三):发布各种应用及错误排查(持续更新)

    本文链接:https://www.haomeiwen.com/subject/gzcrdltx.html