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 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值