k8s部署nginx

Posted gsls200808

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了k8s部署nginx相关的知识,希望对你有一定的参考价值。

这里用docker镜像nginx:1.20.0进行部署

编辑文件nginx-service-deployment.yaml

内容

apiVersion: v1
kind: Service
metadata:
  labels:
    app: nginx-servie
  name: nginx-service
  # 命名空间,没有可以删除,默认是default
  namespace: default
spec:
  ports:
  # 对外暴露的端口
  - nodePort: 30013
    port: 80
    protocol: TCP
    targetPort: 80
  selector:
    # 这里选pod的label 不是deployment的label
    app: nginx-pod
  # NodePort类型可以对外暴露端口
  type: NodePort
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx-deploy
  name: nginx-deploy
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx-pod
  template:
    metadata:
      labels:
        app: nginx-pod
      namespace: default
    spec:
      containers:
      # 镜像名称
      - image: nginx:1.20.0
        name: nginx
        ports:
        - containerPort: 80
        resources: 

部署yaml文件

kubectl apply -f nginx-service-deployment.yaml

查看运行情况

#查看dashboard命名空间下的pod
kubectl get pod
#查看状态
kubectl describe pod nginx-deploy-66ff7997cb-ls8m9 
#找到node节点
kubectl get pod -o wide
#找到service端口
kubectl get svc

查看到的node节点为192.168.3.85,nodeport端口为30013 所以最终访问地址为

http://192.168.3.85:30013/

如果出现ImagePullBackOff或者长时间ContainerCreating状态,先设置镜像

vi /etc/docker/daemon.json

内容如下


    "registry-mirrors": [
        "http://hub-mirror.c.163.com",
        "https://registry.aliyuncs.com",
        "https://registry.docker-cn.com",
        "https://docker.mirrors.ustc.edu.cn"
    ]

重载配置

systemctl reload docker

镜像地址如果不好用,那就只能是pull 导出导入tar文件形式了

#拉取镜像
docker pull kubernetesui/dashboard:v2.7.0
#镜像到处保存为tar文件
docker save kubernetesui/dashboard:v2.7.0> dashboardv2.7.0.tar
#导入tar格式的镜像
docker load < dashboardv2.7.0.tar

排查

进入pod容器执行命令

kubectl exec -it <pod-name> -n <name-space> --bash
kubectl exec -it nginx-deploy-66ff7997cb-vrhrn  --bash

删除部署的pod service

kubectl delete -f nginx-service-deployment.yaml

查看service pod deployment 标签

kubectl get svc --show-labels
kubectl get pod --show-labels
kubectl get deploy --show-labels

查看 endpoint,查service和pod的ip对没对上,对应关系可以用这个命令。

endpoint 是 k8s 集群中的一个资源对象,存储在 etcd 中,用来记录一个 service 对应的所有 pod 的访问地址。

kubectl get endpoints 

以上是关于k8s部署nginx的主要内容,如果未能解决你的问题,请参考以下文章

Nginx K8s + Docker 部署 ,虚拟机部署教程。

k8s部署nginx

k8s部署nginx

k8s 部署nginx 实现集群统一配置,自动更新nginx.conf配置文件 总结

k8s部署ingress-nginx

K8S 使用Dashboard部署nginx群集