在实际工作中熟练的使用这些命令去定位K8s集群问题时是我们爱不释手的好伴侣,来和我们相互认识下吧。...如果不指定名称, 系统则将返回属于TYPE的全部对象的列表,例如$ kubectl get pods将返 回所有Pod的列表。...,services -l name= #删除所有Pod kubectl delete pods --all 3.5.执行容器的命令 #执行Pod的date命令,默认使用Pod中的第...#可以使用kubectl edit命令编辑运行中的资源对象,例如使用下面的 命令编辑运行中的一个Deployment kubectl edit deploy nginx 3.9.将Pod的开放端口映射到本地...#将集群上Pod的80端口映射到本地的8888端口,在浏览器 http://127.0.0.1:8888中就能够访问到容器提供的服务了 kubectl port-forward --address 0.0.0.0
这些资源包括: 共享存储,当作卷 网络,作为唯一的集群 IP 地址 有关每个容器如何运行的信息,例如容器映像版本或要使用的特定端口。 工作节点 一个 pod 总是运行在 工作节点。...,并非是脚本化的原始文件 在终端中显示应用 pods 是在私有网络中运行的,因此先创建一个代理 $ kubectl proxy Starting to serve on 127.0.0.1:8001...简单说:服务类似一个 nginx,可以决定路由到哪些 pod 上去 使用 expose 暴露你的程序 创建新服务 services # 先找到一个 pod ,确定你的应用还在运行 $ kubectl get...当流量增加时,我们需要扩容应用程序满足用户需求。 扩缩 是通过改变 Deployment 中的副本数量来实现的。...上述的 pods 表示有 3 个可用,有 2 个更新失败了 # 这意味着,在滚动更新过程中,新的版本启动失败了,老的丢掉了一个 # 这个时候使用回滚更新 $ kubectl rollout undo deployments
: 这部分命令表示要使用kubectl运行一个Pod,并将其命名为"nginx"。...# get: 这是kubectl命令的一个子命令,用于检索(获取)Kubernetes资源的信息。 # svc: 这是get子命令的参数,表示要获取服务(Service)资源的信息。...# get: 这是kubectl命令的一个子命令,用于检索(获取)Kubernetes资源的信息。 # ep: 这是get子命令的参数,表示要获取Endpoints资源的信息。...# get: 这是kubectl命令的一个子命令,用于检索(获取)Kubernetes资源的信息。 # svc: 这是get子命令的参数,表示要获取服务(Service)资源的信息。...# 查看现有的service kubectl get svc # 运行临时容器 kubectl run busybox --image=busybox -it --rm --restart=Never
kubectl get services kubectl get service 的名称> -o yaml 通过kubectl api-versions和kubectl api-resources...; 缩进时只能使用空格,不能使用Tab键; 缩进的空格数量不重要,只要相同层级的元素左侧对齐即可; # 表示注释,从这个字符一直到行尾,都会被解析器忽略; 使用YAML配置文件部署nginx kubectl...网络、服务与负载均衡 端口转发访问集群中的应用 kubectl port-forward [本地端口]:的端口> 以nginx为例子: kubectl get deployments.../cfs.yaml kubectl get pv #获取持久卷的列表,注意此时cfs持久卷的状态 新建一个cfsclaim.yaml文件,创建一个持久卷申领PVC,让PVC绑定之前创建的PV.../cfsclaim.yaml kubectl get pv #获取持久卷的列表,注意此时cfs持久卷的状态 如果返回类似以下信息,STATUS状态为Bound,CLAIM为default/
命令的基本输出 kubectl get services # 列出当前命名空间下的所有 services kubectl get pods --all-namespaces.../my-manifest.yaml # 生成一个句点分隔的树,其中包含为节点返回的所有键 # 在复杂的嵌套JSON结构中定位键时非常有用 kubectl get nodes -o json | jq...# 挂接到一个运行的容器中 kubectl port-forward my-pod 5000:6000 # 在本地计算机上侦听端口 5000 并转发到 my-pod 上的端口...使用逗号分隔的自定义列来打印表格 使用 -o=custom-columns 的示例: # 集群中运行着的所有镜像 kubectl get pods -A -o=custom-columns='DATA:...Kubectl 日志输出详细程度和调试 Kubectl 日志输出详细程度是通过 -v 或者 --v 来控制的,参数后跟一个数字表示日志的级别。
,它是在minikube启动集群时默认创建的。...要找出外部打开了哪些端口(通过NodePort选项),我们将运行如下的describe service命令: $ kubectl describe services/kubernetes-bootcamp...,分配节点端口的值: $ export NODE_PORT=$(kubectl get services/kubernetes-bootcamp -o go-template='{{(index .spec.ports...使用description部署命令,我们可以看到标签的名称: kubectl describe deployment 让我们使用这个标签来查询Pods列表。...确认服务已消失: $ kubectl get services NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes
2.2 遗留问题与k8s 回顾上一篇的一个遗留问题:Docker的Containers列表中,有几个/k8s_开头的,其中/k8s_dockerdemoapplication1_dockerxxxx的这个我们已经定位病处理...--type="NodePort" --port 8080 service/kubernetes-bootcamp exposed 4、再查询一下服务列表 bogon xxx$ kubectl get...5、查看服务详情 kubectl describe services/kubernetes-bootcamp 本地的查询结果: 6、创建环境变量 创建一个明伟NODE_PORT的环境变量,值是我们刚才暴露的服务...,分配给节点的端口(NodePort): bogon xxx$ export NODE_PORT=$(kubectl get services/kubernetes-bootcamp -o go-template...再看一下pods列表: bogon xxx$ kubectl get pods NAME READY STATUS
这里的web就是traefik静态配置(启动参数)中的 --entryPoints.web.address=:8080,通过仪表盘也可以看到 - web routes: - kind...port: 80 现在将入口web暴露出来,通过8080端口访问: kubectl port-forward --address=0.0.0.0 -n traefik-v2 $(...kubectl get pods -n traefik-v2 --selector "app.kubernetes.io/name=traefik" --output=name) 8080:8080...接受正则表达式 Query(foo=bar, bar=baz): 匹配查询字符串参数 注意点: 为了与Host和Path表达式一起使用正则表达式,必须声明一个任意命名的变量,后跟用冒号分隔的正则表达式,...这里的web就是traefik静态配置(启动参数)中的 --entryPoints.web.address=:8080,通过仪表盘也可以看到 - web routes: - kind
,如冒号、逗号、横杆 4、用#号注释 5、如果包含特殊字符用单引号引起来 6、布尔值必须用引号括起来 7、—表示yaml文件格式的分割 2、使用YAML文件创建资源对象 查看资源版本标签 [root@master...- name: string spec: #必选,Pod中容器的详细定义 containers: #必选,Pod中容器列表 -...] #容器的启动命令列表,如不指定,使用打包时使用的启动命令 args: [string] #容器的启动命令参数列表...#需要暴露的端口库号列表 - name: string #端口号名称 containerPort: int #容器需要监听的端口号...#端口协议,支持TCP和UDP,默认TCP env: #容器运行前需设置的环境变量列表 - name: string
查看所有 pod 列表, -n 后跟 namespace, 查看指定的命名空间 kubectl get pod kubectl get pod -n kube-system #查看指定命名空间的...RC 和 service 列表, -o wide 查看详细信息 kubectl get rc,svc kubectl get pod,svc -o wide kubectl get pod 的基本输出 kubectl get services # 列出当前命名空间下的所有 services kubectl get pods --all-namespaces...# 挂接到一个运行的容器中 kubectl port-forward my-pod 5000:6000 # 在本地计算机上侦听端口 5000 并转发到 my-pod 上的端口... 的示例: # 集群中运行着的所有镜像 kubectl get pods -A -o=custom-columns='DATA:spec.containers[*].image' # 除 "k8s.gcr.io
以下是使用kubectl枚举特定命名空间下所有服务的例子:kubectl get services -n default如果你想获取特定命名空间下所有服务的名称,并且希望每个名称单独成行,可以使用以下命令...当使用dnsrecon或其他类似工具无法获得所需信息时,或者为了更直接地访问服务列表,可以直接使用kubectl命令行工具查询Kubernetes API。...使用 kubectl 获取所有服务名称下面的命令将列出所有命名空间中的服务名称:kubectl get services --all-namespaces -o jsonpath='{range .items...[*]}{.metadata.name}{"\n"}{end}'kubectl get services: 请求获取当前集群中所有的服务。...场景 2:外部攻击者利用暴露的 CoreDNS 服务目标:当 CoreDNS 服务(UDP 53 端口)意外暴露到公网时,外部攻击者可利用此进行信息收集。
通过NodePort, 此时集群中每一个节点(Node)都会监听指定端口, 我们通过任意节点的端口即可访问到指定服务. 但过多的服务会开启大量端口难以维护. 通过LoadBalance来暴露服务....准备 在开始之前, 笔者已经创建好了测试应用, 代码过长此处略去, 详见附录1和附录2 我们通过kubectl get pods查看pod列表....NodePort 集群中每一个节点(Node)都会监听指定端口, 我们通过任意节点的端口即可访问到指定服务. 但过多的服务会开启大量端口难以维护....通过kubectl get services可查看Service列表如下: [root@nas-centos1 k8s-test]# kubectl get services NAME...如果环境不支持LB, 那么创建的LoadBalance将始终处于状态: [root@nas-centos1 k8s-test]# kubectl get services NAME
如果您已经运行了 Deployment 并创建了一个 Service,但是当您尝试访问它时没有得到响应,希望这份文档能帮助您找出问题所在。 ...Pods 是运行状态 $ kubectl get pods -l app=hostnames NAME READY STATUS RESTARTS...default” 是我们正在操作的 Namespace。”svc” 表示这是一个 Service。”cluster.local” 是您的集群域,在您自己的集群中可能会有所不同。...从集群中的一个节点,访问 Service 的 IP(从上面的 kubectl get 命令获取); u@node$ curl 10.0.1.175:80hostnames-0utonu@node$ curl...Endpoints 列表中的每个 Pod 返回自己的主机名。
2.2 遗留问题与k8s 回顾上一篇的一个遗留问题:Docker的Containers列表中,有几个/k8s_开头的,其中/k8s_dockerdemoapplication1_dockerxxxx的这个我们已经定位并处理...那么可能就是k8s的deployment,所以通过kubectl查看deployments: bogon xxx$ kubectl get deployments NAME...--type="NodePort" --port 8080 service/kubernetes-bootcamp exposed 4、再查询一下服务列表 bogon xxx$ kubectl get...6、创建环境变量 创建一个名为NODE_PORT的环境变量,值是我们刚才暴露的服务,分配给节点的端口(NodePort): bogon xxx$ export NODE_PORT=$(kubectl get...再看一下pods列表: bogon xxx$ kubectl get pods NAME READY STATUS
如果你使用 Deployment 来运行你的应用程序,则它可以动态创建和销毁 Pod。...每个 Pod 都有自己的 IP 地址,但是在 Deployment 中,在同一时刻运行的 Pod 集合可能与稍后运行该应用程序的 Pod 集合不同。...然后指定nodePort端口是30002,表示node对外暴露的端口是30002,targetPort是80,表示30002端口收到请求之后,把请求转发到绑定的Pods的80端口。...执行命令:kubectl get services,可以看到这样的输出: kubectl get services NAME TYPE CLUSTER-IP...同理,k8s中的service也提供了这样类似的功能(当然,service提供的功能不止这些)。 当然,由于nginx使用的http是七层协议,还可以使用Ingress来实现类似的功能。
commands with basic output $ kubectl get services # 列出所有 namespace 中的所有 service...$ kubectl get pods --all-namespaces # 列出所有 namespace 中的所有 pod $ kubectl get pods -o wide...删除 my-ns namespace 下的所有 pod 和 serivce,包括尚未初始化的 与运行中的 Pod 交互 $ kubectl logs my-pod...# 连接到运行中的容器 $ kubectl port-forward my-pod 5000:6000 # 转发 pod 中的 6000 端口到本地的 5000 端口 $ kubectl...使用逗号分隔的自定义列列表打印表格 Kubectl 详细输出和调试 使用 -v 或 --v 标志跟着一个整数来指定日志级别。
如果您已经运行了 Deployment 并创建了一个 Service,但是当您尝试访问它时没有得到响应,希望这份文档能帮助您找出问题所在。...Pods 是运行状态: $ kubectl get pods -l app=hostnames NAME READY STATUS RESTARTS...default” 是我们正在操作的 Namespace。”svc” 表示这是一个 Service。”cluster.local” 是您的集群域,在您自己的集群中可能会有所不同。...假设我们可以确认 DNS 工作正常,那么接下来要测试的是您的 Service 是否工作正常。从集群中的一个节点,访问 Service 的 IP(从上面的 kubectl get 命令获取)。...Endpoints 列表中的每个 Pod 返回自己的主机名。
如果您已经运行了 Deployment 并创建了一个 Service,但是当您尝试访问它时没有得到响应,希望这份文档能帮助您找出问题所在。...Pods 是运行状态 $ kubectl get pods -l app=hostnames NAME READY STATUS RESTARTS...default” 是我们正在操作的 Namespace。”svc” 表示这是一个 Service。”cluster.local” 是您的集群域,在您自己的集群中可能会有所不同。...从集群中的一个节点,访问 Service 的 IP(从上面的 kubectl get 命令获取); u@node$ curl 10.0.1.175:80 hostnames-0uton u@node$...Endpoints 列表中的每个 Pod 返回自己的主机名。
#Service自身端口,现在用不到,后面会讲--target-port #目标端口,即容器中服务运行的端口--type #Service类型#查看pod #查看deployment #查看service...用任何work节点加暴漏的端口访问标签:kubectl get pods --show-labels # 查看Pod标签kubectl get pods -l app=web-demo # 根据标签过滤...”缩进,使用空格缩进• 通常开头缩进 2 个空格• 字符后缩进 1 个空格,如冒号、逗号等• “---” 表示YAML格式,一个文件的开始• “#”注释1、deployment的yaml等同于:kubectl...5、应用发布失败回滚:应用升级失败时,执行回滚操作是一个关键的步骤,以确保你的应用程序能够恢复到之前稳定的状态。...kubectl describe 查看资源信息:(当前命名空间的资源列表)kubectl get # -o wide、-o yaml查看某一个pod
在node不可用的情况下,相同的pods会被调度到集群中其他可用的nodes上 Nodes 一个pod总是运行在一个node上。...常用的kubectl命令 kubectl get - 列出资源 kubectl describe - 展示一个资源的详细信息 kubectl logs - 打印一个pod中的一个容器的日志...services是一个允许pods在kubernetes中死掉和复制而不影响应用的抽象层。...,deployment # kubectl get pods -l run=kubernetes-bootcamp # kubectl get services -l run=kubernetes-bootcamp...| Running on: kubernetes-bootcamp-390780338-7db2d | v=1 5.扩展应用实例 在之前的例子中,只部署了一个应用实例,当流量增加时就需要扩展应用实例