开始学习Kubernetes时稍有落后 – 02. Mac上的Docker-

故事

    1. 一开始就学习Kubernetes – 01.环境选择 –

 

    1. 一开始就学习Kubernetes – 02.Docker For Mac –

 

    1. 一开始就学习Kubernetes – 03.Raspberry Pi –

 

    1. 一开始就学习Kubernetes – 04.kubectl –

 

    1. 一开始就学习Kubernetes – 05.工作负载1 –

 

    1. 一开始就学习Kubernetes – 06.工作负载2 –

 

    1. 一开始就学习Kubernetes – 07.工作负载3 –

 

    1. 一开始就学习Kubernetes – 08.发现和负载平衡1 –

 

    1. 一开始就学习Kubernetes – 09.发现和负载平衡2 –

 

    1. 一开始就学习Kubernetes – 10.配置和存储1 –

 

    1. 一开始就学习Kubernetes – 11.配置和存储2 –

 

    1. 一开始就学习Kubernetes – 12.资源限制 –

 

    1. 一开始就学习Kubernetes – 13.健康检查和容器生命周期 –

 

    1. 一开始就学习Kubernetes – 14.调度 –

 

    1. 一开始就学习Kubernetes – 15.安全性 –

 

    一开始就学习Kubernetes – 16.组件 –

上次

在学习Kubernetes方面稍有滞后——01.环境选择篇——我考虑了一下学习Kubernetes的环境。我们决定不直接使用GKE,而是选择方便快捷的DockerForMac来尝试。

尝试使用Docker For Mac

环境

iMac (21.5-inch, 2017)
Docker Community Edition:
  Version: 18.06.1-ce-mac73 (26764)
Docker Engine:
  Version: 18.06.1-ce
Kubernetes:
  Version: v1.10.3

实践

我会立即尝试使用它。(参考入门Kubernetes)

~ $ kubectl get componentstatuses
NAME                 STATUS    MESSAGE              ERROR
controller-manager   Healthy   ok
scheduler            Healthy   ok
etcd-0               Healthy   {"health": "true"}

在Kubernetes中,存在两种类型的节点,MasterNode和WorkerNode。您可以从上述内容中了解到MasterNode中的组件列表。有关详细信息,请参考此处。
简而言之,执行kubectl apply -f nginx.yaml命令即可。

    1. 将nginx.yaml文件的清单注册到etcd中

 

    1. controller-manager通过检查etcd中的清单和现有的pod,发现pod数量较少

 

    scheduler对pod进行适当的调整,使其数量达到合适的数目

我理解了这个意思。而且据说所有的交流都是通过api-server来进行的。

Kubernetes_learning.png
~ $ kubectl get nodes
NAME                 STATUS    ROLES     AGE       VERSION
docker-for-desktop   Ready     master    120d      v1.10.3
~ $ kubectl get pods
No resources found.

使い始めたばかりだと、podが1つもない状態ですね。
また、DockerForMacでは、もちろん動かしているマシンは一台(VMとか使えば増やせますが)なので、
MasterNodeとWorkerNodeが同一になっているはずです。試してみます。

apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  containers:
    - name: nginx
      image: nginx
      ports:
       - containerPort: 80
         name: http
         protocol: TCP
~ $ kubectl apply -f nginx.yaml
pod "nginx" created
~ $ kubectl get pod -o wide
NAME      READY     STATUS    RESTARTS   AGE       IP           NODE
nginx     1/1       Running   0          3m        10.1.0.157   docker-for-desktop

WorkerNodeにPodが作られていますね。んー、これだとある程度の学習には繋がりそう(Podの動き)ですが、
後の学ぶReplicaSetやDaemonsetなどNode横断した機能を経験したい場合には不向きのようですね。
まあ、簡単に使えるので良いっちゃ良いのですが…

下一步,我们来尝试一些命令(cp、exec、port-forward)。

~ $ touch memo.txt
~ $ ls
nginx.yaml memo.txt
~ $ kubectl cp memo.txt nginx:/memo.txt
~ $ rm memo.txt
~ $ ls
nginx.yaml
~ $ kubectl cp nginx:/memo.txt ./memo.txt
~ $ ls
nginx.yaml memo.txt
~ $ kubectl exec -it nginx bash
root@nginx:/# exit
exit
~ $

ローカルとPodとの双方向コピー、仮想的なターミナルを体験していました。
「ふ〜ん、で?」ってなっちゃいました。(笑)

お片付け

~ $ kubectl delete -f nginx.yaml
pod "nginx" deleted

不够好

我还是想增加Node!看了在Raspberry Pi上构建家庭Kubernetes【逻辑篇】,真的只有试试看!虽然现在已经很晚了,但我想尝试一下。下次在这里。

广告
将在 10 秒后关闭
bannerAds