一足遅れて Kubernetes を学び始める – 04. kubectl –

故事

    1. 一足遅れて Kubernetes を学び始める – 01. 環境選択編 –

 

    1. 一足遅れて Kubernetes を学び始める – 02. Docker For Mac –

 

    1. 一足遅れて Kubernetes を学び始める – 03. Raspberry Pi –

 

    1. 一足遅れて Kubernetes を学び始める – 04. kubectl –

 

    1. 一足遅れて Kubernetes を学び始める – 05. workloads その1 –

 

    1. 一足遅れて Kubernetes を学び始める – 06. workloads その2 –

 

    1. 一足遅れて Kubernetes を学び始める – 07. workloads その3 –

 

    1. 一足遅れて Kubernetes を学び始める – 08. discovery&LB その1 –

 

    1. 一足遅れて Kubernetes を学び始める – 09. discovery&LB その2 –

 

    1. 一足遅れて Kubernetes を学び始める – 10. config&storage その1 –

 

    1. 一足遅れて Kubernetes を学び始める – 11. config&storage その2 –

 

    1. 一足遅れて Kubernetes を学び始める – 12. リソース制限 –

 

    1. 一足遅れて Kubernetes を学び始める – 13. ヘルスチェックとコンテナライフサイクル –

 

    1. 一足遅れて Kubernetes を学び始める – 14. スケジューリング –

 

    1. 一足遅れて Kubernetes を学び始める – 15. セキュリティ –

 

    一足遅れて Kubernetes を学び始める – 16. コンポーネント –

上次。

一足遅れて Kubernetes を学び始める – 03. Raspberry Pi -では、RaspberryPiの環境にKubernetesを導入しました。無事、動作確認ができたので、さっそく学習していきたいです。

请在中文中提供以下内容的释义,仅需一个选项:

参考

我会阅读《Kubernetes完全指南》并按照其中的指引进行操作。源代码在这里。

我之前使用了《入门Kubernetes》作为参考,但后来发现《Kubernetes完全指南》更加全面,所以我选择了后者。

kubectl的中文意思是“Kubernetes控制器”。

Kubectl 是一个用于对 Kubernetes 集群运行命令的命令行界面。

※ https://kubernetes.io/docs/reference/kubectl/overview/ :

※https://kubernetes.io/docs/reference/kubectl/overview/ :

这是用于操作Kubernetes的命令行界面(CLI)。

我把常用的东西整理出来,并整理了入门时需要记住的最基本的东西。

申请

pi@raspi001:~ $ cat << EOF > sample-pod.yaml
apiVersion: v1
kind: Pod
metadata:
 name: sample-pod
spec:
 containers:
   - name: nginx-container
     image: nginx:1.12
EOF
pi@raspi001:~ $ kubectl apply -f sample-pod.yaml
pod/sample-pod created

Kubernetesでは、基本的にはマニフェストファイルを作成し、applyで適用するのが一般的のようです。それは、新規作成だけでなく、更新や削除も同様です。createやreplace,deleteといったCLIもありますが、applyでも同様の操作ができるため、使い分ける必要はあまりありません。applyで登録したマニュフェストファイルは履歴として保存されています。

※ Kubernetes:kubectl apply 的操作

※ Kubernetes:kubectl apply 动作

2. 设定,获取

pi@raspi001:~ $ kubectl set image pod sample-pod nginx-container=nginx:1.13
pod/sample-pod image updated
pi@raspi001:~ $ kubectl get pod sample-pod
NAME         READY   STATUS    RESTARTS   AGE
sample-pod   1/1     Running   1          13m

在使用kubectl时,您需要告诉它要使用哪种类型的资源(pod、service等),以及资源的名称。
此外,还有一个用于筛选的功能,即标签。

apiVersion: v1
kind: Pod
metadata:
 name: sample-pod
  labels:
   env: prod
   app: sample
spec:
 containers:
   - name: nginx-container
     image: nginx:1.12
pi@raspi001:~ $ kubectl get pod -l env=prod
No resources found.
pi@raspi001:~ $ kubectl apply -f sample-pod-label.yaml
pod/sample-pod configured
pi@raspi001:~ $ kubectl get pod -l env=prod
NAME         READY   STATUS    RESTARTS   AGE
sample-pod   1/1     Running   0          7m23s

如果需要更详细的信息,请使用描述。

pi@raspi001:~ $ kubectl describe pod sample-pod
Name:               sample-pod
...

※ editという直接編集する方法もありますが、一時的な対応のみに利用するべきとのことです。
せっかくの宣言的ファイルが意味ないですよね。

顺便说一句,可以把service缩写成svc。
(备忘)在kubectl命令中可以使用缩写资源名。

调试

pi@raspi001:~ $ kubectl exec -it sample-pod /bin/sh
# exit
pi@raspi001:~ $ kubectl logs sample-pod
pi@raspi001:~ $ kubectl cp sample-pod.yaml sample-pod:/var/sample-pod.yaml
pi@raspi001:~ $ kubectl port-forward sample-pod 8888:80
Forwarding from 127.0.0.1:8888 -> 80
Forwarding from [::1]:8888 -> 80

所有这些操作都是针对于pod的,因此没有指定资源类型的要求。无论是哪个都是在开发时有需要时才使用的感觉。

99. 首屈一指

这个东西无论如何都无法运行… ??
现在并不是特别需要,所以暂时搁置吧。
可能与calico或flannel有关,但由于我对这些理解较浅,所以问题尚未解决。

整理收拾

pi@raspi001:~ $ kubectl delete pod sample-pod
pod "sample-pod" deleted

如果处理多个pod,那么使用apply –prune比delete更好,但这次只涉及单个pod,所以直接进行了删除。

最后

入門当初は、どれほど覚えなくてはいけないのかと不安になっていたのですが、
蓋を開けてみると、そこまで多くはありませんでした。(まだ知らないものは多いと思いますが)
規則性として、 リソース種類とリソース名を指定する習慣にも徐々に慣れてきました。
面倒なときは、kubectl get allで全部出すという荒業も覚えました。(笑)

下一次将在这里进行。