根据 Dockerfile构建image实例这篇文章,我们已经掌握了简单的docker镜像制作已经容器的使用。
本文将继续以简单为目标,学习使用k8s编排容器,目标就是可以使用k8s部署应用。

1.环境说明

  • k8s 1.18.13
  • docker 19.03.13
  • Ubuntu 18.04
  • 单节点 minikube

2.docker image

这里我使用本地镜像,查看镜像:

docker images

可以看到

REPOSITORY           TAG                  IMAGE ID            CREATED          SIZE
demo-app             0.0.1                16002709bd9e        5 hours ago      666MB

2.创建deployment.yaml

---
apiVersion: apps/v1
kind: Deployment
metadata:
    name: demo-app-deployment
spec:
    replicas: 2
    selector:
         matchLabels:
                 app: demo-app-deployment    
    template:
        metadata:
            labels:
               app: demo-app-deployment
        spec:
          containers:
             - name: demo-app-instance
               image: demo-app:0.0.1
               ports:
                - containerPort: 10086 

此时,我们执行指令

kubectl apply -f deployment.yaml

将得到如下提示:

deployment.apps/demo-app-deployment created

此时可以查看deployment

root@Ubuntu:$ kubectl get deployments
NAME                  READY   UP-TO-DATE   AVAILABLE   AGE
demo-app-deployment   2/2     2            2           32s

可以看到deployment部署完成。
这个时候就可以看到一件有pod部署成功:

root@Ubuntu:$ kgp
NAME                                   READY   STATUS    RESTARTS   AGE     IP           NODE                NOMINATED NODE   READINESS GATES
demo-app-deployment-7bd5fb97cc-9g7tp   1/1     Running   0          4h31m   172.17.0.5   host-192-168-0-26   <none>           <none>
demo-app-deployment-7bd5fb97cc-qwm2t   1/1     Running   0          4h31m   172.17.0.4   host-192-168-0-26   <none>           <none>

这个时候我们已经可以访问我们的web应用了,但是需要通过pod的ip来访问。
在这里插入图片描述
那想要通过主机IP地址来访问该怎么做呢?这就需要创建service了。

3.创建service.yaml

负载均衡


---
apiVersion: v1
kind: Service
metadata:
        name: demo-app-service
        labels:
                name: demo-app-service
spec:
   type: NodePort
   ports:
      - port: 10086
        targetPort: 10086
        protocol: TCP
        nodePort: 31338   # 端口地址范围30000-32767
   selector:
      app: demo-app-deployment #注意,这里的名称需要和deployment的名称一致,不要弄混了

这个时候继续执行

kubectl apply -f service.yaml

不出意外的话,将会得到这个:

service/demo-app-service created

查看service

root@Ubuntu:$ kubectl get service
NAME               TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)           AGE
demo-app-service   NodePort    10.108.117.71   <none>        10086:31338/TCP   33s
kubernetes         ClusterIP   10.96.0.1       <none>        443/TCP           14d

这个时候,就可以通过机器ip进行访问了。注意映射的端口号是31338
在这里插入图片描述
注意:这里的Type是NodeIP,还有别的类型如ClusterIP等。

3.k8s dashboard

聪明的小伙伴肯定看到我截图里留的dashboard了,可以进入到dashboard查看相关信息并进行操作。
在这里插入图片描述
service
在这里插入图片描述
pod
在这里插入图片描述
deployment

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐