当前端面试被问到对K8s的了解

5,768 阅读3分钟

当前端面试被问到对K8s的了解...这时你有必要入门下K8s。Kubernetes(通常称为K8s)是一个开源系统,用于自动化容器化应用程序的部署、扩展和管理。你可以以集群的方式运行和管理跨多个主机分布的容器。

image.png

前提条件

基本的命令行操作知识

要使用Kubernetes,你需要能够舒适地使用命令行界面(CLI)。这包括了解如何打开终端(或命令提示符),执行基本命令,以及如何使用命令行界面导航文件系统。例如,

# 列出当前目录下的文件
ls

# 更改当前工作目录
cd path/to/directory

# 创建一个新目录
mkdir new-directory

# 复制文件
cp source.txt destination.txt

# 移动或重命名文件
mv oldname.txt newname.txt

# 删除文件
rm file.txt

Docker 和容器技术的理解

Docker 是一个开源平台,用于开发、传输和运行应用程序。你应该了解容器的基本概念,以及如何使用Docker来创建和管理容器。以下是一些基本的Docker操作:

# 下载(拉取)一个Docker镜像
docker pull nginx

# 运行一个Docker容器
docker run -d -p 80:80 nginx

# 查看正在运行的容器
docker ps

# 停止运行的容器
docker stop container_id

# 构建一个Docker镜像
docker build -t my-image-name .

一个可以运行Kubernetes的环境

你需要有一个能够运行Kubernetes的环境。对于初学者来说,Minikube 是一个很好的选择,因为它允许你在本地计算机上运行一个单节点的Kubernetes集群。Minikube 依赖虚拟化技术,所以你需要确保你的系统支持虚拟化,并且已经安装了支持的虚拟化软件(如VirtualBox或KVM)。

安装Minikube(本地Kubernetes环境)

Minikube是一个轻量级的Kubernetes实现,可以在本地机器上创建一个虚拟机,并在其上部署一个简单的集群。

# 安装Minikube(以Linux为例)
curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
chmod +x minikube
sudo mv minikube /usr/local/bin/

启动Minikube集群

minikube start

检查集群信息

kubectl cluster-info

创建和运行一个Docker容器

你需要一个Docker容器才能在Kubernetes上运行。假设你有一个简单的Node.js应用程序。

# Dockerfile
FROM node:14
WORKDIR /app
COPY . .
RUN npm install
EXPOSE 8080
CMD ["node", "server.js"]

构建并运行Docker容器。

docker build -t my-node-app .
docker run -p 8080:8080 my-node-app

在Kubernetes上部署应用程序

将你的Docker容器部署到Kubernetes集群。

# my-node-app-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-node-app
spec:
  selector:
    matchLabels:
      app: my-node-app
  replicas: 2
  template:
    metadata:
      labels:
        app: my-node-app
    spec:
      containers:
      - name: my-node-app
        image: my-node-app
        ports:
        - containerPort: 8080

使用kubectl创建部署。

kubectl apply -f my-node-app-deployment.yaml

暴露服务

创建一个服务来暴露你的应用程序到外部网络。

# my-node-app-service.yaml
apiVersion: v1
kind: Service
metadata:
  name: my-node-app-service
spec:
  selector:
    app: my-node-app
  ports:
  - protocol: TCP
    port: 80
    targetPort: 8080
  type: LoadBalancer

应用服务配置。

kubectl apply -f my-node-app-service.yaml

访问应用程序

minikube service my-node-app-service

这条命令会自动打开浏览器,访问通过Minikube暴露的服务。

清理

删除服务和部署。

kubectl delete service my-node-app-service
kubectl delete deployment my-node-app

停止Minikube虚拟机。

minikube stop