1
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

【番外編】DigitalOceanのManaged Kubernetes101

あれからマニフェストファイルのリソース設定をいじってみたり、minikube startコマンドのオプションを色々試してみたのですがうまくいかなかったので、番外編としてDigitalOceanのManaged Kubernetesのセットアップをしてみたいと思います。
僕も使ったことがないのでドキドキです。

始めていきましょう。

(注:無料枠ではないので実行すると課金が発生します。)

Get Started

トップページ(https://www.digitalocean.com/products/kubernetes/)からGet Startedしていきます。

Create Cluster

Create Clusterページでロケーションやノードの設定などを行います。

Screenshot 2019-12-04 at 18.08.54.png

最後に画面最下のCreate Clusterの緑のボタンを押すとクラスタの作成が開始されます。

Configure Cluster

始めにマネジメントツールのインストールのステップがあります。kubectlの他にDigitalOceanのツールであるdoctlも使えるようですが今回はkubectlでいきます。

次にコンフィグファイルのダウンロードがあります。
おすすめされているのはdoctlコマンドを使った自動更新ですが、今回はお試しなのでただダウンロードしてくるだけ(証明書は手動更新)のほうを選びます。

Screenshot 2019-12-04 at 18.18.19.png

ダウンロードが完了したら以下のコマンドでクラスタにアクセスできるかどうか確認してみます。

$ kubectl --kubeconfig="<file name>" get nodes
NAME                  STATUS   ROLES    AGE     VERSION
pool-y2hks24e6-l3t2   Ready    <none>   2m58s   v1.16.2
pool-y2hks24e6-l3tl   Ready    <none>   2m39s   v1.16.2
pool-y2hks24e6-l3tt   Ready    <none>   2m59s   v1.16.2

デプロイ

ではデプロイしてみましょう。

$ kubectl --kubeconfig="$HOME/.kube/k8s-1-16-2-do-0-lon1-1575482940993-kubeconfig.yaml" apply -f kubernetes/namespace.yaml
namespace/qiita created

$ kubectl --kubeconfig="$HOME/.kube/k8s-1-16-2-do-0-lon1-1575482940993-kubeconfig.yaml" get namespaces
NAME              STATUS   AGE
default           Active   28m
kube-node-lease   Active   28m
kube-public       Active   28m
kube-system       Active   28m
qiita             Active   15s

いい感じです。他のリソースもこの調子でkubectl applyしていきます。
すべてのリソースをアプライした後がこんな感じ。

$ kubectl --kubeconfig="$HOME/.kube/k8s-1-16-2-do-0-lon1-1575482940993-kubeconfig.yaml" -n qiita get pods
NAME                                          READY   STATUS      RESTARTS   AGE
cockroach-init-fwjld                          0/1     Completed   0          14h
cockroachdb-0                                 1/1     Running     1          14h
cockroachdb-1                                 1/1     Running     80         14h
cockroachdb-2                                 1/1     Running     0          14h
kafka-0                                       2/2     Running     0          14h
kafka-1                                       2/2     Running     0          14h
kafka-2                                       1/2     Running     0          112s
kafka-etcd-0                                  1/1     Running     29         14h
kafka-etcd-1                                  1/1     Running     0          14h
kafka-etcd-2                                  1/1     Running     1          14h
qiita-advent-calendar-2019-7d7d7b44b6-rgf9g   1/1     Running     0          14h
qiita-advent-calendar-2019-r6pkv              0/1     Completed   0          14h
zetcd-cc957f748-7nlxg                         1/1     Running     0          14h
zetcd-cc957f748-lksmf                         1/1     Running     0          14h

うーん......?Readyにならないですね。。

$ kubectl --kubeconfig="$HOME/.kube/k8s-1-16-2-do-0-lon1-1575482940993-kubeconfig.yaml" -n qiita logs kafka-0 broker
...
[2019-12-05 09:16:00,372] WARN [RequestSendThread controllerId=0] Controller 0's connection to broker kafka-1.broker.qiita.svc.cluster.local:9092 (id: 1 rack: null) was unsuccessful (kafka.controller.RequestSendThread)
java.io.IOException: Connection to kafka-1.broker.qiita.svc.cluster.local:9092 (id: 1 rack: null) failed.
    at org.apache.kafka.clients.NetworkClientUtils.awaitReady(NetworkClientUtils.java:70)
    at kafka.controller.RequestSendThread.brokerReady(ControllerChannelManager.scala:279)
    at kafka.controller.RequestSendThread.doWork(ControllerChannelManager.scala:233)
    at kafka.utils.ShutdownableThread.run(ShutdownableThread.scala:82)
[2019-12-05 09:16:00,433] WARN [Controller id=0, targetBrokerId=2] Error connecting to node kafka-2.broker.qiita.svc.cluster.local:9092 (id: 2 rack: null) (org.apache.kafka.clients.NetworkClient)
java.io.IOException: Can't resolve address: kafka-2.broker.qiita.svc.cluster.local:9092
    at org.apache.kafka.common.network.Selector.doConnect(Selector.java:235)
    at org.apache.kafka.common.network.Selector.connect(Selector.java:214)
    at org.apache.kafka.clients.NetworkClient.initiateConnect(NetworkClient.java:864)
    at org.apache.kafka.clients.NetworkClient.ready(NetworkClient.java:265)
    at org.apache.kafka.clients.NetworkClientUtils.awaitReady(NetworkClientUtils.java:64)
    at kafka.controller.RequestSendThread.brokerReady(ControllerChannelManager.scala:279)
    at kafka.controller.RequestSendThread.doWork(ControllerChannelManager.scala:233)
    at kafka.utils.ShutdownableThread.run(ShutdownableThread.scala:82)
Caused by: java.nio.channels.UnresolvedAddressException
    at java.base/sun.nio.ch.Net.checkAddress(Net.java:112)
    at java.base/sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:622)
    at org.apache.kafka.common.network.Selector.doConnect(Selector.java:233)
    ... 7 more
...

これは......?

kubernetes/kafka.yaml
apiVersion: v1
kind: Service
metadata:
  annotations:
    prometheus.io/path: /metrics
    prometheus.io/port: "5555"
    prometheus.io/scrape: "true"
  name: broker
  namespace: qiita
spec:
  clusterIP: None
  publishNotReadyAddresses: true
  ports:
    - port: 9092
      protocol: TCP
      targetPort: 9092
  selector:
    app: kafka
$ kubectl --kubeconfig="$HOME/.kube/k8s-1-16-2-do-0-lon1-1575482940993-kubeconfig.yaml" -n qiita apply -f kubernetes/kafka.yaml
service/broker created
service/kafka unchanged
poddisruptionbudget.policy/kafka unchanged
statefulset.apps/kafka configured
configmap/kafka-configmap unchanged
configmap/jmx-exporter-configmap unchanged
$ kubectl --kubeconfig="$HOME/.kube/k8s-1-16-2-do-0-lon1-1575482940993-kubeconfig.yaml" -n qiita get pods
NAME                                          READY   STATUS      RESTARTS   AGE
cockroach-init-fwjld                          0/1     Completed   0          14h
cockroachdb-0                                 1/1     Running     1          14h
cockroachdb-1                                 1/1     Running     80         14h
cockroachdb-2                                 1/1     Running     0          14h
kafka-0                                       2/2     Running     0          6m7s
kafka-1                                       2/2     Running     0          5m30s
kafka-2                                       2/2     Running     0          5m16s
kafka-etcd-0                                  1/1     Running     29         14h
kafka-etcd-1                                  1/1     Running     0          14h
kafka-etcd-2                                  1/1     Running     1          14h
qiita-advent-calendar-2019-7d7d7b44b6-rgf9g   1/1     Running     0          14h
qiita-advent-calendar-2019-r6pkv              0/1     Completed   0          14h
zetcd-cc957f748-7nlxg                         1/1     Running     0          14h
zetcd-cc957f748-lksmf                         1/1     Running     0          14h

おお......。
というわけでServiceリソースの設定ミスでした。失礼しました。


というわけで最近バズワードのKaaS(Kubernetes as a Service)の一つDigitalOceanが提供するサービスを使ってみました。
「触ってみた」程度ですがセットアップは非常に簡単で、ちょっとした環境が欲しいなってときには非常に便利だなと思いました。

いい息抜きになったので明日はアプリからKafkaを使っていきたいと思います。では。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
1
Help us understand the problem. What are the problem?