Kubernetes - 从Docker 镜像到K8s Pod操作示例

上一篇有写到怎样将一个普通的springboot的jar包,制作成docker镜像,并push到镜像仓库,

Docker - 创建并运行一个docker(springboot)容器    启动这个docker容器,并对外提供服务等等;

这里我们介绍下,怎样将你做好的容器纳入K8S的统筹管理之下;let`s go

1、首先你要有一个k8s环境,例如   kubectl version

Client Version: version.Info{Major:"1", Minor:"11", GitVersion:"v1.11.2", GitCommit:"bb9ffb1654d4a729bb4cec18ff088eacc153c239", GitTreeState:"clean", BuildDate:"2018-08-07T23:17:28Z", GoVersion:"go1.10.3", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"11", GitVersion:"v1.11.2", GitCommit:"bb9ffb1654d4a729bb4cec18ff088eacc153c239", GitTreeState:"clean", BuildDate:"2018-08-07T23:08:19Z", GoVersion:"go1.10.3", Compiler:"gc", Platform:"linux/amd64"}

2、将我们做好的docker镜像push到镜像仓库(例如xxx-xxx:5000)

docker push xxx-xxx:5000/docker.io/http-server:v1.0

The push refers to a repository [xxx-xxx:5000/docker.io/http-server]
54c2f122xxx: Pushed 
2dd3536cxxx: Pushed 
28982f07xxx: Pushed 
5a3181efxxx: Pushed 
9323bf93xxx: Layer already exists 
35c20f26xxx: Layer already exists 
c3fe59ddxxx: Layer already exists 
6ed1a81bxxx: Layer already exists 
a3483ce1xxx: Layer already exists 
ce6c8756xxx: Layer already exists 
30339f20xxx: Layer already exists 
0eb22bfbxxx: Layer already exists 
a2ae92ffxxx: Layer already exists 
v1.0: digest: sha256:b812c4c7bf5cdb3eba4df544da4efc69d71eef size: 3041

3、我们在镜像仓库已经有我们需要的镜像的情况下,编写  springboot-httpserver-rc.yaml

apiVersion: v1
kind: ReplicationController
metadata:
  name: http-server
  labels:
    name: http-server
spec:
  replicas: 2
  selector:
    name: http-server
  template:
    metadata:
     labels:
       name: http-server
    spec:
     containers:
     - name: http-server
       image: xxx-xxx:5000/docker.io/http-server:v1.0  #此处的xxx是你镜像仓库的名字
       imagePullPolicy: IfNotPresent
       volumeMounts:
       - name: config-volume
         mountPath: /home/daopinz/test/
       ports:
       - containerPort: 12222
     volumes:
     - name: config-volume
       emptyDir: {}
    #   configMap:
    #     name: httpserver-config-1

4、我们需要将服务提供出去供调用,就需要把服务端口暴露出去编写springboot-httpserver-svc.yaml

apiVersion: v1
kind: Service
metadata:
  name: http-server
  labels:
    name: http-server
spec:
  type: NodePort 
  ports:
  - port: 12222
    nodePort: 32222
  selector:
    name: http-server

5、创建pod(以RC方式): kubectl create -f springboot-httpserver-rc.yaml

6、创建service(以SVC方式) : kubectl create -f springboot-httpserver-svc.yaml

7、此时

            kubectl get pods 即可看到已经启动的Pod

            kubectl get rc 即可看到已经启动的RC

            kubectl get svc 即可看到已经启动的SVC

8、删除pod,可直接执行kubectl delete pod  podname  但是会被rc的配置主动拉起来

所以我们可以执行kubectl delete -f springboot-httpserver-rc.yaml或者kubectl delete rc http-server,可彻底删除对应pod

9、删除service,可以直接执行kubectl delete -f springboot-httpserver-svc.yaml或者kubectl delete svc http-server ,可彻底删除对应svc

 

posted @ 2022-01-27 18:36  zhangdaopin  阅读(647)  评论(0编辑  收藏  举报