kubernetes (1) construye un ejemplo simple

¿Qué son los Kubernetes?

Es una nueva solución líder para arquitectura distribuida basada en tecnología de contenedores. Si bien esta solución aún es muy nueva, es un resultado importante de los más de diez años de experiencia acumulada y sublimada de Google al confiar en la aplicación a gran escala de la tecnología de contenedores. Automatice la gestión de recursos y maximice la utilización de recursos en varios centros de datos

En segundo lugar, si el diseño de nuestro sistema sigue la idea de diseño de Kubernetes, el código subyacente o los módulos funcionales en la arquitectura del sistema tradicional que tienen poco que ver con el negocio pueden desaparecer inmediatamente de nuestra vista y ya no tenemos que preocuparnos por la carga. equilibradores y Para problemas de implementación y despliegue, no hay necesidad de considerar hacer referencia o desarrollar un marco de gobierno de servicios complejo por sí mismo, y ya no tiene que preocuparse por el desarrollo de módulos de manejo de fallas y monitoreo de servicios. Utilizando la solución proporcionada por Kubernetes, solo ahorramos no menos del 30% del costo de desarrollo, y al mismo tiempo podemos enfocarnos más en el negocio en sí, y debido a que Kubernetes proporciona un mecanismo de automatización poderoso, la operación y mantenimiento posterior del sistema. es difícil y difícil de mantener Los costos se reducen considerablemente.

Kubernetes es una plataforma de desarrollo para el desarrollo. No se define una interfaz de programación, por lo que los servicios escritos en Java, Go, C++ o Python se pueden asignar a los servicios de Kubernetes sin ninguna dificultad e interactuar a través de protocolos de comunicación TCP estándar. Además, dado que la plataforma Kubernetes no interfiere con los lenguajes de programación, los marcos de programación y los precios medios existentes, los sistemas existentes están muy organizados en contenedores, actualizados y migrados a la plataforma Kubernetes.

Kubernetes es una plataforma completa de soporte de sistemas distribuidos. Kubernetes tiene capacidades completas de administración de clústeres, incluidos mecanismos de acceso y protección de seguridad de varios niveles, capacidades de soporte de aplicaciones de múltiples inquilinos, mecanismos transparentes de registro y descubrimiento de servicios, y balanceo de carga inteligente integrado. Servidor , potentes funciones de detección de fallas y autorreparación, actualización continua de servicios y capacidades de expansión en línea, mecanismo escalable de programación automática de recursos y capacidades de administración de cuotas de recursos de granularidad múltiple. Al mismo tiempo, Kubernetes proporciona herramientas de administración integrales que cubren todos los aspectos, incluido el desarrollo, las pruebas de implementación y la supervisión de la operación y el mantenimiento. Por lo tanto, Kubernetes es una nueva solución de arquitectura distribuida basada en la tecnología de contenedores y una plataforma completa de soporte y desarrollo de sistemas distribuidos integral.

Por qué usar kubernetes

Podemos desarrollar sistemas complejos "a la ligera". Después de adoptar la solución de Kubernetes, solo se necesita un equipo pequeño y capaz para manejarlo fácilmente. En este equipo, un arquitecto se enfoca en el refinamiento de los "componentes de servicio" del sistema, varios ingenieros de desarrollo se enfocan en el desarrollo del código comercial, y un ingeniero de sistemas y operación y mantenimiento es responsable de la implementación, operación y mantenimiento de Kubernetes, y nunca se volverá a utilizar." 996", no porque hayamos hecho menos, sino porque Kubernetes ya ha hecho mucho por nosotros.

El uso de Kubernetes se trata de adoptar la arquitectura de microservicios. El núcleo de la arquitectura de microservicio es descomponer una enorme aplicación monolítica en muchos pequeños microservicios interconectados. Un microservicio puede estar respaldado por múltiples copias de instancias, y la cantidad de copias puede variar según la carga del sistema social. Modificada, la carga en línea El equilibrador juega un papel importante aquí. La arquitectura de microservicios permite que cada servicio sea desarrollado por un equipo de desarrollo dedicado, y los desarrolladores pueden elegir libremente la tecnología de desarrollo, lo cual es muy valioso para los equipos a gran escala. Además, cada microservicio se desarrolla, actualiza y expande de forma independiente, por lo que el El sistema tiene una alta estabilidad y una rápida capacidad de evolución iterativa. Google, Amazon, eBay y otros fabricantes nacionales también han adoptado la arquitectura de microservicios. Esta vez, Google ha empaquetado la infraestructura de la arquitectura de microservicios directamente en la solución de Kubernetes, lo que nos brinda la oportunidad de aplicar directamente la arquitectura de microservicios para resolver negocios complejos. cuestiones arquitectónicas.

La arquitectura del sistema Kubernetes tiene fuertes capacidades de expansión horizontal. Para las empresas de Internet, la escala de usuarios es equivalente a los activos, y quien tenga más usuarios puede ganar la competencia. Por lo tanto, la capacidad de expansión súper horizontal es uno de los indicadores clave del sistema comercial de Internet. Sin modificar el código, un clúster de Kubernetes puede expandirse sin problemas desde un clúster pequeño que contiene solo unos pocos nodos hasta un clúster a gran escala con cientos de nodos. Usando las herramientas proporcionadas por Kubernetes, incluso podemos completar la expansión del clúster en línea. Siempre que nuestros microservicios estén bien diseñados, combinados con el aumento lineal de hardware o recursos de nube pública, el sistema puede soportar la enorme presión del acceso simultáneo de una gran cantidad de usuarios.

ejemplo sencillo

Un vestido minikube

brew install minikube
复制代码

image.png

Minicubo dinámico

minikube start
复制代码

image.pngMotivo: docker no se inició, después de iniciar docker, se inició correctamente

image.pngY una ventana acoplable más

image.png

Comprobar el estado de ejecución de kuber

kubectl cluster-info
复制代码

image.png

conectarse a este nodo a través de ssh

minikube ssh
复制代码

image.png

crear mysql

创建好 mysql-rc.yaml文件后,为了将它发布到kubernetes集群中,我们在Master节点执行命令:

kubectl create -f mysql-rc.yaml
复制代码

image.png

Kubernetes 通过template来生成pod,创建完后模板和pod就没有任何关系了,rc通过 labels来找对应的pod,控制副本。接下来,我们用kubectl命令查看刚刚创建的RC:

kubectl get rc
复制代码

image.png

然后,我们创建一个与之关联的 Kubernetes Service——MySQL的定义文件 mysql-svc.yaml

apiVersion: v1
kind: Service
metadata:
  name: mysql
spec:
  ports:
  - port: 3306
  selector:
    app: mysqls
复制代码

运行 kubectl命令,创建service:

kubectl create -f mysql-svc.yaml 
复制代码

image.png 运行 kubectl 命令,可以查看到刚刚创建的service:

kubectl get svc
复制代码

image.png 注意到MySQL服务被分配了一个值为10.102.12.112的Cluster IP地址,这是一个虚地址,随后,Kubernetes集群中其他新创建的Pod就可以通过Service的Cluster IP+ 端口号3306来连接和访问它了。

在通常情况下,Cluster IP 是在Service创建后,由Kubernetes 系统自动分配的,其他Pod无法预先知道某个Service的Cluster IP地址,因此需要一个服务发现机制来知道这个服务。为此,最初时,Kubernetes巧妙地使用率Linux环境变量来解决这个问题。现在我们只需要知道,根据Service的唯一名字,容器可以从环境变量中获取到Service对应的Cluster IP 地址和端口,从而发起 TCP/IP 连接请求了。

启动tomcat应用

上面我们定义和启动了Mysql服务,接下来我们采用同样的步骤,完成Tomcat应用的启动过程。首先,创建对应的 RC 文件 myweb-rc.yaml,内容如下:

apiVersion: v1
kind: ReplicationController
metadata:
  name: myweb
spec:
  replicas: 2
  selector:
    app: myweb
  template:
    metadata:
      labels:
        app: myweb
    spec:
      containers:
      - name: myweb
        image: kubeguide/tomcat-app:v1
        ports:
        - containerPort: 8080
        env:
        - name: MYSQL_SERVICE_HOST
          value: "mysql"
        - name: MYSQL_SERVICE_PORT
          value: "3306"
复制代码

注意,Tomcat容器内,应用将使用环境变量 MYSQL_SERVICE_HOST 的值连接MySQL服务。更安全可靠的用法是使用服务的名称 "mysql", 运行下面的命令,完成RC的创建和验证工作。

kubectl create -f myweb-rc.yaml 
复制代码

image.png 最后,创建对应的Service:。以下是完整的yaml定义文件:

apiVersion: v1
kind: Service
metadata: 
  name: myweb
spec:
  type: NodePort
  ports:
    - port: 8080
      nodePort: 30001
  selector:
    app: myweb
复制代码

type=NodePort 和 nodePort=30001 的两个属性,表示此 Service开启了 NodePort方式的外网访问模式,在Kubernetes集群之外,比如在本机的浏览器里,可以通过 30001 这个端口访问myweb(对应 8080 的虚端口上)。

运行 kubectl create 命令进行创建:

kubectl create -f myweb-svc.yaml 
复制代码

image.png

运行kubectl get svc

image.png 运行kubectl get rc

image.png

至此,我们的第1个Kubernetes 例子搭建完成了,通过浏览器访问网页

http://localhost:30001/
复制代码

image.png

参考

[1]Kubernetes入门
[2]mac安装启动minikube

Supongo que te gusta

Origin juejin.im/post/7084926299340275743
Recomendado
Clasificación