!kubernetesのインストール

!! upgrade
>> code bash
# kubeadm reset
# apt-get update && apt-get upgrade
# reboot
<<

!! master
>> code bash
# kubeadm init --ignore-preflight-errors=Swap
<<


>> code bash
# dd if=/dev/zero of=/swapfile count=2048 bs=1M
# chmod 600 /swapfile
# mkswap /swapfile
# swapon /swapfile
<<

/etc/fstabの最後にこれを追記
>>
/swapfile   none    swap    sw    0   0
<<

!! worker
(先にjoinしてはいけなかった!)

>> code bash
#   kubeadm join --token XXXXXXXXX 45.76.209.244:6443 --discovery-token-ca-cert-hash XXXXXXXXXX  --ignore-preflight-errors=Swap
<<


!!手元マシン
scpでmasterにあるadmin.confを持ってくる

バッチファイルを作る

>>
kubectl.exe --kubeconfig=admin.conf proxy  --port=8080 --disable-filter=true --accept-hosts='^*$' --reject-paths='^$'
<<

(後でオプションを調べる)

!!!masterセットアップ

>> code bash
$ kubectl get nodes
NAME         STATUS     ROLES     AGE       VERSION
kubernetes   NotReady   master    9m        v1.9.3
<<

descirbeしてみるとネットワークプラグインが有効でないとだめらしい。

>> code
  Ready            False   Wed, 28 Feb 2018 12:24:17 +0900   Wed, 28 Feb 2018 12:15:11 +0900   KubeletNotReady              runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized
<<

weaveをいれる。

>> code bash
$ kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=1.9"
serviceaccount "weave-net" created
clusterrole "weave-net" created
clusterrolebinding "weave-net" created
role "weave-net" created
rolebinding "weave-net" created
daemonset "weave-net" created
<<

>> code bash
$ kubectl get nodes
NAME         STATUS    ROLES     AGE       VERSION
kubernetes   Ready     master    13m       v1.9.3
<<

よし

!! worker

swapが有効になっていてkubeletが立ち上がらない

>> code bash
$ journalctl -u kubelet
Feb 28 03:35:19 vultr.guest kubelet[8037]: error: failed to run Kubelet: Running with swap on is not supported, please disable swap! or set --fail-swap-on flag to false. /proc/swaps contained: [Filename                                Type                Size        Used        Priority /swapfile                               file                2097148        268        -1]
<<

/etc/systemd/system/kubelet.service.d/10-kubeadm.conf
を変更してオプションを追加(masterは以前追加したのだった)

>>
--fail-swap-on=false
<<

## 手元マシン

>>
$ kubectl get nodes
NAME          STATUS    ROLES     AGE       VERSION
kubernetes    Ready     master    23m       v1.9.3
vultr.guest   Ready     <none>    2m        v1.9.3
<<

できた。

>>
$ kubectl get pods -n kube-system -o wide
NAME                                 READY     STATUS    RESTARTS   AGE       IP              NODE
etcd-kubernetes                      1/1       Running   0          24m       45.76.209.244   kubernetes
kube-apiserver-kubernetes            1/1       Running   0          23m       45.76.209.244   kubernetes
kube-controller-manager-kubernetes   1/1       Running   0          24m       45.76.209.244   kubernetes
kube-dns-6f4fd4bdf-b5ng6             3/3       Running   0          24m       10.32.0.39      kubernetes
kube-proxy-6k86j                     1/1       Running   0          24m       45.76.209.244   kubernetes
kube-proxy-k9cjq                     1/1       Running   0          3m        45.32.21.92     vultr.guest
kube-scheduler-kubernetes            1/1       Running   0          23m       45.76.209.244   kubernetes
weave-net-b6g6n                      2/2       Running   0          12m       45.76.209.244   kubernetes
weave-net-kfwxd                      2/2       Running   0          3m        45.32.21.92     vultr.guest
<<

順調のようだ


prometheusをいれる

>>
$ kubectl  create -f monitoring/prometheus/
configmap "alertmanager-config" created
deployment "alertmanager" created
service "alertmanager" created
ingress "alertmanager" created
configmap "prometheus-config" created
deployment "prometheus" created
daemonset "node-exporter" created
service "prometheus" created
<<

grafanaを入れる

>>
$ kubectl apply -f monitoring/grafana/
deployment "monitoring-grafana" created
job "grafana-import-dashboards" created
service "monitoring-grafana" created
<<

! kube-dnsがなにかおかしい

>> code bash
apiVersion: v1
kind: ConfigMap
metadata:
  name: kube-dns
  namespace: kube-system
data:
  upstreamNameservers: |
    ["8.8.8.8", "8.8.4.4"]
<<

これを入れれば動くようになったが、そういうものだったっけか?
期待としてはkubernetesの内部ドメインでなければホストのDNSを参照するのだと思っていたが、、

https://github.com/kubernetes/kubernetes/issues/45828

これっぽい
ubuntuはdns解決に内部で起動しているdnsサーバに委譲するようなことをやってたが、その仕組みとバッティングするようだ。

ConfigMapを入れることで一応解決しているのはワークアラウンドとしては正しそう


5643382
wiki
1519796695