在 Kubernetes 中,可以通过 kubectl
命令行直接创建 Pod、Service 和 Deployment,而无需编写 YAML 文件。以下是详细的操作方法:
1. 创建 Pod
直接运行一个临时 Pod
kubectl run my-pod --image=nginx:alpine --restart=Never
--image
: 指定容器镜像--restart=Never
: 表示这是一个一次性 Pod(不会自动重启)
查看 Pod
kubectl get pods
删除 Pod
kubectl delete pod my-pod
2. 创建 Deployment
创建一个 Deployment(管理 Pod 的副本)
kubectl create deployment my-deploy --image=nginx:alpine --replicas=3
--replicas=3
: 指定副本数为 3--image
: 指定容器镜像
查看 Deployment 和 Pod
kubectl get deployments
kubectl get pods
扩展副本数
kubectl scale deployment my-deploy --replicas=5
删除 Deployment
kubectl delete deployment my-deploy
3. 创建 Service
为 Deployment 创建 ClusterIP Service
kubectl expose deployment my-deploy --name=my-svc --port=80 --target-port=80
--port=80
: Service 对外暴露的端口--target-port=80
: Pod 监听的端口
创建 NodePort Service(允许外部访问)
kubectl expose deployment my-deploy --name=my-nodeport-svc --type=NodePort --port=80 --target-port=80
查看 Service
kubectl get services
访问 Service
curl http://<ClusterIP>:80
如果是 NodePort,可以通过 http://<NodeIP>:<NodePort>
访问。
删除 Service
kubectl delete service my-svc
4. 综合示例
(1)创建 Deployment
kubectl create deployment web-app --image=nginx:alpine --replicas=3
(2)创建 NodePort Service
kubectl expose deployment web-app --name=web-svc --type=NodePort --port=80 --target-port=80
(3)查看所有资源
kubectl get all
输出示例:
NAME READY STATUS RESTARTS AGE
pod/web-app-5d5b6c9d8-2jq9z 1/1 Running 0 1m
pod/web-app-5d5b6c9d8-5k7xv 1/1 Running 0 1m
pod/web-app-5d5b6c9d8-9p8rq 1/1 Running 0 1m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/web-svc NodePort 10.96.123.45 <none> 80:30001/TCP 1m
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/web-app 3/3 3 3 1m
(4)访问应用
curl http://<NodeIP>:30001
(5)清理资源
kubectl delete deployment web-app
kubectl delete service web-svc
5. 常用命令总结
功能 | 命令 |
---|---|
创建 Pod | kubectl run my-pod --image=nginx --restart=Never |
创建 Deployment | kubectl create deploy my-deploy --image=nginx --replicas=3 |
创建 Service | kubectl expose deploy my-deploy --name=my-svc --port=80 |
查看 Pod | kubectl get pods |
查看 Service | kubectl get svc |
查看 Deployment | kubectl get deploy |
删除资源 | kubectl delete deploy/my-deploy svc/my-svc |
6. 进阶技巧
(1)指定命名空间
kubectl create deploy my-deploy --image=nginx -n my-namespace
kubectl expose deploy my-deploy --name=my-svc --port=80 -n my-namespace
(2)设置环境变量
kubectl run my-pod --image=nginx --env="KEY=VALUE" --restart=Never
(3)运行交互式 Pod
kubectl run my-shell --image=busybox --rm -it --restart=Never -- sh
总结
- Pod: 使用
kubectl run
直接创建。 - Deployment: 使用
kubectl create deploy
管理 Pod 副本。 - Service: 使用
kubectl expose
暴露应用。 - 无需 YAML 文件,适合快速测试和临时部署。
如果需要更复杂的配置(如 volumes、liveness probes),建议使用 YAML 文件定义。
作者:严锋 创建时间:2025-05-05 18:44
最后编辑:严锋 更新时间:2025-05-09 15:48
最后编辑:严锋 更新时间:2025-05-09 15:48