K8s快速入门详解

一、容器与K8s

1、什么是容器

容器是一种轻量级的、可移植的虚拟化技术,将应用程序及其所有依赖项打包到一个可移植的图像中,以便在不同的计算环境中运行。容器提供了与虚拟机类似的隔离性,可以帮助开发人员在不同的环境中更加轻松地构建、打包、分发和部署应用程序。

2、什么是Kubernetes

Kubernetes(简称为K8s)是一个开源的容器编排平台。它可以帮助我们自动化地部署、扩展和管理容器化的应用程序,从而让我们更加轻松地管理复杂的分布式应用程序,同时也降低了运维的成本。

3、容器与K8s的关系

容器是K8s里面的基本组件,K8s通过容器对应用程序及其依赖项进行打包、分发和部署。K8s还提供了许多高级功能,比如负载均衡、伸缩、自动化应用程序部署等,可以帮助我们更加有效地管理容器化的应用程序。

二、K8s快速入门

1、环境准备


# 安装Minikube
curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 \ 
  && chmod +x minikube && sudo mv minikube /usr/local/bin/
# 安装Kubectl
curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s \ 
    https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl \ 
    && chmod +x kubectl && sudo mv kubectl /usr/local/bin/
# 启动Minikube集群
minikube start

2、创建一个Deployment


# 创建一个Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  # 应用程序副本数
  replicas: 3
  selector:
    # 匹配标签
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: nginx
          # 镜像名称
          image: nginx:1.14.2
          ports:
            - containerPort: 80

3、创建一个Service


# 创建一个Service
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    app: nginx
  ports:
    - name: http
      port: 80
      targetPort: 80
  type: LoadBalancer

4、访问应用程序


kubectl get service nginx-service
# 输出类似如下内容
# NAME            TYPE           CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE
# nginx-service   LoadBalancer   10.0.142.100        80:30709/TCP   111s
# 访问 EXTERNAL-IP:80 即可访问应用程序

三、使用K8s进行自动化部署

1、使用Docker构建应用程序镜像


# 在应用程序根目录下创建一个名为 Dockerfile 的文件
# 编写Dockerfile,示例:
FROM node:12.13.0-alpine

WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD [ "npm", "start" ]

# 构建镜像
docker build -t myapp:v1 .

2、使用Kubectl进行部署


# 创建一个Deployment
kubectl create deployment myapp --image=myapp:v1 --replicas=3
# 创建一个Service
kubectl expose deployment myapp --type=LoadBalancer --port=80

3、使用Helm进行自动化部署


# 安装Helm
curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash
# 添加一个Helm仓库
helm repo add stable https://charts.helm.sh/stable
# 安装一个Chart
helm install myapp stable/mysql

四、K8s的高级特性

1、自动伸缩

K8s可以根据资源利用率自动伸缩应用程序,让我们无需手动调整容器的数量。


apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp
spec:
  replicas: 3
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
      - name: myapp
        image: myapp:v1
        ports:
        - containerPort: 80
      resources:
        requests:
          cpu: 100m
          memory: 100Mi
        limits:
          cpu: 500m
          memory: 500Mi
---
apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
  name: myapp-hpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: myapp
  minReplicas: 1
  maxReplicas: 10
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 50

2、服务发现和负载均衡

K8s可以自动发现容器,并且提供了负载均衡功能,让我们轻松地访问容器化的应用程序。


apiVersion: v1
kind: Service
metadata:
  name: myapp
spec:
  ports:
  - name: http
    port: 80
    targetPort: 80
  selector:
    app: myapp
  type: ClusterIP
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: myapp-ingress
spec:
  backend:
    serviceName: myapp
    servicePort: 80

3、配置管理

K8s可以帮助我们轻松地管理应用程序的配置文件,让我们可以快速地更改应用程序的配置。


apiVersion: v1
kind: ConfigMap
metadata:
  name: myapp-config
data:
  DB_HOST: mydb
  DB_USER: user
  DB_PASSWORD: password
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp
spec:
  containers:
  - name: myapp
    image: myapp:v1
    envFrom:
    - configMapRef:
        name: myapp-config

五、总结

K8s是一个功能强大、灵活性高的容器编排平台,在大规模容器化应用程序的部署和管理方面有着重要的作用。本文通过从容器和K8s、K8s快速入门、自动化部署、K8s的高级特性等几个方面详细阐述了K8s的相关知识,并给出了相应的代码示例,相信读者可以更加深入地了解K8s,并将其应用到实际的开发工作中。

原创文章,作者:ZFLCR,如若转载,请注明出处:https://www.506064.com/n/369170.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
ZFLCRZFLCR
上一篇 2025-04-12 13:00
下一篇 2025-04-12 13:00

相关推荐

  • Python wordcloud入门指南

    如何在Python中使用wordcloud库生成文字云? 一、安装和导入wordcloud库 在使用wordcloud前,需要保证库已经安装并导入: !pip install wo…

    编程 2025-04-29
  • Ojlat:一款快速开发Web应用程序的框架

    Ojlat是一款用于快速开发Web应用程序的框架。它的主要特点是高效、易用、可扩展且功能齐全。通过Ojlat,开发人员可以轻松地构建出高质量的Web应用程序。本文将从多个方面对Oj…

    编程 2025-04-29
  • Python小波分解入门指南

    本文将介绍Python小波分解的概念、基本原理和实现方法,帮助初学者掌握相关技能。 一、小波变换概述 小波分解是一种广泛应用于数字信号处理和图像处理的方法,可以将信号分解成多个具有…

    编程 2025-04-29
  • Python竖线图:从入门到精通

    Python竖线图,即Python的绘图工具matplotlib中的一种图形类型,具有直观、易于理解的特点,适用于各种数据分析和可视化场景。本文从初学者角度出发,介绍Python竖…

    编程 2025-04-29
  • Python爬取数据指南-从入门到精通

    Python爬虫是指用Python编写程序,自动化地获取网络上的信息,并进行处理、分析和存储。以下是Python爬取数据的指南,从入门到精通。 一、获取网页数据 Python爬虫的…

    编程 2025-04-29
  • 二阶快速求逆矩阵

    快速求逆矩阵是数学中的一个重要问题,特别是对于线性代数中的矩阵求逆运算,如果使用普通的求逆矩阵方法,时间复杂度为O(n^3),计算量非常大。因此,在实际应用中需要使用更高效的算法。…

    编程 2025-04-28
  • Python自学多久能入门?

    Python是一门极具优势的编程语言,无论在人工智能、数据分析、Web开发等领域都有广泛的应用,所以越来越多的人开始学习Python。但是对于初学者来说,Python自学多久能入门…

    编程 2025-04-28
  • Python导出微信群聊天记录:从入门到实践

    微信群聊是我们日常生活中与家人、朋友聊天交流的重要平台。但是,当备份和查看微信群聊的聊天记录时,我们常常会遇到各种问题。这时,我们可以使用Python对微信群聊天记录进行导出、备份…

    编程 2025-04-28
  • Python熵权法入门指南

    本文将为你介绍Python熵权法的基础知识以及如何在实际应用中使用熵权法,让你能够更好地理解该算法并将其运用到实际工作中。 一、什么是Python熵权法? Python熵权法是一种…

    编程 2025-04-28
  • 西瓜创客python课程:从入门到精通

    本文将对西瓜创客python课程进行详细阐述。旨在为初学者提供一个从入门到精通的学习路径,并为已经有一定基础的人提供更深入的学习体验。 一、为什么选择西瓜创客python课程 西瓜…

    编程 2025-04-28

发表回复

登录后才能评论