Kubernetes(K8s)用于自动化部署、扩展和管理容器化应用程序。
基本概念
Container
一个独立的、轻量级的可运行的包,包含应用程序和它的所有依赖。
Pod
Pod是K8s中的最小部署单位,他可以包含一个或者多个容器。
Node
Node就是K8s集群中的一台机器,可以包含一个或者多个Pod。
Cluster
Cluster就是由多个Node组成的集群。
Service
Service为一组Pod提供持久的IP地址和负载均衡功能,使得Pod可以稳定的被外部访问。
Namespace
Namespace是K8s中的逻辑隔离单元,用于将集群中的资源划分到不同的虚拟子集。
Deployment
Deployment定义应用程序的部署方式和策略,支持滚动更新和回滚操作。
安装K8s
Minikube
Minikube是本地的K8s集群,用于开发和测试。
bash
1 2 3 4 5 6 7 8
| curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/
minikube start
minikube status
|
kubectl
kubectl是用于管理集群的命令行工具。
bash
1 2 3 4 5 6 7
| curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" chmod +x kubectl sudo mv kubectl /usr/local/bin/
kubectl version --client
|
创建K8s部署(Deployment)
创建Deployment:
bash
1 2 3 4 5 6
| kubectl create deployment nginx --image=nginx
kubectl get deployments kubectl get pods
|
暴露服务:
bash
1 2 3 4 5 6 7
| kubectl expose deployment nginx --type=NodePort --port=80
kubectl get service nginx kubectl get services minikube service nginx --url
|
扩展和更新
扩展Pod副本数
bash
1
| kubectl scale deployment nginx --replicas=3
|
更新容器镜像
bash
1
| kubectl set image deployment/nginx nginx=nginx:1.19
|
回滚
bash
1
| kubectl rollout undo deployment/nginx
|
删除服务和部署
bash
1 2
| kubectl delete service nginx kubectl delete deployment nginx
|