首页 > 系统相关 >Kubernetes 对象以及部署nginx服务示例(四)

Kubernetes 对象以及部署nginx服务示例(四)

时间:2023-06-29 19:33:42浏览次数:55  
标签:kubectl name Kubernetes yaml 对象 示例 nginx

什么是 Kubernetes 对象?

在k8s中管理员与平台交互的最重要方式之一就是创建和管理 Kubernetes 对象,对象有助于帮助用户部署应用程序和维护集群。
理解 Kubernetes 对象的另一种方法是将它们视为类实例。每个创建的对象都引用一个预定义的类,该类告诉 api server 如何处理系统资源并与特定组件进行通信。那么这些对象都包含哪些呢?这篇文章就通过一些实例来说明对象怎么使用,或者怎么去定义对象。

Kubernetes 中对象都包含namespacespoddeploymentsvolumes以及secrets等。

要查看 Kubernetes 集群中可用对象列表,可通过 kubectl 命令查看:

kubectl api-resources

执行命令后,可以看到如下一部分对象列表。这里只是截取了一小部分。

2023-06-27T09:13:59.png

那么这些对象都是怎么产生的呢,或者怎么创建的呢?继续看。

首先我们在创建对象的时候,一般都是使用 YAMLJSON 在文件中描述想要的内容(所需状态),它称为对象规范。
下面先来一个Pod对象规范示例(YAML):

# Pod spec
apiVersion: v1
kind: Pod
metadata:
  name: webserver-pod
spec:
  containers:
  - name: webserver
    image: nginx:latest
    ports:
    - containerPort: 80

在上面的例子中给出了很多字段,这些字段解释如下:

  • apiVersion:对象的 Kubernetes API 版本
  • kind: 对象种类。e.g. PodDeploymentServiceConfigmap
  • metadata:元数据,用于唯一标识和描述 Kubernetes 对象。一些常见添加到对象中的关键元数据labelsnamenamespaceannotations
  • spec:在 Kubernetes 对象定义的spec部分中,声明创建的对象所需状态和特征

上面这几个字段在定义对象中都是通用的。

当然还有很多字段我们这里就不做介绍了,可以通过执行如下命令查看各个字段的意思:

kubectl explain pods

2023-06-27T09:57:48.png

这里是列举了pod字段的含义,你也可以查看servicesnamespaces等等。

定义好对象配置文件以后,我们就可以通过下面的命令去创建部署,这里文件我命名为webserverPod.yaml:

kubectl apply -f webserverPod.yaml

理解了什么是对象和对象怎么创建部署以后,我们接下来通过例子来实践一下。

一个Nginx服务示例

1.创建namespace对象nginx-namespace.yaml:

apiVersion: v1
kind: Namespace
metadata:
  name: nginx-test
  labels:
    name: label-test

执行下面命令创建:

kubectl create -f nginx-namespace.yaml
kubetcl get namespace

结果如下图:

2023-06-27T10:26:30.png

2.创建Pod对象,这里不直接创建 Pod, 通过controller创建pod,nginx-deployment.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: nginx-test
  name: nginx-deployment
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 2 #这里要求部署 2 个Pod
  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 nginx-test

// 查看Pod的状态以及Ip等信息
kubectl get pods -o wide -n nginx-test 

// 也可以通过下面这个查询Pod
kubectl get pods -n nginx-test

结果如下图:

2023-06-27T10:34:18.png

创建service对象,nginx-service.yaml:

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

执行下面命令创建:

kubectl create -f nginx-service.yaml
kubectl get svc nginx-service -o wide  -n nginx-test

结果如下图:

2023-06-27T10:40:37.png

然后进入节点后curl http://10.105.251.12,当然我们也可以指定端口比如我们指定宿主机的端口为30082,修改上面的nginx-service.yaml如下:

apiVersion: v1
kind: Service
metadata:
  namespace: nginx-test
  name: nginx-service
spec:
  selector:
    app: nginx
  type: NodePort  
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80
    nodePort: 30082

然后执行kubectl apply -f nginx-service.yaml修改,我们在去查看service的时候如下:

2023-06-27T11:09:20.png

然后curl http://127.0.0.1:30082,一样成功。

好了关于k8s对象与定义对象和部署就先到这里。这篇文章主要简单的介绍了怎么去部署nginx一个服务,以及什么是k8s对象,下一篇重点介绍kubectl的常用命令。

转载:风向阅读 - Kubernetes 对象以及部署nginx服务示例(四)

标签:kubectl,name,Kubernetes,yaml,对象,示例,nginx
From: https://www.cnblogs.com/smallKilts/p/17515041.html

相关文章

  • 代理服务器之 squid、lvs、nginx、haproxy之间的区别
    代理服务器之squid、lvs、nginx、haproxy之间的区别代理服务可简单的分为正向代理和反向代理1、正向代理正向代理服务器:squid用于代理内部网络对Internet的连接请求(如VPN/NAT),客户端指定代理服务器,并将本来要直接发送给目标Web服务器的HTTP请求先发送到代理服务器上......
  • 解决minio使用nginx代理出现问题(上传文件可以,创建桶404)
    minio使用nginx代理出现问题(上传文件可以,创建桶失败)server{listen80;#error_page500502503504404/404.html;注释掉location/{proxy_set_headerX-Forwarded-Proto$scheme;proxy_set_headerX-Real-IP$remote_addr;......
  • Nginx配置解决跨域问题
       server{      listen8080;      server_namelocalhost;       location/{         root/test;         indexindex.htmlindex.htm;          set$allow_cors0;         #判断不为空      ......
  • Kubernetes编程——client-go基础—— 深入 API Machinery —— Kind
    深入APIMachinery——Kind 在Kubernetes中,APIMachinery是一个核心的软件库,用于构建Kubernetes的API服务器和控制器。它提供了一些基本的功能,如对象存储、认证鉴权、API请求处理和验证等。 在APIMachinery中,Kind是一个重要的概念。在Kubernetes中,每个资源......
  • Kubernetes编程——client-go基础—— 工作队列(workqueue)
    工作队列(workqueue[wɜːk][kjuː])https://github.com/kubernetes/kubernetes/tree/release-1.27/staging/src/k8s.io/client-go/util/workqueue我理解意思是说:这里说的"工作队列"指的一个数据结构。用户可以按照队列所预定义的顺序向这个队列中添加和取出......
  • 山东政务云配置nginx
    1:安装nginx查看所监听的端口是否分配给了nginxnetstat-ntlpnetstat-anopsaux|grepnginxnetstat-anp|grep加pid2:以上都没有问题,查看防火墙是否开通了端口查看开放的端口:firewall-cmd--list-ports添加端口:firewall-cmd--add-port=8080/tcp--permanent(–permane......
  • Kubernetes(k8s) Web-UI界面(一):部署和访问仪表板(Dashboard)
    目录一.系统环境二.前言三.仪表板(Dashboard)简介四.部署Kubernetes仪表板(Dashboard)五.访问Kubernetes仪表板(Dashboard)5.1使用token登录Dashboard5.2对sa账号kubernetes-dashboard授权5.3访问Dashboard六.总结七.附加信息一.系统环境本文主要基于Kubernetes1.21.9和Linux操作......
  • windows nginx 开机启动
    1、首先下载winsw下载地址:https://github.com/kohsuke/winsw/releaseswinse.NET4.exe或百度云盘:链接:https://pan.baidu.com/s/1-G1dyl1y_WA5ziGV07AHpQ提取码:j8fy或:https://files.cnblogs.com/files/Fooo/nginx%E5%BC%80%E6%9C%BA%E5%90%AF%E5%8A%A8.rar?t=1688009381&d......
  • Nginx http重定向https
    Nginx配置同一个域名http与https两种方式都可访问,证书是阿里云上免费申请的 server{listen80;listen443ssl;sslon;server_name域名;indexindex.htmlindex.htmindex.phpdefault.htmldefault.htmdefault.php;ssl_certificate/usr/local/nginx/cert/21402058063066221.......
  • nginx完全卸载删除
    nginx卸载其实很简单,只需要两步即可完成!第一步:输入以下指令全局查找nginx相关的文件:sudofind/-namenginx*第二步:删除查找出来的所有nginx相关文件sudorm-rffile此处跟查找出来的nginx文件说明:全局查找往往会查出很多相关文件,但是前缀基本都是相同,后面不同的部分......