热门标签 | 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

推荐阅读
  • Kubernetes集群高可用的策略和实践 ... [详细]
  • 本文|层面_Kubernetes概述
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Kubernetes概述相关的知识,希望对你有一定的参考价值。前言本文搜集大量关于Kuber ... [详细]
  • “自主设计与实施的故障注入微服务Sidecar,欢迎大佬批评指正!”
    “故障注入Sidecar“——为您的微服务注入故障以验证集群性能!由于导师和实验室师兄们的科研需要,本人专门以Sidecar的模式设计了一个用于错误注入的微服务模块。该模块可以与任 ... [详细]
  • SpringBoot uri统一权限管理的实现方法及步骤详解
    本文详细介绍了SpringBoot中实现uri统一权限管理的方法,包括表结构定义、自动统计URI并自动删除脏数据、程序启动加载等步骤。通过该方法可以提高系统的安全性,实现对系统任意接口的权限拦截验证。 ... [详细]
  • linux运维之K8S(一)
    1.什么是Kubernetes?Kubernetes(通常简称为K8S,即是将8个字母“ubernete”替换成“8”的缩写)是一个以容器为中心的基础架构。可以实现在物理集群或者虚 ... [详细]
  • 易语言下载别人的源码编译出来用不了_K8s二进制部署编译源码解决kubeletclientxxxx证书一年问题...
    cpu6核心以上内存15gb以上拉取源码确保golang版本与源码版本一致(一般新的不行就往回退个版本)主要为了解决二进制方式部署Kubernetes的kubelet-client ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • Java实战之电影在线观看系统的实现
    本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 有没有一种方法可以在不继承UIAlertController的子类或不涉及UIAlertActions的情况下 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • NSD cisco高级路由与交换技术2014.8.12
    实验01:DHCP服务的应用实验目标:通过建立DHCP服务,给计算机自动分配地址实验环境:实验步骤:一、配置计算机pc8pc ... [详细]
  • 本文整理了Java中org.dataconservancy.ui.model.DataItem.getFiles()方法的一些代码示例,展示了DataIte ... [详细]
  • TerraformVersionTerraformv0.9.11AffectedResource(s)Pleas ... [详细]
  •  pause  暂停命令find搜索文件或文件内指定的字符串prompt设置命令提式符ren  批量重名用法:ren1.txt2.bat  效果:1.txt就被改为2.batsub ... [详细]
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社区 版权所有