kubernetes(k8s)部署Nginx

一、前言

  • Pod:k8s最小单元
  • Service:pod每次动态创建后,自动分配的ip会不同,所以引入了service(即服务的注册与发现)
  • namespace:命名空间,主要用于隔离

二、部署步骤

1、创建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
复制代码

2、创建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
#或
kubectl get pods -n ns-test

================================
$ kubectl create -f nginx-deployment.yaml

# nginx-deployment 部署的2个 pod 全部成功

$ kubectl get pods -o wide -n ns-test
NAME                                READY   STATUS    RESTARTS   AGE     IP            NODE       NOMINATED NODE   READINESS GATES
nginx-deployment-54f57cf6bf-57g8l   1/1     Running   0          23m     10.244.1.10   shuifeng   <none>           <none>
nginx-deployment-54f57cf6bf-ltdf7   1/1     Running   0          23m     10.244.1.11   shuifeng   <none>           <none>

# READY 2/2 表明全部部署成功
$ kubectl get deploy nginx-deployment
NAME               READY   UP-TO-DATE   AVAILABLE   AGE
nginx-deployment   2/2     2            2           23m

#此时用自动生成的ip访问
#如 curl http://10.244.1.10
复制代码

3、创建service

vim nginx-service.yaml

apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    app: nginx
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80



$ kubectl create -f nginx-service.yaml
$ kubectl get svc nginx-service -o wide
NAME            TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)   AGE   SELECTOR
nginx-service   ClusterIP   10.108.9.49   <none>        80/TCP    11m   app=nginx

curl http://10.108.9.49
复制代码

三、技术笔记

  • 如果使用主机ip如果访问

kubectl get svc nginx-service -o wide查询到对应的主机应对的端口即可通过ip+此端口访问,或者修改nginx-service.yaml(注意增加了nodeport)

apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    app: nginx
  type: NodePort
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80
    nodePort: 8000
复制代码
  • kubectl create kubectl apply 区别

当yaml有修改,可以使用apply来使修改后的配置生效

  • 这里是介绍命令行的方式,可以直接用dashboard用户界面来创建比较方便,当然yaml还是必需的
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享