!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