ToB企服应用市场:ToB评测及商务社交产业平台

标题: Kubernetes 对象以及部署nginx服务示例(四) [打印本页]

作者: 郭卫东    时间: 2023-6-29 22:59
标题: Kubernetes 对象以及部署nginx服务示例(四)
什么是 Kubernetes 对象?

在k8s中管理员与平台交互的最重要方式之一就是创建和管理 Kubernetes 对象,对象有助于帮助用户部署应用程序和维护集群。
理解 Kubernetes 对象的另一种方法是将它们视为类实例。每个创建的对象都引用一个预定义的类,该类告诉 api server 如何处理系统资源并与特定组件进行通信。那么这些对象都包含哪些呢?这篇文章就通过一些实例来说明对象怎么使用,或者怎么去定义对象。
在Kubernetes 中对象都包含namespaces、pod、deployments、volumes以及secrets等。
要查看 Kubernetes 集群中可用对象列表,可通过 kubectl 命令查看:
  1. kubectl api-resources
复制代码
执行命令后,可以看到如下一部分对象列表。这里只是截取了一小部分。

那么这些对象都是怎么产生的呢,或者怎么创建的呢?继续看。
首先我们在创建对象的时候,一般都是使用 YAML 或 JSON 在文件中描述想要的内容(所需状态),它称为对象规范。
下面先来一个Pod对象规范示例(YAML):
  1. # Pod spec
  2. apiVersion: v1
  3. kind: Pod
  4. metadata:
  5.   name: webserver-pod
  6. spec:
  7.   containers:
  8.   - name: webserver
  9.     image: nginx:latest
  10.     ports:
  11.     - containerPort: 80
复制代码
在上面的例子中给出了很多字段,这些字段解释如下:
上面这几个字段在定义对象中都是通用的。
当然还有很多字段我们这里就不做介绍了,可以通过执行如下命令查看各个字段的意思:
  1. kubectl explain pods
复制代码

这里是列举了pod字段的含义,你也可以查看services、namespaces等等。
定义好对象配置文件以后,我们就可以通过下面的命令去创建部署,这里文件我命名为webserverPod.yaml:
  1. kubectl apply -f webserverPod.yaml
复制代码
理解了什么是对象和对象怎么创建部署以后,我们接下来通过例子来实践一下。
一个Nginx服务示例

1.创建namespace对象nginx-namespace.yaml:
  1. apiVersion: v1
  2. kind: Namespace
  3. metadata:
  4.   name: nginx-test
  5.   labels:
  6.     name: label-test
复制代码
执行下面命令创建:
  1. kubectl create -f nginx-namespace.yaml
  2. kubetcl get namespace
复制代码
结果如下图:

2.创建Pod对象,这里不直接创建 Pod, 通过controller创建pod,nginx-deployment.yaml:
  1. apiVersion: apps/v1
  2. kind: Deployment
  3. metadata:
  4.   namespace: nginx-test
  5.   name: nginx-deployment
  6. spec:
  7.   selector:
  8.     matchLabels:
  9.       app: nginx
  10.   replicas: 2 #这里要求部署 2 个Pod
  11.   template:
  12.     metadata:
  13.       labels:
  14.         app: nginx
  15.     spec:
  16.       containers:
  17.       - name: nginx
  18.         image: nginx:alpine
  19.         ports:
  20.         - containerPort: 80
复制代码
执行下面命令创建:
  1. kubectl create -f nginx-deployment.yaml
  2. kubectl get deployment -n nginx-test
  3. // 查看Pod的状态以及Ip等信息
  4. kubectl get pods -o wide -n nginx-test
  5. // 也可以通过下面这个查询Pod
  6. kubectl get pods -n nginx-test
复制代码
结果如下图:

创建service对象,nginx-service.yaml:
  1. apiVersion: v1
  2. kind: Service
  3. metadata:
  4.   namespace: nginx-test
  5.   name: nginx-service
  6. spec:
  7.   selector:
  8.     app: nginx
  9.   type: NodePort
  10.   ports:
  11.   - protocol: TCP
  12.     port: 80
  13.     targetPort: 80
复制代码
执行下面命令创建:
  1. kubectl create -f nginx-service.yaml
  2. kubectl get svc nginx-service -o wide  -n nginx-test
复制代码
结果如下图:

然后进入节点后curl http://10.105.251.12,当然我们也可以指定端口比如我们指定宿主机的端口为30082,修改上面的nginx-service.yaml如下:
  1. apiVersion: v1
  2. kind: Service
  3. metadata:
  4.   namespace: nginx-test
  5.   name: nginx-service
  6. spec:
  7.   selector:
  8.     app: nginx
  9.   type: NodePort  
  10.   ports:
  11.   - protocol: TCP
  12.     port: 80
  13.     targetPort: 80
  14.     nodePort: 30082
复制代码
然后执行kubectl apply -f nginx-service.yaml修改,我们在去查看service的时候如下:

然后curl http://127.0.0.1:30082,一样成功。
好了关于k8s对象与定义对象和部署就先到这里。这篇文章主要简单的介绍了怎么去部署nginx一个服务,以及什么是k8s对象,下一篇重点介绍kubectl的常用命令。
转载:风向阅读 - Kubernetes 对象以及部署nginx服务示例(四)

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4