!もう一回やる
!vultr再インストール
Ubuntu 17.10 x64 に入れ替える
!master, worker setup
https://kubernetes.io/docs/setup/independent/install-kubeadm/
>> code bash
# apt-get update
# apt-get upgrade
# reboot
<<
カーネルがアップデートしたので再起動しておく。
>> code bash
# apt-get install -y docker.io
<<
>> code bash
# apt-get update && apt-get install -y apt-transport-https
# curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
# cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb http://apt.kubernetes.io/ kubernetes-xenial main
EOF
# apt-get update
# apt-get install -y kubelet kubeadm kubectl
<<
kubernetesでは推奨されていないがswapを有効にする。
>>
# dd if=/dev/zero of=/swapfile count=2048 bs=1M
# chmod 600 /swapfile
# mkswap /swapfile
# swapon /swapfile
# echo "/swapfile none swap sw 0 0" >> /etc/fstab
<<
! master setup
https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/
>> code bash
# kubeadm init --ignore-preflight-errors=Swap
<<
--ignore-preflight-errors=Swap はSwapの確認を飛ばしてセットアップをする。
なんかエラーが出て進まない。
>>
[kubelet-check] The HTTP call equal to 'curl -sSL http://localhost:10255/healthz' failed with error: Get http://localhost:10255/healthz: dial tcp [::1]:10255: getsockopt: connection refused.
<<
kubeletがswaponだと起動しないのでオプションを追加する
>> code bash
# vim /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
<<
--fail-swap-on=false を引数に追加する
>> code bash
# systemctl daemon-reload
# systemctl restart kubelet
# kubeadm reset
<<
やり直し。
>> code bash
# kubeadm init --ignore-preflight-errors=Swap
<<
kubeadm join ..... を記録しておく。
! worker setup
kubeletがswaponだと起動しないのでオプションを追加する
>> code bash
# vim /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
<<
--fail-swap-on=false を引数に追加する
>> code bash
# systemctl daemon-reload
# systemctl restart kubelet
<<
記録しておいたkubeadm join .... の末尾に --ignore-preflight-errors=Swapを追加して入力
!手元のPC
masterからadmin.confを持ってくる
こんなファイルをバックグラウンドで実行する
>>
kubectl --kubeconfig=admin.conf proxy --port=8080 --disable-filter=true --accept-hosts='^*$' --reject-paths='^$'
<<
これでkubectlが実行できる
>>
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
kubernetes NotReady master 5m v1.9.3
worker01 NotReady <none> 2m v1.9.3
<<
まだNotReadyだ。
weaveをCNIプラグインとしてデプロイする。
>> code bash
$ kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=1.9"
<<
>> code bash
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
kubernetes Ready master 7m v1.9.3
worker01 Ready <none> 3m v1.9.3
<<
無事Readyとなった。
!!prometheusを入れる。
>>
$ kubectl apply -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
<<
少し待つと
http://masterサーバのIP:30090/targets
からprometheusが見える。
!!grafanaを入れる
>> code bash
$ kubectl apply -f monitoring/grafana/
deployment "monitoring-grafana" created
job "grafana-import-dashboards" created
service "monitoring-grafana" created
<<
prometheusの設定をする。
なぜかダッシュボードが追加できない。Podから外のDNSがひけないようだ。
!!kube-dns設定
期待としてはkubernetesの内部ドメインでなければホストのDNSを参照するのだと思っていたが、、
https://github.com/kubernetes/kubernetes/issues/45828
これっぽい
ubuntuはdns解決に内部で起動しているdnsサーバに委譲するようなことをやってたが、その仕組みとバッティングするようだ。
下記ConfigMapを入れることでセカンダリとしてGoogleのDNSを引くようにする。
>>
apiVersion: v1
kind: ConfigMap
metadata:
name: kube-dns
namespace: kube-system
data:
upstreamNameservers: |
["8.8.8.8", "8.8.4.4"]
<<
kube-dnsの設定は勝手に反映された。
!!prometheusのスクレイピングが実施されない
なぜだ・・?
RBACの設定がおかしかった。再設定して適用しなおし。
!!ingressをデプロイ
>> code bash
$ kubectl apply -f nghttpx-ingress
<<
5643382
wiki
1519802288