热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

k8sCLI操作笔记

k8sCLI操作笔记k8s获取所有的命名空间namspace可简写为ns[rootvic-master~]#kubectlgetnsNAMESTATUSAGEdefault


k8s CLI 操作笔记


  1. k8s 获取所有的命名空间 namspace 可简写为 ns

[root@vic-master ~]# kubectl get ns
NAME STATUS AGE
default Active 32d
development Active 31d
kube-node-lease Active 32d
kube-public Active 32d
kube-system Active 32d

  1. 查看所有的节点 node 可简写为 no

[root@vic-master ~]# kubectl get no
NAME STATUS ROLES AGE VERSION
vic-master Ready master 33d v1.14.0
vic-node1 Ready <none> 32d v1.14.0
vic-node2 Ready <none> 32d v1.14.0

  1. 查询 pod , pod 简写为 po , 这里默认的命名空间的 default

[root&#64;vic-master ~]# kubectl get po
NAME READY STATUS RESTARTS AGE
frontend 1/1 Running 0 31d
myapp-54fc6bbfbd-f6cpk 1/1 Running 0 20h
myapp-54fc6bbfbd-zmb2v 1/1 Running 0 20h
ng-dep-679f4c7695-mw62d 1/1 Running 0 21h
redis-php 2/2 Running 0 30d

  1. 查询指定命名空间的 pod. 获取命名空间 kube-system 下的所有 pod

[root&#64;vic-master ~]# kubectl get po -n kube-system
NAME READY STATUS RESTARTS AGE
coredns-8686dcc4fd-gztm2 1/1 Running 1 33d
coredns-8686dcc4fd-xchp6 1/1 Running 1 33d
etcd-vic-master 1/1 Running 0 33d
kube-apiserver-vic-master 1/1 Running 0 33d
kube-controller-manager-vic-master 1/1 Running 9 33d
kube-flannel-ds-amd64-6v4wb 1/1 Running 0 32d
kube-flannel-ds-amd64-nxw8v 1/1 Running 0 32d
kube-flannel-ds-amd64-xplm2 1/1 Running 0 32d
kube-proxy-fr2lv 1/1 Running 0 32d
kube-proxy-m7qn9 1/1 Running 0 33d
kube-proxy-tjwbw 1/1 Running 0 32d
kube-scheduler-vic-master 1/1 Running 8 33d

  1. 查询所有资源

[root&#64;vic-master ~]# kubectl get all
NAME READY STATUS RESTARTS AGE
pod/frontend 1/1 Running 0 31d
pod/myapp-54fc6bbfbd-f6cpk 1/1 Running 0 20h
pod/myapp-54fc6bbfbd-zmb2v 1/1 Running 0 21h
pod/ng-dep-679f4c7695-mw62d 1/1 Running 0 21h
pod/redis-php 2/2 Running 0 30dNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.1.0.1 <none> 443/TCP 33d
service/myapp NodePort 10.1.197.115 <none> 80:31611/TCP 20h
service/ng-dep ClusterIP 10.1.115.230 <none> 80/TCP 21hNAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/myapp 2/2 2 2 21h
deployment.apps/ng-dep 1/1 1 1 21hNAME DESIRED CURRENT READY AGE
replicaset.apps/myapp-54fc6bbfbd 2 2 2 21h
replicaset.apps/ng-dep-679f4c7695 1 1 1 21h

  1. 获取 service svc 简写&#xff0c; 类似获取 pod&#xff0c;同样可以用 -n 来获取指定命名空间下的 service, --all-namepsaces 获取所有命名空间下的 service。

[root&#64;vic-master ~]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.1.0.1 <none> 443/TCP 33d
myapp NodePort 10.1.197.115 <none> 80:31611/TCP 20h
ng-dep ClusterIP 10.1.115.230 <none> 80/TCP 21h
[root&#64;vic-master ~]# kubectl get svc -n default
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.1.0.1 <none> 443/TCP 33d
myapp NodePort 10.1.197.115 <none> 80:31611/TCP 20h
ng-dep ClusterIP 10.1.115.230 <none> 80/TCP 21h
[root&#64;vic-master ~]# kubectl get svc --all-namespaces
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
default kubernetes ClusterIP 10.1.0.1 <none> 443/TCP 33d
default myapp NodePort 10.1.197.115 <none> 80:31611/TCP 20h
default ng-dep ClusterIP 10.1.115.230 <none> 80/TCP 21h
kube-system kube-dns ClusterIP 10.1.0.10 <none> 53/UDP,53/TCP,9153/TCP 33d

创建一个可访问的 Web 应用


  1. 创建一个 deloyment, vicccc/myapp 是我的 Web 镜像&#xff0c;访问 8080 端口会 返回 hello world

[root&#64;vic-master ~]# kubectl create deploy myapp --image&#61;vicccc/myapp
deployment.apps/myapp created

查看 pod 状态 myapp 的状态是 running

[root&#64;vic-master ~]# kubectl get po
NAME READY STATUS RESTARTS AGE
frontend 1/1 Running 0 31d
myapp-688777bd55-nnvws 1/1 Running 0 7m47s
ng-dep-679f4c7695-mw62d 1/1 Running 0 23h
redis-php 2/2 Running 0 31d

  1. 查看 pod 的详细信息

[root&#64;vic-master ~]# kubectl get po -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
frontend 1/1 Running 0 31d 10.244.2.2 vic-node2 <none> <none>
myapp-688777bd55-nnvws 1/1 Running 0 10m 10.244.2.8 vic-node2 <none> <none>
ng-dep-679f4c7695-mw62d 1/1 Running 0 23h 10.244.2.6 vic-node2 <none> <none>
redis-php 2/2 Running 0 31d 10.244.1.3 vic-node1 <none> <none>

  1. 看到 myapp pod 的 ip 地址为 10.244.2.8 ,直接用 curl 访问 8080 端口&#xff0c;正常返回 hello world

[root&#64;vic-master ~]# curl 10.244.2.8:8080
hello world

  1. 当然这个地址只能在本地主机能访问&#xff0c;需要外部机器访问的话需要创建 service, 只要 service name 和 deployment 同名 k8s 就能将两个关联起来

[root&#64;vic-master ~]# kubectl create svc nodeport myapp --tcp&#61;8080:8080
service/myapp created

查看 service 看到 8080 端口被映射到了 31540 端口&#xff0c; 通过本地主机的 IP 加端口便可以访问了。

[root&#64;vic-master ~]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.1.0.1 <none> 443/TCP 33d
myapp NodePort 10.1.150.3 <none> 8080:31540/TCP 36s
ng-dep ClusterIP 10.1.115.230 <none> 80/TCP 23h

我的机器的 ip 为 8.16.0.39 , 当然局域网中的主机 通过浏览器等 访问 8.16.0.39:31540 端口也可以获取对应结果

[root&#64;vic-master ~]# curl 8.16.0.39:31540
hello world[root&#64;vic-master ~]#

  1. 可以用 YAML 的形式查看资源

[root&#64;vic-master ~]# kubectl get deploy myapp -o yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:annotations:deployment.kubernetes.io/revision: "1"creationTimestamp: "2020-01-16T08:02:20Z"generation: 1labels:app: myappname: myappnamespace: defaultresourceVersion: "4133751"selfLink: /apis/extensions/v1beta1/namespaces/default/deployments/myappuid: 85216899-3836-11ea-b983-000c291cf287
spec:progressDeadlineSeconds: 600replicas: 1revisionHistoryLimit: 10selector:matchLabels:app: myappstrategy:rollingUpdate:maxSurge: 25%maxUnavailable: 25%type: RollingUpdatetemplate:metadata:creationTimestamp: nulllabels:app: myappspec:containers:- image: vicccc/myappimagePullPolicy: Alwaysname: myappresources: {}terminationMessagePath: /dev/termination-logterminationMessagePolicy: FilednsPolicy: ClusterFirstrestartPolicy: AlwaysschedulerName: default-schedulersecurityContext: {}terminationGracePeriodSeconds: 30
status:availableReplicas: 1conditions:- lastTransitionTime: "2020-01-16T08:02:37Z"lastUpdateTime: "2020-01-16T08:02:37Z"message: Deployment has minimum availability.reason: MinimumReplicasAvailablestatus: "True"type: Available- lastTransitionTime: "2020-01-16T08:02:20Z"lastUpdateTime: "2020-01-16T08:02:37Z"message: ReplicaSet "myapp-688777bd55" has successfully progressed.reason: NewReplicaSetAvailablestatus: "True"type: ProgressingobservedGeneration: 1readyReplicas: 1replicas: 1updatedReplicas: 1

  1. 扩缩容&#xff0c; 扩展为 3 个副本

[root&#64;vic-master ~]# kubectl scale deploy/myapp --replicas&#61;3
deployment.extensions/myapp scaled
[root&#64;vic-master ~]#
[root&#64;vic-master ~]# kubectl get deploy
NAME READY UP-TO-DATE AVAILABLE AGE
myapp 1/3 3 1 79m
ng-dep 1/1 1 1 24h
[root&#64;vic-master ~]# kubectl get deploy
NAME READY UP-TO-DATE AVAILABLE AGE
myapp 3/3 3 3 80m
ng-dep 1/1 1 1 24h

其他


  1. 查看当前 k8s 支持的所有 API

[root&#64;vic-master ~]# kubectl api-versions
admissionregistration.k8s.io/v1beta1
apiextensions.k8s.io/v1beta1
apiregistration.k8s.io/v1
apiregistration.k8s.io/v1beta1
apps/v1
apps/v1beta1
apps/v1beta2
authentication.k8s.io/v1
authentication.k8s.io/v1beta1
authorization.k8s.io/v1
authorization.k8s.io/v1beta1
autoscaling/v1
autoscaling/v2beta1
autoscaling/v2beta2
batch/v1
batch/v1beta1
certificates.k8s.io/v1beta1
coordination.k8s.io/v1
coordination.k8s.io/v1beta1
events.k8s.io/v1beta1
extensions/v1beta1
networking.k8s.io/v1
networking.k8s.io/v1beta1
node.k8s.io/v1beta1
policy/v1beta1
rbac.authorization.k8s.io/v1
rbac.authorization.k8s.io/v1beta1
scheduling.k8s.io/v1
scheduling.k8s.io/v1beta1
storage.k8s.io/v1
storage.k8s.io/v1beta1
v1

  1. 查看当前 k8s 支持的所有资源

[root&#64;vic-master ~]# kubectl api-resources
NAME SHORTNAMES APIGROUP NAMESPACED KIND
bindings true Binding
componentstatuses cs false ComponentStatus
configmaps cm true ConfigMap
endpoints ep true Endpoints
events ev true Event
limitranges limits true LimitRange
namespaces ns false Namespace
nodes no false Node
persistentvolumeclaims pvc true PersistentVolumeClaim
persistentvolumes pv false PersistentVolume
pods po true Pod
podtemplates true PodTemplate
replicationcontrollers rc true ReplicationController
resourcequotas quota true ResourceQuota
secrets true Secret
serviceaccounts sa true ServiceAccount
services svc true Service
mutatingwebhookconfigurations admissionregistration.k8s.io false MutatingWebhookConfiguration
validatingwebhookconfigurations admissionregistration.k8s.io false ValidatingWebhookConfiguration
customresourcedefinitions crd,crds apiextensions.k8s.io false CustomResourceDefinition
apiservices apiregistration.k8s.io false APIService
controllerrevisions apps true ControllerRevision
daemonsets ds apps true DaemonSet
deployments deploy apps true Deployment
replicasets rs apps true ReplicaSet
statefulsets sts apps true StatefulSet
tokenreviews authentication.k8s.io false TokenReview
localsubjectaccessreviews authorization.k8s.io true LocalSubjectAccessReview
selfsubjectaccessreviews authorization.k8s.io false SelfSubjectAccessReview
selfsubjectrulesreviews authorization.k8s.io false SelfSubjectRulesReview
subjectaccessreviews authorization.k8s.io false SubjectAccessReview
horizontalpodautoscalers hpa autoscaling true HorizontalPodAutoscaler
cronjobs cj batch true CronJob
jobs batch true Job
certificatesigningrequests csr certificates.k8s.io false CertificateSigningRequest
leases coordination.k8s.io true Lease
events ev events.k8s.io true Event
daemonsets ds extensions true DaemonSet
deployments deploy extensions true Deployment
ingresses ing extensions true Ingress
networkpolicies netpol extensions true NetworkPolicy
podsecuritypolicies psp extensions false PodSecurityPolicy
replicasets rs extensions true ReplicaSet
ingresses ing networking.k8s.io true Ingress
networkpolicies netpol networking.k8s.io true NetworkPolicy
runtimeclasses node.k8s.io false RuntimeClass
poddisruptionbudgets pdb policy true PodDisruptionBudget
podsecuritypolicies psp policy false PodSecurityPolicy
clusterrolebindings rbac.authorization.k8s.io false ClusterRoleBinding
clusterroles rbac.authorization.k8s.io false ClusterRole
rolebindings rbac.authorization.k8s.io true RoleBinding
roles rbac.authorization.k8s.io true Role
priorityclasses pc scheduling.k8s.io false PriorityClass
csidrivers storage.k8s.io false CSIDriver
csinodes storage.k8s.io false CSINode
storageclasses sc storage.k8s.io false StorageClass
volumeattachments storage.k8s.io false VolumeAttachment

推荐阅读
  • Ralph的Kubernetes进阶之旅:集群架构与对象解析
    本文深入探讨了Kubernetes集群的架构和核心对象,详细介绍了Pod、Service、Volume等基本组件,以及更高层次的抽象如Deployment、StatefulSet等,帮助读者全面理解Kubernetes的工作原理。 ... [详细]
  • 本文档详细介绍了在 Kubernetes 集群中部署 ETCD 数据库的过程,包括实验环境的准备、ETCD 证书的生成及配置、以及集群的启动与健康检查等关键步骤。 ... [详细]
  • Kubernetes 实践指南:初次体验
    本文介绍了如何通过官方提供的简易示例,快速上手 Kubernetes (K8S),并深入理解其核心概念和操作流程。 ... [详细]
  • 前言: 网上搭建k8s的文章很多,但很多都无法按其说明在阿里云ecs服务器成功搭建,所以我就花了些时间基于自己成功搭建k8s的步骤写了个操作手册,希望对想搭建k8s环境的盆友有所帮 ... [详细]
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • Windows环境下部署Kubernetes Dashboard指南
    本指南详细介绍了如何在Windows系统中部署Kubernetes Dashboard,包括下载最新配置文件、修改服务类型以支持NodePort访问、下载所需镜像并启动Dashboard服务等步骤。 ... [详细]
  • 本文详细介绍了如何在Kubernetes集群中调整etcd、apiserver、controller-manager、scheduler等核心组件以及kube-proxy和coredns的时区设置方法。 ... [详细]
  • 本文深入探讨了Kubernetes中Pod的基础概念及其分类,旨在帮助读者更好地理解和利用这一核心组件。通过详细的解析,我们将了解Pod如何作为最小的部署单元在Kubernetes集群中工作。 ... [详细]
  • Kubernetes 1.9.0 Alpha.1 发布公告 [Kubernetes 最新动态]
    近日,Kubernetes 社区发布了两个新版本:1.8.0 RC.1 和 1.9.0 Alpha.1。这是 k8s 1.9.0 的首次发布,自 v1.8.0 Alpha.3 以来进行了大量更新,共提交了 279 次。 ... [详细]
  • 检查 Kubernetes 系统命名空间中的 Pod 状态时,发现 Metric Server Pod 虽然处于运行状态,但存在异常:日志显示 'it doesn’t contain any IP SANs'。 ... [详细]
  • 小王详解:内部网络中最易理解的NAT原理剖析,挑战你的认知极限
    小王详解:内部网络中最易理解的NAT原理剖析,挑战你的认知极限 ... [详细]
  • 在 Kubernetes 中,Pod 的调度通常由集群的自动调度策略决定,这些策略主要关注资源充足性和负载均衡。然而,在某些场景下,用户可能需要更精细地控制 Pod 的调度行为,例如将特定的服务(如 GitLab)部署到特定节点上,以提高性能或满足特定需求。本文深入解析了 Kubernetes 的亲和性调度机制,并探讨了多种优化策略,帮助用户实现更高效、更灵活的资源管理。 ... [详细]
  • Envoy 流量分配策略优化
    在本研究中,我们对Envoy的流量分配策略进行了优化,旨在提高系统的稳定性和性能。实验环境包括一个前端代理服务(Envoy,IP地址为172.31.57.10)和五个后端服务。通过调整Envoy的配置,实现了更高效的流量分发和负载均衡,显著提升了整体系统的响应速度和可靠性。 ... [详细]
  • kubernetes官网关于nodelocaldns缓存的介绍 ... [详细]
  • Kubernetes_如何在GO语言中使用Kubernetes API?
    本文由编程笔记#小编为大家整理,主要介绍了如何在GO语言中使用KubernetesAPI?相关的知识,希望对你有一定的参考价值。 ... [详细]
author-avatar
ririye2011
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有