今までkubernetesを試すのがとても面倒そうだったので敬遠していたがkubeadmができて便利になったということなので試してみる。


参考 というかこれをそのまま実行: http://kubernetes.io/docs/getting-started-guides/kubeadm/

これを使ってkubeクラスタを作ってみる

>> code bash
# curl 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 docker.io kubelet kubeadm kubectl kubernetes-cni
<<

セットアップ
結構かかる
>> code bash
# kubeadm init
<いろいろ出てくる>
kubeadm join --token XXXXXXX 10.0.2.15
<<

このIPはVMの内部ネットワークのやつか。

とりあえずmasterしかないけど動いた。

>> code bash
# kubectl get nodes
NAME      STATUS    AGE
ubuntu    Ready     6m

# kubectl get pods --all-namespaces
NAMESPACE     NAME                             READY     STATUS              RESTARTS   AGE
kube-system   etcd-ubuntu                      1/1       Running             0          6m
kube-system   kube-apiserver-ubuntu            1/1       Running             0          6m
kube-system   kube-controller-manager-ubuntu   1/1       Running             0          5m
kube-system   kube-discovery-982812725-k7j3s   1/1       Running             0          5m
kube-system   kube-dns-2247936740-bcc47        0/3       ContainerCreating   0          2m
kube-system   kube-proxy-amd64-02mp5           0/1       ContainerCreating   0          2m
kube-system   kube-scheduler-ubuntu            1/1       Running             0          6m
<<

まだCreatingのやつがあるな・・待ってみる kube-proxyは待っているとRunningになった。
kube-dnsは待っても進まないな。放置しよう


nodeは追加せず1台でお試しで使うため

>> code bash
# kubectl taint nodes --all dedicated-
<<

セキュリティ的にはまずいらしい
1台だけなのでネットワークはこのままでよいはず。

ここで動かしてみて、いい感じならnodeを追加していく感じになるのだと思う

お試しのアプリを入れてみるか

やっぱりおかしいのでネットワークも入れておく

>> code bash
#  kubectl apply -f https://git.io/weave-kube
<<

お、kube-dns動くようになった

ちょっとマシンを再起動してみる。
kuberntesはどうなるんだろう?

消し方も公式に書いてあった

>> code bash
systemctl stop kubelet;
docker rm -f $(docker ps -q); mount | grep "/var/lib/kubelet/*" | awk '{print $3}' | xargs umount 1>/dev/null 2>/dev/null;
rm -rf /var/lib/kubelet /etc/kubernetes /var/lib/etcd /etc/cni;
ip link set cbr0 down; ip link del cbr0;
ip link set cni0 down; ip link del cni0;
systemctl start kubelet
<<

もう一度kubeadmを実行。イメージのpullが終わってるから早い。
taintはもう一度実行する必要があるみたい

pod.yaml
>>
apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    app: nginx
spec:
  containers:
  - name: nginx
    image: nginx
    ports:
    - containerPort: 80
<<

svc.yaml
>>
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  type: LoadBalancer
  ports:
  - port: 8000 # the port that this service should serve on
    # the container on each pod to connect to, can be a name
    # (e.g. 'www') or a number (e.g. 80)
    targetPort: 80
    protocol: TCP
  # just like the selector in the deployment,
  # but this time it identifies the set of pods to load balance
  # traffic to.
  selector:
    app: nginx
<<

これを投入する

>> code bash
# kubectl apply -f svc.yaml
# kubectl apply -f pod.yaml
<<

>> code bash
# kubectl describe svc nginx-service
Name:                   nginx-service
Namespace:              default
Labels:                 <none>
Selector:               app=nginx
Type:                   LoadBalancer
IP:                     100.77.86.229
Port:                   <unset> 8000/TCP
NodePort:               <unset> 32191/TCP
Endpoints:              10.32.0.3:80
Session Affinity:       None
<<

これでこのマシンの32191ポートにアクセスするとnginxにアクセスできた!

kube-uiもつけてみよう

http://kubernetes.io/docs/user-guide/ui/

>> code bash
# kubectl create -f https://rawgit.com/kubernetes/dashboard/master/src/deploy/kubernetes-dashboard.yaml
<<

>> code bash
# kubectl describe svc --namespace kube-system kubernetes-dashboard
Name:                   kubernetes-dashboard
Namespace:              kube-system
Labels:                 app=kubernetes-dashboard
Selector:               app=kubernetes-dashboard
Type:                   NodePort
IP:                     100.69.211.127
Port:                   <unset> 80/TCP
NodePort:               <unset> 31308/TCP
Endpoints:              10.32.0.4:9090
Session Affinity:       None
<<

ということで
http://{このマシンのIP}:31308 でアクセスするとUIがみられる!
5643382
wiki
1475857183