k8s的简单使用

k8s是Kubernetes的简称,是一个开源的容器编排系统,用于自动化部署、扩展和管理容器化应用程序。Kubernetes提供了一个框架来运行分布式系统的应用程序,它使得部署和运维服务变得更加容易,并能够在物理或虚拟机上运行跨集群的服务。

Kubernetes的主要特点包括:

  • 自动装箱:自动放置容器基于资源需求和其他限制,而无需牺牲可用性。
  • 自我修复:当容器失败时,它会重启替换容器,杀死不响应用户定义的健康检查的容器,并且在节点不可用时会重新调度那些节点的容器。
  • 水平扩展:通过简单的命令、用户界面,或根据 CPU 使用情况等指标自动扩展应用副本数量。
  • 服务发现和负载均衡:不需要修改应用程序的情况下就可以使用 Kubernetes 的服务发现机制。
  • 自动发布和回滚:可以逐步推出对应用或其配置的改变,以便在问题出现时可以自动回滚。

Kubernetes 支持多种容器运行时,例如 Docker 和 containerd。它非常适合用于微服务架构的部署和管理。

搭建 Kubernetes (k8s) 集群

搭建 Kubernetes (k8s) 集群可以通过多种方式进行,包括使用 Minikube(适合本地开发和测试)、kubeadm(适合生产环境)、云服务提供商的 Kubernetes 服务(如 Amazon EKS、Google GKE、Microsoft AKS 等),或其他工具如 Rancher、OpenShift 等。在这里,我将详细介绍使用 Minikubekubeadm 两种常见方式来搭建 Kubernetes 集群。

1. 使用 Minikube 搭建 Kubernetes

Minikube 是一个轻量级的 Kubernetes 实现,它将 Kubernetes 集群部署在本地计算机的虚拟机中,非常适合学习和开发目的。

步骤 1: 安装 Minikube

  1. 安装 kubectl

    • kubectl 是 Kubernetes 命令行工具,用于运行命令对 Kubernetes 集群进行操作。
    bash 复制代码
    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/kubectl
  2. 安装 Minikube

    • 访问 Minikube 的官方安装指南下载适合你操作系统的 Minikube 安装程序。

步骤 2: 启动 Minikube

bash 复制代码
minikube start

步骤 3: 验证集群状态

bash 复制代码
kubectl get nodes

2. 使用 kubeadm 搭建 Kubernetes

kubeadm 是一个官方工具,用于快速部署 Kubernetes 集群。

前提条件

  • 至少两台机器(一台作为 Master 节点,至少一台作为 Worker 节点)
  • 每台机器至少 2GB 的 RAM(建议更多)
  • 网络配置允许各个节点之间通信

步骤 1: 安装 kubeadm, kubelet, 和 kubectl

在所有节点上执行:

bash 复制代码
sudo apt-get update && sudo apt-get install -y apt-transport-https curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl

步骤 2: 初始化 Kubernetes Master

在 Master 节点上执行:

bash 复制代码
sudo kubeadm init --pod-network-cidr=192.168.0.0/16
  • 记录下 kubeadm join 命令输出,这是 Worker 节点加入集群所需的。

步骤 3: 设置 kubectl

在 Master 节点上执行:

bash 复制代码
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

步骤 4: 安装 Pod 网络插件

选择一个网络插件(如 Calico、Flannel 等)并在 Master 节点上安装:

bash 复制代码
kubectl apply -f [网络插件的 YAML 文件 URL]

步骤 5: 加入 Worker 节点

在每个 Worker 节点上执行步骤 2 中记录的 kubeadm join 命令。

步骤 6: 验证集群状态

在 Master 节点上执行:

bash 复制代码
kubectl get nodes

以上步骤分别概述了使用 Minikube 和 kubeadm 创建 Kubernetes 集群的过程。这两种方式分别适用于不同的应用场景,Minikube 更适合个人学习和开发测试,而 kubeadm 更适合生产环境的部署。

Kubernetes (k8s) 和 Docker 部署 Java Spring Cloud Alibaba 微服务

场景描述

在这个场景中,我们会使用 Spring Cloud Alibaba 的几个关键组件,包括 Nacos(服务发现和配置管理)和 Sentinel(服务容错管理)。我们的微服务架构将包括一个 Nacos 服务器、一个简单的 Spring Boot 应用作为服务提供者(Provider),以及一个消费这些服务的服务消费者(Consumer)。

  1. Nacos Server - 提供服务注册和配置管理。
  2. 服务提供者 (Provider) - 一个简单的 Spring Boot 应用,注册到 Nacos,提供 REST API。
  3. 服务消费者 (Consumer) - 一个 Spring Boot 应用,从 Nacos 发现服务提供者并调用其 API。

Docker 化应用

首先,每个组件都需要有一个 Dockerfile 来构建 Docker 镜像。

Dockerfile 示例 (对于 Provider)

dockerfile 复制代码
# Dockerfile for Service Provider
FROM openjdk:11-jdk
VOLUME /tmp
ADD build/libs/provider-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-Dspring.cloud.nacos.discovery.server-addr=nacos-server:8848","-jar","/app.jar"]

同样的方法可以应用于 Consumer 和其他任何 Spring Boot 应用。

Kubernetes 配置

Nacos Server 部署 (nacos-deployment.yaml)

yaml 复制代码
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nacos-server
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nacos-server
  template:
    metadata:
      labels:
        app: nacos-server
    spec:
      containers:
      - name: nacos-server
        image: nacos/nacos-server:latest
        ports:
        - containerPort: 8848

Nacos Server 服务 (nacos-service.yaml)

yaml 复制代码
apiVersion: v1
kind: Service
metadata:
  name: nacos-server
spec:
  ports:
  - port: 8848
    targetPort: 8848
  selector:
    app: nacos-server

Provider 和 Consumer 的部署及服务配置类似,需要调整应用名称、端口和 Docker 镜像名称。

使用 Minikube 或其他 Kubernetes 集群部署

部署到 Kubernetes 集群,确保你的 Docker 环境配置正确,并且 Kubernetes 集群正在运行。

bash 复制代码
# 创建 Docker 镜像
docker build -t provider:latest -f Dockerfile-provider .

# 使用 kubectl 应用 Kubernetes 配置
kubectl apply -f nacos-deployment.yaml
kubectl apply -f nacos-service.yaml

# 相同步骤应用于 Provider 和 Consumer

验证部署

部署完成后,可以通过检查 pod 状态和服务状态来验证部署:

bash 复制代码
kubectl get pods
kubectl get services

以上就是使用 Kubernetes 和 Docker 部署 Spring Cloud Alibaba 微服务的基本示例。这个配置适合在开发和测试环境中使用。对于生产环境,你可能需要考虑更多的安全设置、资源限制、持久化存储和高可用性配置。

相关推荐
骅青1 小时前
kubernetes调度2
容器·kubernetes
Alone80462 小时前
K8s中HPA自动扩缩容及hml
云原生·容器·kubernetes
神秘的土鸡3 小时前
Linux中使用Docker容器构建Tomcat容器完整教程
linux·运维·服务器·docker·容器·tomcat
玖石书3 小时前
docker 数据管理
docker·容器
一叶飘零_sweeeet4 小时前
为什么 Feign 要用 HTTP 而不是 RPC?
java·网络协议·http·spring cloud·rpc·feign
HoweWWW4 小时前
k8s-API 访问控制
云原生·容器·kubernetes
bug菌¹4 小时前
滚雪球学SpringCloud[4.1讲]: Spring Cloud Gateway详解
java·spring cloud·微服务
bug菌¹4 小时前
滚雪球学SpringCloud[4.2讲]: Zuul:Netflix API Gateway详解
spring·spring cloud·gateway
2420305 小时前
Docker笔记-容器数据卷
docker
Alluxio官方5 小时前
Alluxio Enterprise AI on K8s 部署教程
人工智能·机器学习·kubernetes