K8s简单入门
Kubernetes (K8s) 是一个开源的容器编排平台,用于自动部署、扩展和管理容器化应用程序。以下是 Kubernetes 的入门指南,涵盖了基本概念、安装、常用命令以及部署示例。
Kubernetes (K8s) 是一个开源的容器编排平台,用于自动部署、扩展和管理容器化应用程序。以下是 Kubernetes 的入门指南,涵盖了基本概念、安装、常用命令以及部署示例。
基本概念
- Pod:Kubernetes 中最小的可部署单元,一个 Pod 可以包含一个或多个容器。
- Node:运行 Pod 的机器,可以是物理机或虚拟机。
- Cluster:一组 Node 组成的集合,运行在 Kubernetes 控制平面下。
- Namespace:用于将资源分隔开的虚拟集群。
- Deployment:管理 Pod 的部署和缩放。
- Service:定义一组 Pod 的逻辑集合,并定义如何访问它们。
- ConfigMap 和 Secret:存储配置信息和敏感信息。
安装 Kubernetes
可以使用 Minikube 在本地机器上安装 Kubernetes 集群。Minikube 是一个轻量级的 Kubernetes 实现,可以在本地运行单节点集群。
-
安装 Minikube 和 kubectl:
-
启动 Minikube:
minikube start
-
验证安装:
kubectl cluster-info
常用命令
-
创建 Pod
kubectl run mypod --image=nginx --restart=Never
-
查看 Pod
kubectl get pods
-
描述 Pod
kubectl describe pod mypod
-
删除 Pod
kubectl delete pod mypod
-
创建 Deployment
kubectl create deployment myapp --image=nginx
-
查看 Deployment
kubectl get deployments
-
扩展 Deployment
kubectl scale deployment myapp --replicas=3
-
暴露 Deployment
kubectl expose deployment myapp --type=NodePort --port=80
-
查看 Service
kubectl get services
部署示例
以下是一个简单的示例,展示如何在 Kubernetes 中部署一个 Nginx 应用。
-
创建 Deployment
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.14.2 ports: - containerPort: 80
将上述内容保存为
nginx-deployment.yaml
文件,然后应用该文件:kubectl apply -f nginx-deployment.yaml
-
创建 Service
apiVersion: v1 kind: Service metadata: name: nginx-service spec: selector: app: nginx ports: - protocol: TCP port: 80 targetPort: 80 type: NodePort
将上述内容保存为
nginx-service.yaml
文件,然后应用该文件:kubectl apply -f nginx-service.yaml
-
验证部署
查看 Pod、Deployment 和 Service 的状态:
kubectl get pods kubectl get deployments kubectl get services
通过 Minikube IP 访问 Nginx 服务:
minikube service nginx-service
进阶
-
ConfigMap 和 Secret
- 创建 ConfigMap:
kubectl create configmap my-config --from-literal=key1=value1
- 创建 Secret:
kubectl create secret generic my-secret --from-literal=password=my-password
- 创建 ConfigMap:
-
持久化存储 (Persistent Volumes and Persistent Volume Claims)
- 创建 Persistent Volume:
apiVersion: v1 kind: PersistentVolume metadata: name: my-pv spec: capacity: storage: 1Gi accessModes: - ReadWriteOnce hostPath: path: "/mnt/data"
- 创建 Persistent Volume Claim:
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi
- 创建 Persistent Volume:
-
Ingress 控制器
- 创建 Ingress 资源以路由 HTTP 和 HTTPS 流量:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: example-ingress spec: rules: - host: example.com http: paths: - path: / pathType: Prefix backend: service: name: nginx-service port: number: 80
- 创建 Ingress 资源以路由 HTTP 和 HTTPS 流量:
通过这些步骤,您可以入门 Kubernetes 并开始在集群中部署和管理容器化应用程序。
更多推荐
所有评论(0)