k8s怎样部署属于自己的环境服务

这篇博客介绍了Kubernetes的基本概念,包括Pod、Service和命名空间,并详细展示了如何创建命名空间、Deployment以及Service的步骤。通过yaml文件配置,使用kubectl命令行工具进行操作,实现应用的部署和服务的注册与发现。

简介:

  1. Pod: k8s最小单位
  2. Service: Pod每次动态创建后,自动分配ip会不同,所以引入了service(即服务的注册与发现)
  3. namespace: 命名空间,主要用于隔离
    部署步骤
  • 创建namespace nginx-namespace.yaml
apiVersion: v1 #类型为Namespace
kind: Namespace  #类型为Namespace
metadata:
  name: ns-test  #命名空间名称
  labels:
    name: label-test  #pod标签

执行

#创建
kubectl create -f nginx-namespace.yaml
#查询
kubectl get namespace
  • 创建pod,一般不直接create pod,而是通过controller来创建pod。deployment为其中一种controller

nginx-deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: ns-test
  name: nginx-deployment
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 2
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:alpine
        ports:
        - containerPort: 80

执行

#创建
kubectl create -f nginx-deployment.yaml
#查询
kubectl get deployment  -n ns-test
#或
kubectl get pods -n ns-test

kubectl get pods -o wide -n ns-test

kubectl get deploy nginx-deployment  -n ns-test
  • 创建Service nginx-service.yaml
apiVersion: v1
kind: Service
metadata:
  namespace: ns-test
  name: nginx-service
spec:
  selector:
    app: nginx
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80

执行(其中svc就是service的简写)

kubectl create -f nginx-service.yaml

kubectl get svc nginx-service -o wide  -n ns-test
<think>好的,用户想在Kubernetes环境部署Nginx。我需要根据之前提供的引用内容来整理步骤。首先,用户提到了三个引用,其中引用[1]和引用[2]都涉及部署Nginx,引用[3]是关于Ingress的,可能相关但暂时先不考虑。 首先,检查用户的问题:如何在k8s部署Nginx。根据引用[1],有使用kubectl create deployment和expose的命令,这应该是快速部署的方法。而引用[2]详细介绍了从检查环境部署storageclass再到Nginx的步骤,可能更全面。 用户可能需要两种方法:快速部署和通过YAML文件部署。引用[1]中的示例用的是命令行直接创建Deployment和Service,而引用[2]提到编辑部署文件,也就是YAML方式,这样更灵活,适合生产环境。需要分步骤说明这两种方法。 另外,引用[2]中还提到了检查k8s环境的状态,比如节点和系统Pod,这可能对用户有帮助,尤其是在部署前确保集群正常。需要提醒用户先检查环境,如运行kubectl get nodes和kubectl get pods --all-namespaces。 然后,存储部分,引用[2]提到部署storageclass是可选的,如果用户需要持久化存储,可能需要配置NFS,但基础部署可能不需要,所以作为可选步骤。但用户的问题可能不需要存储,所以这部分可以放在后面或者简要提及。 接下来是部署的具体步骤。快速方法用命令行,如创建deployment和service。YAML方式需要编写Deployment和Service的配置文件,然后应用。引用[1]中的例子用了kubectl apply -f URL来部署Dashboard,类似地,用户可以通过YAML文件部署Nginx。需要给出示例的YAML内容,比如Deployment的apiVersion、容器镜像、端口等,以及Service的NodePort配置。 访问服务部分,引用[1]提到通过NodeIP和Port访问,需要说明如何获取端口,比如kubectl get svc查看NodePort的值。此外,引用[3]中的Ingress可能需要,但用户可能暂时不需要,可以作为扩展或高级配置提及。 总结部分需要涵盖两种部署方式、验证步骤和访问方法。同时,生成相关问题时,要考虑用户可能的后续需求,比如如何扩展副本、配置Ingress、持久化存储或监控,这些在引用中没有直接提到,但属于常见后续步骤。 需要确保所有kubectl命令正确,比如创建Deployment和Service的命令是否正确,特别是expose deployment时是否需要指定端口类型。引用[1]中的例子用了--type=NodePort,这应该正确,用户需要暴露服务的话应该用这个或者LoadBalancer,但后者需要云支持,所以NodePort更通用。 另外,引用[2]中的部署步骤包括创建目录、编辑文件,可能需要用户自己创建YAML文件,因此需要提供示例内容,并说明如何应用。例如,nginx-deployment.yaml和nginx-service.yaml的内容,然后kubectl apply -f这些文件。 最后,验证部分,检查Pod和Service状态,确保处于Running状态,并且通过curl或浏览器访问。可能还需要说明如何查找Node的IP和端口。 可能的问题:用户是否已经配置了kubectl环境,是否有足够的权限,以及集群是否正常。但根据问题描述,用户可能已经具备基本的环境,所以步骤中需要假设环境已经就绪,但建议检查节点状态,如引用[2]中的步骤3。 现在需要将上述思考整理成结构化的步骤,分快速部署和YAML文件部署,并包含验证和访问方法。同时,相关问题要围绕用户可能的后续需求,如扩展、配置、监控、持久化存储和Ingress配置。</think>以下是在 Kubernetes 环境部署 Nginx 的详细方法,包含两种常用方式: --- ### **一、快速部署(命令行方式)** 1. **创建 Nginx Deployment** ```bash $ kubectl create deployment nginx --image=nginx:latest ``` - 使用官方 Nginx 镜像创建无状态部署[^1] 2. **暴露 Service** ```bash $ kubectl expose deployment nginx --port=80 --type=NodePort ``` - 通过 `NodePort` 类型将服务暴露到集群外[^2] 3. **验证资源状态** ```bash $ kubectl get deployment,svc,pod | grep nginx ``` - 确认 Deployment、Pod 状态为 `Running`,Service 已分配端口[^2] 4. **访问服务** ```bash $ curl http://<NodeIP>:<NodePort> ``` - 通过 `kubectl get svc` 查看分配的 `NodePort` 值 --- ### **二、YAML 文件部署(推荐生产环境)** 1. **创建部署文件 `nginx-deployment.yaml`** ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: nginx spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.25 ports: - containerPort: 80 ``` 2. **创建服务文件 `nginx-service.yaml`** ```yaml apiVersion: v1 kind: Service metadata: name: nginx-service spec: type: NodePort selector: app: nginx ports: - protocol: TCP port: 80 targetPort: 80 ``` 3. **应用配置文件** ```bash $ kubectl apply -f nginx-deployment.yaml $ kubectl apply -f nginx-service.yaml ``` --- ### **三、高级配置建议** 1. **持久化存储(参考引用[2])** ```yaml volumes: - name: nginx-storage persistentVolumeClaim: claimName: nginx-pvc ``` - 需提前配置 StorageClass 和 PVC 2. **Ingress 配置(参考引用[3])** ```yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: nginx-ingress spec: rules: - host: nginx.example.com http: paths: - path: / pathType: Prefix backend: service: name: nginx-service port: number: 80 ``` --- ### **四、验证与调试** 1. **查看 Pod 日志** ```bash $ kubectl logs <nginx-pod-name> ``` 2. **进入容器检查配置** ```bash $ kubectl exec -it <nginx-pod-name> -- bash # cat /etc/nginx/nginx.conf ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

如风之夏

感谢,你的鼓励是我前进的动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值