Kubernetes(K8s)学习笔记

Kubernetes(K8s)学习笔记

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
# 安装Minikube
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

# 查看Minikube状态
minikube status

kubectl

kubectl是用于管理集群的命令行工具。

bash
1
2
3
4
5
6
7
# 安装kubectl
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
# 创建一个nginx部署
kubectl create deployment nginx --image=nginx

# 查看创建的Deployment和Pod
kubectl get deployments
kubectl get pods

暴露服务:

bash
1
2
3
4
5
6
7
# 对外暴露nginx部署
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

评论