k8s基础
Kubernetes(通常称为K8s)是一个开源的容器编排和管理平台,它的主要目标是简化和自动化容器化应用程序的部署、扩展、维护和运维。以下是对Kubernetes的简单理解:
-
容器编排:Kubernetes帮助您有效地管理和编排容器,确保它们在集群中的部署和运行。容器是轻量级的应用程序包装,包括应用程序和其所有依赖项,因此它们可以在任何环境中一致地运行。
-
自动化:K8s允许您定义应用程序的期望状态,然后自动管理集群,以使其达到该状态。这包括应用程序的部署、复制、负载均衡、自动扩展和故障处理等。
-
高可用性:Kubernetes提供高可用性,即使节点或容器出现故障,它也可以自动替代它们,并确保应用程序保持可用。
-
服务发现和负载均衡:K8s允许应用程序发现并与其他应用程序和服务通信,同时提供负载均衡以均匀分配流量。
-
配置管理:您可以定义应用程序的配置和环境变量,并轻松地对其进行更新,而无需重新部署应用程序。
-
多云支持:Kubernetes可以在不同的云提供商、数据中心和物理服务器上运行,允许跨多个云环境部署和管理容器化应用程序。
-
监控和日志:K8s提供监控和日志记录功能,以帮助您了解应用程序的性能和状态。
-
扩展性:Kubernetes具有强大的扩展性,可以集成各种插件和自定义资源,以满足特定需求。
总的来说,Kubernetes是一种用于自动化和管理容器化应用程序的工具,可以显著简化复杂的容器部署和维护任务。它适用于各种规模的应用程序和环境,并已成为容器编排领域的标准解决方案。
常用命令
以下是一些常用的Kubernetes(K8s)命令,用于管理和操作K8s集群:
-
基本信息查询:
kubectl version
:查看Kubernetes客户端和服务器的版本信息。kubectl cluster-info
:查看Kubernetes集群信息。kubectl get nodes
:列出集群中的所有节点。kubectl get pods
:列出所有运行中的Pod。kubectl describe node <node-name>
:查看特定节点的详细信息。
-
创建和管理资源:
kubectl create -f <yaml-file>
:使用YAML文件创建资源。kubectl apply -f <yaml-file>
:使用YAML文件创建或更新资源。kubectl delete <resource-name>
:删除资源。kubectl edit <resource-name>
:编辑资源的定义。kubectl replace -f <yaml-file>
:用新的YAML文件替换资源。kubectl scale deployment <deployment-name> --replicas=<replica-count>
:调整部署的副本数。kubectl expose deployment <deployment-name> --type=NodePort
:将Deployment暴露为NodePort服务。
-
查看和日志:
kubectl logs <pod-name>
:查看Pod的日志。kubectl describe pod <pod-name>
:查看Pod的详细信息。kubectl get services
:列出所有服务。kubectl get deployments
:列出所有部署。
-
扩展和自动伸缩:
kubectl autoscale deployment <deployment-name> --min=2 --max=5 --cpu-percent=80
:设置自动伸缩规则。kubectl get hpa
:查看水平自动伸缩(HPA)状态。
-
命名空间:
kubectl create namespace <namespace-name>
:创建新的命名空间。kubectl get namespaces
:列出所有命名空间。kubectl config set-context --current --namespace=<namespace-name>
:设置默认命名空间。
-
存储管理:
kubectl get pv
:列出持久卷(Persistent Volumes)。kubectl get pvc
:列出持久卷声明(Persistent Volume Claims)。kubectl exec -it <pod-name> -- /bin/sh
:在Pod中打开一个终端。
-
安全和身份验证:
kubectl create sa <service-account-name>
:创建服务帐户。kubectl create clusterrolebinding <name> --clusterrole=cluster-admin --serviceaccount=<namespace>:<service-account>
:将服务帐户绑定到角色。kubectl auth can-i list pods
:检查权限。
-
升级和回滚:
kubectl set image deployment/<deployment-name> <container-name>=<new-image>
:升级Deployment中的容器镜像。kubectl rollout status deployment/<deployment-name>
:检查升级状态。kubectl rollout undo deployment/<deployment-name>
:回滚升级。
这只是一些常见的Kubernetes命令示例。Kubernetes具有丰富的命令和功能,你可以根据需要查阅官方文档或运行 kubectl --help
以获取更多详细信息和命令选项。