学习Kubernetes~第三部分:kubectl~
索引
-
- 之前的摘要
-
- 执行kubectl指令
-
- 有关术语
- 后记
上次的摘要
上次学习Kubernetes的第二部分,花费在家庭局域网环境设置上。我们添加了Vagrant设置的桥接适配器,并意识到需要了解Vagrant!尽管每次都会遇到困难,但我相信失败会成为力量!这仅针对与人命无关的事情。
使用kubectl进行操作
根据官方文档,kubectl可以控制Kubernetes集群。看到这个,我觉得可以经常使用一些命令来操作,于是就决定按照参考手册尝试一些命令。
首先,让我们掌握语法。如果不了解英语的语法,就无法理解说些什么,所以语法是必不可少的。※并不是说我懂英语。
kubectl [command] [TYPE] [NAME] [flags]
嗯,坦率地说,光光看这些还是不明白,而且也不能在想回头再看的时候用!!所以嘛。
命令的详细信息
获得
以列表形式在每行显示一个对象。用于快速检查信息。
使用例
kubectl get [TYPE]
kubectl get [TYPE] [NAME]
kubectl get [TYPE] [NAME] [flags]
kubectl get -f [マニフェスト or ディレクトリ]
nodeの一覧取得
D:\Repository\kubernetes\vagrant-kubernetes>kubectl get node
NAME STATUS ROLES AGE VERSION
master Ready master 20h v1.14.10
node1 Ready <none> 20h v1.14.10
node2 Ready <none> 20h v1.14.10
描述
显示更详细的信息。所以,当涉及到节点或信息收集时,选择这个选项。
使用例
kubectl describe [TYPE]
kubectl describe [TYPE] [NAME]
kubectl describe [TYPE] [NAME] [flags]
kubectl describe -f [マニフェスト or ディレクトリ]
D:\Repository\kubernetes\vagrant-kubernetes>kubectl describe node
Name: master
Roles: master
Labels: beta.kubernetes.io/arch=amd64
beta.kubernetes.io/os=linux
kubernetes.io/arch=amd64
kubernetes.io/hostname=master
kubernetes.io/os=linux
node-role.kubernetes.io/master=
Annotations: flannel.alpha.coreos.com/backend-data: {"VtepMAC":"be:02:42:8d:f8:a1"}
flannel.alpha.coreos.com/backend-type: vxlan
flannel.alpha.coreos.com/kube-subnet-manager: true
flannel.alpha.coreos.com/public-ip: 172.16.20.11
kubeadm.alpha.kubernetes.io/cri-socket: /var/run/dockershim.sock
node.alpha.kubernetes.io/ttl: 0
volumes.kubernetes.io/controller-managed-attach-detach: true
CreationTimestamp: Mon, 01 Feb 2021 19:19:39 +0900
Taints: node-role.kubernetes.io/master:NoSchedule
Unschedulable: false
Lease:
HolderIdentity: master
AcquireTime: <unset>
RenewTime: Tue, 02 Feb 2021 16:14:14 +0900
Conditions:
Type Status LastHeartbeatTime LastTransitionTime Reason Message
---- ------ ----------------- ------------------ ------ -------
MemoryPressure False Tue, 02 Feb 2021 16:13:25 +0900 Tue, 02 Feb 2021 07:57:37 +0900 KubeletHasSufficientMemory kubelet has sufficient memory available
DiskPressure False Tue, 02 Feb 2021 16:13:25 +0900 Tue, 02 Feb 2021 07:57:37 +0900 KubeletHasNoDiskPressure kubelet has no disk pressure
PIDPressure False Tue, 02 Feb 2021 16:13:25 +0900 Tue, 02 Feb 2021 07:57:37 +0900 KubeletHasSufficientPID kubelet has sufficient PID available
Ready True Tue, 02 Feb 2021 16:13:25 +0900 Tue, 02 Feb 2021 13:16:55 +0900 KubeletReady kubelet is posting ready status. AppArmor enabled
Addresses:
InternalIP: 172.16.20.11
Hostname: master
Capacity:
cpu: 2
ephemeral-storage: 40593612Ki
hugepages-2Mi: 0
memory: 2040788Ki
pods: 110
Allocatable:
cpu: 2
ephemeral-storage: 37411072758
hugepages-2Mi: 0
memory: 1938388Ki
pods: 110
System Info:
Machine ID: fe17ffbebd914d0caddb55c160e155bd
System UUID: 2C843C62-0958-874D-A5CD-E808C1F91549
Boot ID: ef62e7c4-0e2d-4ea4-89bf-e5494fae1752
Kernel Version: 4.15.0-135-generic
OS Image: Ubuntu 18.04.5 LTS
Operating System: linux
Architecture: amd64
Container Runtime Version: docker://18.6.1
Kubelet Version: v1.14.10
Kube-Proxy Version: v1.14.10
PodCIDR: 10.244.0.0/24
Non-terminated Pods: (10 in total)
Namespace Name CPU Requests CPU Limits Memory Requests Memory Limits AGE
--------- ---- ------------ ---------- --------------- ------------- ---
kube-system coredns-6dcc67dcbc-fc5tf 100m (5%) 0 (0%) 70Mi (3%) 170Mi (8%) 20h
kube-system coredns-6dcc67dcbc-s7bxw 100m (5%) 0 (0%) 70Mi (3%) 170Mi (8%) 20h
kube-system etcd-master 0 (0%) 0 (0%) 0 (0%) 0 (0%) 20h
kube-system kube-apiserver-master 250m (12%) 0 (0%) 0 (0%) 0 (0%) 20h
kube-system kube-controller-manager-master 200m (10%) 0 (0%) 0 (0%) 0 (0%) 20h
kube-system kube-flannel-ds-amd64-s7kgq 100m (5%) 100m (5%) 50Mi (2%) 50Mi (2%) 20h
kube-system kube-proxy-75l8x 0 (0%) 0 (0%) 0 (0%) 0 (0%) 20h
kube-system kube-scheduler-master 100m (5%) 0 (0%) 0 (0%) 0 (0%) 20h
kubernetes-dashboard cluster-admin-74867ffb65-k6txp 0 (0%) 0 (0%) 0 (0%) 0 (0%) 20h
kubernetes-dashboard dashboard-metrics-scraper-69fcc6d9df-jrcn2 0 (0%) 0 (0%) 0 (0%) 0 (0%) 20h
Allocated resources:
(Total limits may be over 100 percent, i.e., overcommitted.)
Resource Requests Limits
-------- -------- ------
cpu 850m (42%) 100m (5%)
memory 190Mi (10%) 390Mi (20%)
ephemeral-storage 0 (0%) 0 (0%)
hugepages-2Mi 0 (0%) 0 (0%)
Events: <none>
※node1、node2は省略
创建
生成输出到清单或标准输出的对象。由于经常需要创建对象,因此这也是常用的功能。
使用例
kubectl create -f [ファイル名]
URLからオブジェクトを作成
D:\Repository\kubernetes\vagrant-kubernetes>kubectl create -f ここにURLとYAMLファイル指定
deployment.extensions/memory-eater created
作成を確認
D:\Repository\kubernetes\vagrant-kubernetes>kubectl get pod
NAME READY STATUS RESTARTS AGE
memory-eater-7889865958-r7p5z 1/1 Running 2 89s
申请
在这里,如果再次执行刚刚创建的YAML文件,由于同一对象已经存在,所以会导致错误。因此,如果对象不存在,则应用”apply”命令可以创建它,如果对象存在,则可以更新它。
使用例
kubectl apply -f [ファイル名]
状態確認
D:\Repository\kubernetes\vagrant-kubernetes>kubectl get pod
NAME READY STATUS RESTARTS AGE
memory-eater-7889865958-r7p5z 1/1 Running 2 89s
消します。
D:\Repository\kubernetes\vagrant-kubernetes>kubectl delete -f ここにURLとYAMLファイル指定
deployment.extensions "memory-eater" deleted
消えたか確認
D:\Repository\kubernetes\vagrant-kubernetes>kubectl get pod
No resources found in default namespace.
applyは?
D:\Repository\kubernetes\vagrant-kubernetes>kubectl apply -f ここにURLとYAMLファイル指定
deployment.extensions/memory-eater created
確認します。
D:\Repository\kubernetes\vagrant-kubernetes>kubectl get pod
NAME READY STATUS RESTARTS AGE
memory-eater-7889865958-lvc55 1/1 Running 1 46s
いた。
刪除
刚刚我也删除了。
使用例
kubectl DELETE -f [ファイル名]
分类的详细信息
指定资源类型的时候,发现可供选择的资源类型相当多。因此,我们只筛选出了那些看起来是必需的。如果想要了解更多详情,可以参考官方文档。
前往资源类型列表
在 kubectl 中也可以查看资源类型的一览。
kubectl api-resources
音頻
(簡稱:po)
容器的最小单元。在K8s集群的网络中具有IP地址。可以启动一个或多个容器。
Pod的复数形式可以是pod或pods,但在某些情况下,复数形式不适用。
服务(缩写:svc)
如何将在Pod集合中运行的应用程序作为网络服务公开。
由于节点的IP地址是不稳定的,并且Pod分散在不同的节点上,因此如果在通信时使用IP地址进行指定,可能会遇到无法连接的问题。因此,提供一个单一的连接目标,使连接源不需要意识到IP地址成为其职责。
入口(简称:ing)
Service能够提供与外部建立通信的URL、负载均衡流量、SSL/TLS终端功能以及基于名称的虚拟托管。这是一种担任负载均衡器角色的功能吧。
部署(简写:部署)
可以提供更新或回退等部署管理机制。
标志的详细信息
由于公式的重点是输出选项,所以花费了一些时间来查找,但似乎也可以指定名称空间。
-n 命名空间 (n
将其设为指定的命名空间。
–全命名空间
将所有内容都限定在命名空间内。
使用 YAML 格式的选项值为 “o”。
以YAML格式显示API对象。
-o=json的含义是将数据以JSON格式输出。
以JSON格式显示API对象。
关于术语
写下来,总结所需的术语,以便在需要时回想起来。
– 对象
K8s的对象是指K8s集群中的实体,如Pod和Service。
– 清单
用于生成K8s对象的声明文件。
作者的话
这次查看命令和实际输入命令花了相当多的时间,我觉得。但是通过亲身操作和确认动作,整理内容,我觉得已经掌握了。下次打算学习关于制作清单的方法。因为我一边听B’z的CD一边做这个,有时候会变得有点兴奋。如果不冷静的话可能会引起错误。
文献引用
学习Kubernetes的15个步骤,从Docker开始进入的Kubernetes文档。