[云原生微服务架构](二)试一下运行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: 3
  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 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>
nginx-deployment-54f57cf6bf-fgdgg   1/1     Running   0          23m     10.244.1.12   shuifeng   <none>           <none>

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

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

3、创建service

vim 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
$ kubectl create -f nginx-service.yaml
$ kubectl get svc nginx-service -o wide  -n ns-test
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 -n ns-test 查询到对应的主机应对的端口即可通过ip+此端口访问

  • kubectl create kubectl apply 区别

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

本作品采用《CC 协议》,转载必须注明作者和本文链接
你还差得远呐!
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!