在 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