当前端面试被问到对K8s的了解...这时你有必要入门下K8s。Kubernetes(通常称为K8s)是一个开源系统,用于自动化容器化应用程序的部署、扩展和管理。你可以以集群的方式运行和管理跨多个主机分布的容器。
前提条件
基本的命令行操作知识
要使用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