K8S(八)—有、无状态.md

目录

    • 无状态
    • 有状态(StatefulSet)
      • 介绍
      • 应用
      • 应用2
      • 1. **状态持久性:**
      • 2. **水平扩展:**
      • 3. **存储和卷:**
      • 4. **Pod标识和网络标识:**
      • 5. **部署和更新:**
    • 有状态和无状态对比
      • 1. 概念:
      • 2. 数据持久性:
      • 3. 扩展性:
      • 4. 管理和部署:
      • 5. 故障恢复:

无状态

在Kubernetes(k8s)中,"无状态"通常指的是应用程序的设计方式,其中应用程序实例之间的状态不共享,并且可以在需要时水平扩展。无状态应用程序不依赖于本地存储或会话信息,使它们更容易部署、扩展和管理。在Kubernetes中,无状态应用程序可以通过部署多个相同的副本,以实现负载均衡和高可用性。

以下是在Kubernetes中创建无状态应用程序的一般步骤和一些相关的概念:

    容器化应用程序: 首先,将应用程序容器化,将应用程序和其依赖项打包到容器中。这通常涉及创建一个Docker镜像。

    声明性配置: 使用Kubernetes的声明性配置,定义应用程序的规范,包括所需的容器镜像、副本数等。这可以通过YAML文件完成。

    副本集(ReplicaSet): 通过创建一个ReplicaSet对象,指定所需的副本数。ReplicaSet确保在集群中运行指定数量的副本,并在发生故障时进行自动修复。

apiVersion: apps/v1
kind: ReplicaSet
metadata:name: example-app
spec:replicas: 3selector:matchLabels:app: exampletemplate:metadata:labels:app: examplespec:containers:- name: app-containerimage: example-image:latest

    服务(Service): 为无状态应用程序创建一个Service,它为副本集提供一个稳定的网络终结点。Service允许其他应用程序通过Service的虚拟IP和端口与应用程序通信。

apiVersion: v1
kind: Service
metadata:name: example-service
spec:selector:app: exampleports:- protocol: TCPport: 80targetPort: 8080

    水平扩展: 通过更改ReplicaSet中的副本数,可以水平扩展应用程序,以适应不同的负载。Kubernetes会自动管理副本的创建和销毁。

通过这些步骤,你可以在Kubernetes中创建一个无状态应用程序,它可以以水平扩展的方式运行,并通过服务提供稳定的网络终结点。这种设计使得应用程序更容易维护和扩展,同时提供高可用性。

有状态(StatefulSet)

介绍

出现这种问题的原因可能是由于两种不同的环境或网络配置所致。让我们分析一下可能的原因以及如何解决这个问题:

    DNS配置不同

    • 在第一个命令中,您在Kubernetes主机上运行了nslookup命令,并且DNS服务器配置正确,所以它成功解析了 “web-1.nginx.default.svc.cluster.local”。

    • 在第二个命令中,您在一个BusyBox容器内运行了nslookup命令,该容器可能没有正确配置的DNS服务器信息,或者可能没有与Kubernetes集群内部DNS服务器通信的网络访问权限。

    网络问题

    • 确保BusyBox容器内部的网络配置是正确的,能够与Kubernetes集群的DNS服务器进行通信。如果容器无法访问Kubernetes DNS服务器,它将无法解析服务名称。

    • 您可以尝试运行nslookup命令时指定DNS服务器的IP地址,例如:nslookup web-1.nginx.default.svc.cluster.local 10.96.0.10,这将明确指定DNS服务器来解析名称,以确保DNS服务器的正确配置。

    DNS缓存问题

    • 如果在BusyBox容器内部多次运行nslookup并且之前有解析失败的尝试,可能会出现DNS缓存问题。您可以尝试清除DNS缓存,然后再次运行nslookup

    Service名称错误

    • 确保Service的名称 “nginx” 和命令中的名称匹配。检查是否有任何拼写错误或大小写问题。

    Kubernetes集群问题

    • 检查Kubernetes集群的状态,确保所有组件都在正常运行。DNS解析依赖于Kubernetes DNS服务的正常工作。

请首先检查上述问题,特别是在容器内部的网络和DNS配置。如果问题仍然存在,请提供更多有关您的环境配置和日志信息,以便更深入地分析和解决问题。

应用

创建web.yaml

apiVersion: v1
kind: Service
metadata:name: nginxlabels:app: nginx
spec:ports:- port: 80name: webclusterIP: Noneselector:app: nginx
---
apiVersion: apps/v1
kind: StatefulSet
metadata:name: web
spec:serviceName: "nginx"replicas: 3selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginximagePullPolicy: IfNotPresentports:- containerPort: 80name: web

这是一个Kubernetes配置文件,用于创建一个Service和一个StatefulSet,这两者都用于部署和管理NGINX应用。以下是对配置文件中各部分的详细解释:

    Service部分

  • apiVersion: v1kind: Service 表明这是一个Kubernetes Service 资源。

  • metadata 包含有关Service的元数据,包括名称和标签。

  • name: nginx 定义了Service的名称为 “nginx”。

  • labels 定义了标签,其中 app: nginx 将该Service与后面的StatefulSet关联起来。

  • spec 定义了Service的规格。

    • ports 定义了Service监听的端口,这里监听端口80,并且命名为 “web”。

    • clusterIP: None 意味着这是一个Headless Service,不会分配Cluster IP。

    StatefulSet部分

  • apiVersion: apps/v1kind: StatefulSet 表明这是一个Kubernetes StatefulSet 资源。

  • metadata 包含有关StatefulSet的元数据,包括名称。

  • name: web 定义了StatefulSet的名称为 “web”。

  • spec 定义了StatefulSet的规格。

    • serviceName: "nginx" 指定了StatefulSet关联的Service的名称,这将允许StatefulSet的Pods在DNS中使用 “nginx” 作为服务名。

    • replicas: 3 指定了要创建的Pod副本数,这里是3个。

    • selector 指定了用于选择要管理的Pod的标签。

      • matchLabels 定义了标签选择器,它与Service的标签匹配,以确保StatefulSet管理的是Service的Pod。

    • template 定义了要创建的Pod的模板。

      • metadata 包含有关Pod模板的元数据,包括标签。

        • labels 标签与Service的标签匹配,以确保Pod与Service关联。

      • spec 定义了Pod的规格。

        • containers 定义了容器列表。

          • name: nginx 定义了容器的名称为 “nginx”。

          • image: nginx 指定要使用的NGINX镜像。

          • imagePullPolicy: IfNotPresent 意味着在本地不存在NGINX镜像时才拉取。

          • ports 定义了容器监听的端口,这里监听端口80,并且命名为 “web”。

这个配置文件创建了一个Headless Service(Cluster IP为None)以及一个StatefulSet,该StatefulSet使用NGINX容器创建3个Pod,并将它们关联到该Service上,以便通过Service名称 “nginx” 在集群内部访问这些Pod。这种设置通常用于需要有状态应用程序,因为StatefulSet可以为每个Pod分配唯一的标识,并提供有序的部署和伸缩机制。

[root@k8smaster Stateful]# kubectl apply -f web.yaml 
[root@k8smaster Stateful]# kubectl get pod
NAME    READY   STATUS    RESTARTS   AGE
web-0   1/1     Running   0          81s
web-1   1/1     Running   0          79s
web-2   1/1     Running   0          76s
[root@k8smaster Stateful]# kubectl get svc
NAME             TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
kubernetes       ClusterIP   10.96.0.1        <none>        443/TCP          2d22h
mynginx          NodePort    10.103.164.206   <none>        80:30009/TCP     2d18h
mysql-service    NodePort    10.109.26.85     <none>        3360:30008/TCP   2d18h
nginx            ClusterIP   None             <none>        80/TCP           94s
[root@k8smaster Stateful]# kubectl get pod -n kube-system
NAME                                       READY   STATUS    RESTARTS   AGE
calico-kube-controllers-6949477b58-nwmr2   1/1     Running   0          2d19h
calico-node-5jq26                          1/1     Running   0          2d19h
calico-node-lk4zv                          1/1     Running   0          2d19h
calico-node-n4742                          1/1     Running   0          2d19h
coredns-7f89b7bc75-7zdk5                   1/1     Running   0          2d22h

查看**endpoint**

[root@k8smaster Stateful]# kubectl get ep
NAME             ENDPOINTS                                           AGE
kubernetes       192.168.2.210:6443                                  2d22h
mynginx          <none>                                              2d18h
mysql-service    <none>                                              2d18h
nginx            10.244.185.197:80,10.244.249.4:80,10.244.249.5:80   8m37s

进入ngixn里

[root@k8smaster Stateful]# kubectl exec -it web-1 -- bash
root@web-1:/# curl web-1.nginx.default.svc.cluster.local
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p><p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p><p><em>Thank you for using nginx.</em></p>
</body>
</html>

下载bind-utils

yum install bind-utils -y
[root@k8smaster Stateful]# nslookup web-1.nginx.default.svc.cluster.local 10.96.0.10Server:		10.96.0.10
Address:	10.96.0.10#53Name:	web-1.nginx.default.svc.cluster.local
Address: 10.244.249.4

使用 kubectl run 运行一个提供 nslookup 命令的容器,该命令来自于 dnsutils 包。 通过对 Pod 的主机名执行 nslookup,你可以检查这些主机名在集群内部的 DNS 地址:

kubectl run -i --tty --image busybox:1.28 dns-test --restart=Never --rm

这将启动一个新的 Shell。在新 Shell 中运行:

# 在 dns-test 容器 Shell 中运行以下命令
nslookup web-0.nginx

输出类似于:

Server:    10.0.0.10
Address 1: 10.0.0.10 kube-dns.kube-system.svc.cluster.localName:      web-0.nginx
Address 1: 10.244.1.6nslookup web-1.nginx
Server:    10.0.0.10
Address 1: 10.0.0.10 kube-dns.kube-system.svc.cluster.localName:      web-1.nginx
Address 1: 10.244.2.6

(现在可以退出容器 Shell:exit

应用2

以一个简单的nginx服务web.yaml为例:

---
apiVersion: v1
kind: Service
metadata:name: nginxlabels:app: nginx
spec:ports:- port: 80name: webclusterIP: Noneselector:app: nginx
---
apiVersion: apps/v1
kind: StatefulSet
metadata:name: nginx   # 将StatefulSet的名称改为"nginx"
spec:serviceName: "nginx"replicas: 2selector:matchLabels:app: nginx  # 添加选择器以匹配Pod的标签template:metadata:labels:app: nginxspec:containers:- name: nginximage: gcr.io/google_containers/nginx-slim:0.8ports:- containerPort: 80name: webvolumeMounts:- name: wwwmountPath: /usr/share/nginx/htmlvolumeClaimTemplates:- metadata:name: wwwannotations:volume.alpha.kubernetes.io/storage-class: anythingspec:accessModes: [ "ReadWriteOnce" ]resources:requests:storage: 1Gi
[root@k8smaster service]# kubectl apply -f statefulsets.yaml
service/nginx unchanged
statefulset.apps/nginx created# 查看创建的headless service和statefulset
[root@k8smaster service]# kubectl get service nginx
NAME    TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
nginx   ClusterIP   None         <none>        80/TCP    71m

1. 状态持久性:

  • 无状态应用程序: 无状态应用程序通常不需要持久性的存储。它们的每个实例都是相互独立的,可以在需要时动态创建和销毁。无状态应用程序不依赖于本地状态或会话信息。

  • 有状态应用程序: 有状态应用程序需要维护一些持久性的状态或数据,例如数据库。这种状态通常需要在容器重新调度或故障时保持不变。

2. 水平扩展:

  • 无状态应用程序: 无状态应用程序可以很容易地进行水平扩展,通过增加或减少实例的数量来处理负载。每个实例都是相同的,可以随意添加或删除。

  • 有状态应用程序: 有状态应用程序的水平扩展可能更为复杂,因为每个实例可能会维护特定的状态。在水平扩展时,需要考虑如何处理和同步状态,以确保应用程序的一致性。

3. 存储和卷:

  • 无状态应用程序: 通常,无状态应用程序可以使用临时存储,而无需关心数据的持久性。Kubernetes可以随时重新创建实例,而不会丢失重要数据。

  • 有状态应用程序: 有状态应用程序通常需要使用持久卷(Persistent Volumes)来存储和保护其状态。这确保了即使实例重新调度,应用程序仍然可以访问其之前的状态。

4. Pod标识和网络标识:

  • 无状态应用程序: 无状态应用程序通常可以使用随机的Pod标识符,因为它们的实例之间是相互独立的。它们依赖于服务发现机制来实现负载均衡。

  • 有状态应用程序: 有状态应用程序通常需要稳定的网络标识符和主机名,以确保它们在重新调度或扩展时能够保持一致的网络标识。

5. 部署和更新:

  • 无状态应用程序: 无状态应用程序的部署和更新通常更加简单,因为新的实例可以替代旧的实例而不会影响整体系统的一致性。

  • 有状态应用程序: 有状态应用程序的部署和更新可能需要更复杂的策略,以确保状态的平滑过渡,例如滚动更新和分阶段部署。

总体而言,选择使用有状态或无状态应用程序取决于应用程序的要求和特性。有状态应用程序通常更适合于需要维护持久状态或数据的情况,而无状态应用程序则更适合于可以水平扩展和无状态实例之间相互替换的情况。

有状态和无状态对比

StatefulSet是为了解决有状态服务的问题(对应Deployments和ReplicaSets是为无状态服务而设计)

在Kubernetes(k8s)中,有状态应用程序和无状态应用程序在设计和管理上存在一些关键的区别。下面是有状态和无状态应用程序的详细对比:

1. 概念:

  • 有状态应用程序(Stateful Applications):

    • 有状态应用程序通常需要在其生命周期内维护和管理持久状态,例如数据库。
    • 这类应用程序对于节点之间的状态保持和标识是敏感的,通常需要唯一标识符来管理其状态。
    • 有状态应用程序的实例通常被认为是持久性的,它们拥有独特的标识符,比如Pod名称。
  • 无状态应用程序(Stateless Applications):

    • 无状态应用程序不依赖于在其运行时维护的任何持久状态。
    • 这类应用程序的实例是可以互相替代的,因为它们的状态不会影响系统的整体运行。
    • 无状态应用程序通常更容易水平扩展,因为它们的实例之间是相互独立的。

2. 数据持久性:

  • 有状态应用程序:

    • 需要对数据进行持久化存储,通常使用持久卷(Persistent Volumes)或其他持久化存储解决方案。
    • 数据通常存储在外部数据库中,而Pod实例只是应用程序的前端。
  • 无状态应用程序:

    • 不需要在本地持久化存储数据,通常将数据存储在外部数据存储或数据库中。

3. 扩展性:

  • 有状态应用程序:

    • 扩展有状态应用程序可能更具挑战性,因为每个实例需要维护自己的状态,并且可能需要处理数据同步等问题。
  • 无状态应用程序:

    • 由于无状态应用程序的实例是相互独立的,它们通常更容易水平扩展,可以通过增加实例数量来应对负载增加。

4. 管理和部署:

  • 有状态应用程序:

    • 部署和管理有状态应用程序可能需要更多的关注和复杂性,因为需要确保状态的一致性和可靠性。
  • 无状态应用程序:

    • 无状态应用程序通常更容易部署和管理,因为它们的实例可以相对容易地替代彼此。

5. 故障恢复:

  • 有状态应用程序:

    • 故障恢复可能需要更多的关注,因为在一个节点故障时,需要确保状态的无缝切换。
  • 无状态应用程序:

    • 由于无状态应用程序的实例是相互独立的,故障恢复通常更为简单,新的实例可以替代故障的实例。

在选择有状态或无状态应用程序时,需要考虑应用程序的特性、性能需求和运维复杂性。有时候,应用程序可能会包含既有状态的组件又有无状态的组件,这需要综合考虑和合理设计。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/227297.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【OpenCV】实时屏幕捕获

文章目录 前言基本思路安装依赖包实时捕获屏幕画面转换屏幕画面数据调用窗体显示屏幕截取画面增加实时捕获时间保存实时视频流效果图完整实现代码 前言 日常中如果需要进行大数据分析&#xff0c;那么就要记录用户的使用情况和数据分析。 实时屏幕捕获就可以很好地获取数据&a…

云原生之深入解析Linkerd Service Mesh的功能和使用

一、简介 Linkerd 是 Kubernetes 的一个完全开源的服务网格实现&#xff0c;它通过为你提供运行时调试、可观测性、可靠性和安全性&#xff0c;使运行服务更轻松、更安全&#xff0c;所有这些都不需要对代码进行任何更改。Linkerd 通过在每个服务实例旁边安装一组超轻、透明的…

Other -- 了解网上服务器(ECS、VPS)

喜欢在公网上自己做网站发布的就会研究网上的售卖的各种服务器&#xff0c;下面简单了解下&#xff1a; 1. 虚拟专用服务器&#xff08;VPS,VirtualPrivateServer&#xff09; 借助容器或者虚拟化技术&#xff0c;将一台物理服务器分割成多个虚拟服务器&#xff0c;每个服务器…

MX6ULL学习笔记(十二)Linux 自带的 LED 灯

前言 前面我们都是自己编写 LED 灯驱动&#xff0c;其实像 LED 灯这样非常基础的设备驱动&#xff0c;Linux 内 核已经集成了。Linux 内核的 LED 灯驱动采用 platform 框架&#xff0c;因此我们只需要按照要求在设备 树文件中添加相应的 LED 节点即可&#xff0c;本章我们就来学…

Python基础05-函数

零、文章目录 Python基础05-函数 1、函数的作用及其使用步骤 &#xff08;1&#xff09;函数的作用 在Python实际开发中&#xff0c;我们使用函数的目的只有一个“让我们的代码可以被重复使用” 函数的作用有两个&#xff1a; ① 代码重用&#xff08;代码重复使用&#xf…

【AI工具】GitHub Copilot IDEA安装与使用

GitHub Copilot是一款AI编程助手&#xff0c;它可以帮助开发者编写代码&#xff0c;提供代码建议和自动完成功能。以下是GitHub Copilot在IDEA中的安装和使用步骤&#xff1a; 安装步骤&#xff1a; 打开IDEA&#xff0c;点击File -> Settings -> Plugins。在搜索框中输…

Electron学习第一天 ,启动项目

之前在安装官网的步骤操作&#xff0c;结果报错&#xff0c;找了好多办法&#xff0c;最后这种办法成功启动项目&#xff0c;并且没有报错&#xff0c;特此记录 特别提醒&#xff0c;最好安装淘宝镜像&#xff0c;npm 太慢&#xff0c;会导致报错问题&#xff0c;解决起来个人觉…

windows10 php8连接sql server

一、环境安装 文章目录 一、环境安装1.安装php拓展2.在 Windows 上安装PHP驱动程序3.在 Windows 上安装ODBC驱动 二、php连接sqlserver三、注意事项数据库相关设置相关语法sqlsrv_fetch_array 的示例&#xff1a;sqlsrv_fetch 的示例&#xff1a;echo 和 print_r 的不同 所用资…

Webrtc 学习交流

花了几周的时间研究了一下webrtc &#xff0c;并开发了一个小项目&#xff0c;用来点对点私密聊天 交流传输文件等…后续会继续扩展其功能。 体验地址&#xff0c;大狗子的ID,我在线时可以连接测试到我 f3e0d6d0-cfd7-44a4-b333-e82c821cd927 项目特点 除了交换信令与stun 没…

ES6 面试题 | 01.精选 ES6 面试题

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

Mybatis 动态SQL的插入操作

需求 : 根据用户的输入情况进行插入 动态SQL:根据需求动态拼接SQL 用户往表中插入数据,有的数据可能不想插入,比如不想让别人知道自己的性别,性别就为空 insert into userinfo(username,password,age,gender,phone) values(?,?,?,?,?); insert into userinfo(username,…

万界星空科技灯具制造行业MES核心功能

万界星空科技灯具制造行业MES系统功能介绍工单管理 MES通过工单来管理生产执行。工单状态有&#xff1a;创建、下达、执行、完成、取消。计划员创建工单&#xff0c;审核通过后释放到设备或产线。仓库可收到工单下达的通知&#xff0c;及时备料。产线只能看到已下达的工单&…

LVS-DR模式部署

目录 一、部署信息 二、部署LVS-DR模式 三、测试 四、DR模式 LVS负载均衡群集 一、部署信息 DR 服务器&#xff1a;172.16.114.70 Web 服务器1&#xff1a;172.16.114.80 Web 服务器2&#xff1a;172.16.114.60 vip&#xff1a;172.16.114.200 客户端&#xff1a;172.16.11…

STM32与Freertos入门(五)任务案例

1、实现功能 通过两个按键任务分别控制不同的点灯案例 创建 4 个任务&#xff1a;在点灯任务的基础上在创建两个按键任务&#xff1a; Task_led&#xff1a;间隔 500ms 闪烁 LE1&#xff1b; Task_led2&#xff1a;间隔 1000ms 闪烁 LED2&#xff1b; Task_key&#xff1a;如…

探索计算机视觉的无限可能

计算机视觉&#xff08;CV&#xff09;是人工智能领域的一个热门分支&#xff0c;它涉及到从图像和视频中提取信息&#xff0c;理解其内容&#xff0c;并执行各种任务。在这个博客中&#xff0c;我们将深入探讨计算机视觉的原理、应用和最新技术。 一、计算机视觉简介 计算机…

【Java系列】详解多线程(三)—— 线程安全(上篇)

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【Java系列专栏】【JaveEE学习专栏】 本专栏旨在分享学习Java的一点学习心得&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目录 一…

go-zero开发入门之网关往rpc服务传递数据2

go-zero 的网关服务实际是个 go-zero 的 API 服务&#xff0c;也就是一个 http 服务&#xff0c;或者说 rest 服务。http 转 grpc 使用了开源的 grpcurl 库&#xff0c;当网关需要往 rpc 服务传递额外的数据&#xff0c;比如鉴权数据的时候&#xff0c;通过 http 的 header 进行…

​SQL (关系型) 数据库-fastapi集成

SQL (关系型) 数据库 - FastAPI FastAPI不需要你使用SQL(关系型)数据库。 但是您可以使用任何您想要的关系型数据库。 在这里&#xff0c;让我们看一个使用着SQLAlchemy的示例。 您可以很容易地将SQLAlchemy支持任何数据库&#xff0c;像&#xff1a; PostgreSQLMySQLSQLi…

vue3 setup语法糖写法基本教程

前言 官网地址&#xff1a;Vue.js - 渐进式 JavaScript 框架 | Vue.js (vuejs.org)下面只讲Vue3与Vue2有差异的地方&#xff0c;一些相同的地方我会忽略或者一笔带过与Vue3一同出来的还有Vite&#xff0c;但是现在不使用它&#xff0c;等以后会有单独的教程使用。目前仍旧使用v…

eNSP小实验(ACL和NAT)

一.ACL 实验目的&#xff1a;过滤流量&#xff0c;然后匹配规划后&#xff0c;判断该流量通过或拒绝 1.拓扑图 2.配置 基本ACL 其它同理配置 R1 [Huawei]sys R1 [R1]int g0/0/0 [R1-GigabitEthernet0/0/0]dis th [V200R003C00] # interface GigabitEthernet0/0/0 # return…