1

部署K8s应用服务

1 搭建docker registry镜像私服(或者使用Harbor搭建)

docker run -d -p 5000:5000 --name registry2 --restart=always --privileged=true  -v  /var/docker/registry:/var/lib/registry  registry2
#--restart 标志会检查容器的退出代码,并据此来决定是否要重启容器,默认是不会重启
#--restart的参数说明 
#   always:无论容器的退出代码是什么,Docker都会自动重启该容器
#   on-failure:只有当容器的退出代码为非0值的时候才会自动重启

2 构建镜像并上传到docker registry

  1. 配置Dockerfile构建

     FROM java
     EXPOSE 8809
     ADD ./app-svc.jar app-svc.jar
     CMD java -jar ./app-svc.jar

    docker build -t app-server .

  2. 上传应用服务镜像

    镜像标记为 192.168.33.11:5000/app-svc:v1
      docker tag app-svc 192.168.33.11:5000/app-svc:v1  
      docker push 192.168.33.11:5000/app-svc:v1

3 在master节点创建服务

  1. 配置K8s文件app-svc.yaml如下:

     apiVersion: v1
     kind: ReplicationController
     metadata:
       name: app-svc-rc
     spec:
       replicas: 2
       selector:
         name: gw
       template:
         metadata:
           labels:
             name: app-svc
         spec:
           containers:
           - name: app-svc
             image: 192.168.33.11:5000/app-svc:v2
             ports:
             - containerPort: 8809
  2. 配置K8s文件app-svc.yaml如下:

       apiVersion: v1
        kind: Service
        metadata:
          name: app-svc-svc1
        spec:
          ports:
          - port: 8099
            targetPort: 8099
            nodePort: 30099
           type: NodePort
           selector:
            name: app-svc
    
  3. 创建

     kubectl create -f app-svc.yaml 
  4. 检查

     kubectl get po
    

4 访问http://192.168.33.10:30099

5 FYI:

    # 1. nodePort 外部流量访问k8s集群中service入口的一种方式(另一种方式是LoadBalancer),是提供给外部流量访问k8s集群中service的入口
    # 2. port k8s集群内部服务之间访问service的入口,即clusterIP:port是service暴露在clusterIP上的端口
    # 3. targetPort 容器的端口(最终的流量端口),targetPort是pod上的端口,从port和nodePort上来的流量,经过kube-proxy流入到后端pod的targetPort上,最后进入容器

邓邓
142 声望5 粉丝