kubernetes部署示例

kubernetes是自动化容器开源平台,实现自动化容器部署,docker可以看做kubernetes的底层组件。kubernetes主要通过部署文件.yaml实现多层容器的完整集群部署。使用kubectl命令行来和kubernetes API进行交互。

一、部署指令

指定目录下创建deployment目录、service目录管理deployment和service的.yaml配置文件。

通过编写对应的.yaml配置文件拉取相应镜像,使用kubectl命令行创建pod和service服务。(以hello-server服务为例)

kubectl create -f hello-server.yaml

kubectl create -f hello-server -svc.yaml

查看delpoyment

kubectl get deployment

查看deployment部署的pod是否运行

kubectl get pod

查看service

kubectl get service

查看node

kubectl get nodes

删除deployment

kubectl delete deployment hello-server

删除service

kubectl delete service hello-server -svc

 

二、deployment.yaml文件模版(hello-server.yaml为例)

pod是kubernetes的最基本操作单元,看成对容器的进一步封装。通过deployment上线或部署一个pod,deployment通过.yaml文件配置相应镜像,容器端口等信息。注意镜像拉取更新策略,设置imagePullPolicy:Always保持每次都自动重新拉取镜像。

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: hello-server
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: hello-server
    spec:
      containers:
      - name: hello-server
        image: hello-server:1.0.0
        imagePullPolicy: Always
        ports:
        - containerPort: 8080

 

三、service-svc.yaml文件模版(hello-server-svc.yaml为例)

每个pod都会被分配一个单独的IP地址,但是这个IP地址会随时pod的销毁而消失,重启后的pod将可能会被分配一个新的IP地址。如果有一组pod组成一个集群来提供服务,kubernetes通过service来访问这个集群。

一个service可以看作一组提供相同服务的pod的对外访问接口。service被创建时即被分配一个IP地址,在该service被销毁之前这个IP地址不变。

service通过.yaml文件配置相应的服务和外部访问端口等信息。kubernetes支持两种对外提供服务的service的type定义:NodePort和LoadBalancer。采用nodePort对外提供服务访问。.yaml文件指定spec.ports.nodePort的值,系统就会在kubernetes集群中的每个node上打开一个主机上的真实端口号。这样,能够访问node的客户端都就能通过这个端口号访问到内部的service。node就是承载pod运行的宿主主机。

kind: Service
apiVersion: v1
metadata:
  name: hello-server-svc
spec:
  selector:
    app: hello-server
  ports:
  - protocol: TCP
    port: 8080
    targetPort: 8080

 

四、hello-ingress.yaml文件模版

修改ingress & nginx

4.1创建hello的ingress文件:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: hello-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - http:
      paths:
      - path: /hello-server
        backend:
          serviceName: hello-server-svc 
          servicePort: 8080
      

4.2 修改nginx,增加如下配置

server {

        listen 9000;

        server_name 172.31.205.28;


        location / {

           #index index.html;

           proxy_pass http://172.31.205.28/hello-server /;

        }


        error_page 404 /404.html;

        location = /50x.html {

            root apps/hello;

        }

    }

 

注:.yaml大小写敏感

 

修改k8s默认端口

/etc/kubernetes/manifests/kube-apiserver.yaml

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值