Kubenetes 1.4 安裝

0. Linux環境調整

2個VM, 192.168.1.157(docker2) 做爲master, 192.168.1.158 (docker3)做爲minongit

1. 修改hostnamedocker

/etc/hostnameapi

192.168.1.157命名爲docker2服務器

192.168.1.158 命名爲docker3網絡

2. 修改hostscurl

/etc/hoststcp

增長ui

192.168.1.157 docker2 docker2google

192.168.1.158 docker3 docker3url

1. 修改yum的repo

目錄下/etc/yum.repos.d建立文件kubernetes.repo,內容以下:

[kubernetes]
name=Kubernetes
baseurl=http://files.rm-rf.ca/rpms/kubelet/
enabled=1
gpgcheck=0

2. 安裝docker和kubenetes

yum install -y docker kubelet kubeadm kubectl kubernetes-cni

3. 修改docker的鏡像來源

使用daocloud的加速器:

curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://7f135bb1.m.daocloud.io

修改後/lib/systemd/system/docker.service裏面以下:

ExecStart=/usr/bin/docker-current daemon --registry-mirror=http://7f135bb1.m.daocloud.io \
          --exec-opt native.cgroupdriver=systemd \
          $OPTIONS \
          $DOCKER_STORAGE_OPTIONS \
          $DOCKER_NETWORK_OPTIONS \
          $ADD_REGISTRY \
          $BLOCK_REGISTRY \
          $INSECURE_REGISTRY

 

4. 啓動docker和kubelet

# systemctl enable docker && systemctl start docker
# systemctl enable kubelet && systemctl start kubelet

 

5. 獲取相關鏡像

docker pull chasontang/kube-proxy-amd64:v1.4.0
docker pull chasontang/kube-discovery-amd64:1.0
docker pull chasontang/kubedns-amd64:1.7
docker pull chasontang/kube-scheduler-amd64:v1.4.0
docker pull chasontang/kube-controller-manager-amd64:v1.4.0
docker pull chasontang/kube-apiserver-amd64:v1.4.0
docker pull chasontang/etcd-amd64:2.2.5
docker pull chasontang/kube-dnsmasq-amd64:1.3
docker pull chasontang/exechealthz-amd64:1.1
docker pull chasontang/pause-amd64:3.0

//dashboard這個是登錄daocloud.io後獲取的(docker login daocloud.io),須要註冊daocloud的賬號

docker pull mritd/kubernetes-dashboard-amd64:v1.4.2   

下載之後使用 docker tag 命令將其作別名改成 gcr.io/google_containers

docker tag chasontang/kube-proxy-amd64:v1.4.0  gcr.io/google_containers/kube-proxy-amd64:v1.4.0
docker tag chasontang/kube-discovery-amd64:1.0 gcr.io/google_containers/kube-discovery-amd64:1.0
docker tag chasontang/kubedns-amd64:1.7  gcr.io/google_containers/kubedns-amd64:1.7
docker tag chasontang/kube-scheduler-amd64:v1.4.0  gcr.io/google_containers/kube-scheduler-amd64:v1.4.0
docker tag chasontang/kube-controller-manager-amd64:v1.4.0  gcr.io/google_containers/kube-controller-manager-amd64:v1.4.0
docker tag chasontang/kube-apiserver-amd64:v1.4.0  gcr.io/google_containers/kube-apiserver-amd64:v1.4.0
docker tag chasontang/etcd-amd64:2.2.5  gcr.io/google_containers/etcd-amd64:2.2.5
docker tag chasontang/kube-dnsmasq-amd64:1.3  gcr.io/google_containers/kube-dnsmasq-amd64:1.3
docker tag chasontang/exechealthz-amd64:1.1  gcr.io/google_containers/exechealthz-amd64:1.1
docker tag chasontang/pause-amd64:3.0  gcr.io/google_containers/pause-amd64:3.0

docker tag mritd/kubernetes-dashboard-amd64:v1.4.2 gcr.io/google_containers//kubernetes-dashboard-amd64:v1.4.2

清除原來下載的鏡像

docker rmi chasontang/kube-proxy-amd64:v1.4.0
docker rmi chasontang/kube-discovery-amd64:1.0
docker rmi chasontang/kubedns-amd64:1.7
docker rmi chasontang/kube-scheduler-amd64:v1.4.0
docker rmi chasontang/kube-controller-manager-amd64:v1.4.0
docker rmi chasontang/kube-apiserver-amd64:v1.4.0
docker rmi chasontang/etcd-amd64:2.2.5
docker rmi chasontang/kube-dnsmasq-amd64:1.3
docker rmi chasontang/exechealthz-amd64:1.1
docker rmi chasontang/pause-amd64:3.0

 

 

 

6. 初始化master

用192.168.1.157做爲master

kubeadm init --api-advertise-addresses=192.168.1.157 --use-kubernetes-version=v1.4.0

7. 安裝網絡

直接使用官方推薦的weave-net方案,若是使用flannel方案須要特殊處理,具體查閱http://kubernetes.io/docs/admin/kubeadm/

kubectl create -f https://git.io/weave-kube

安裝完成後,dns容器應該自動起來了, 經過Kubectl get pods --all-namespaces或者docker ps查看dns的pod是否起來了。

 

8.安裝minon

前5步及第7步相同,完成後加入cluster

kubeadm join --token=018c3f.099d4f13a077a155 192.168.1.157

9.查看狀態

kubectl get pods --all-namespaces

[root@docker2 ~]# kubectl get pods --all-namespaces
NAMESPACE     NAME                                    READY     STATUS             RESTARTS   AGE
kube-system   dummy-2088944543-pju0l                  1/1       Running            0          2h
kube-system   etcd-docker2                            1/1       Running            0          2h
kube-system   kube-apiserver-docker2                  1/1       Running            1          2h
kube-system   kube-controller-manager-docker2         1/1       Running            1          2h
kube-system   kube-discovery-1150918428-u51m6         1/1       Running            0          2h
kube-system   kube-dns-654381707-dotvk                3/3       Running            4          2h
kube-system   kube-proxy-6qf47                        1/1       Running            0          2h
kube-system   kube-proxy-u8qr0                        1/1       Running            0          1h
kube-system   kube-scheduler-docker2                  1/1       Running            0          2h
kube-system   weave-net-5chdf                         2/2       Running            0          1h
kube-system   weave-net-wfb3l                         2/2       Running            0          1h

10. 建立kubernetes-dashboard.yaml 

修改鏡像策略爲

IfNotPresent
imagePullPolicy: Always

運行:

kubectl create -f kubernetes-dashboard.yaml

若是建立出現問題,運行下面命令清理:

kubectl delete -f kubernetes-dashboard.yaml

具體日誌和問題能夠查看:

kubectl describe dashbaord的pod name --namespace=kube-system

11.查看Dashboard狀態

[root@docker2 ~]# kubectl get pods --all-namespaces
NAMESPACE     NAME                                    READY     STATUS    RESTARTS   AGE
kube-system   dummy-2088944543-pju0l                  1/1       Running   3          1d
kube-system   etcd-docker2                            1/1       Running   3          1d
kube-system   kube-apiserver-docker2                  1/1       Running   16         1d
kube-system   kube-controller-manager-docker2         1/1       Running   7          1d
kube-system   kube-discovery-1150918428-u51m6         1/1       Running   3          1d
kube-system   kube-dns-654381707-dotvk                3/3       Running   13         1d
kube-system   kube-proxy-6qf47                        1/1       Running   3          1d
kube-system   kube-proxy-u8qr0                        1/1       Running   1          23h
kube-system   kube-scheduler-docker2                  1/1       Running   5          1d
kube-system   kubernetes-dashboard-2117559662-zptxa   1/1       Running   0          19h
kube-system   weave-net-5chdf                         2/2       Running   14         23h
kube-system   weave-net-wfb3l                         2/2       Running   2          23h

12.訪問dashboard

http://192.168.1.157:8080/ui

發現該url訪問不了,查看api server的地址:

[root@docker2 ~]# kubectl cluster-info
Kubernetes master is running at http://localhost:8080
kube-dns is running at http://localhost:8080/api/v1/proxy/namespaces/kube-system/services/kube-dns

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

直接在master服務器上運行:wget http://localhost:8080/ui 發現能夠獲取ui頁面

懷疑是路由的問題,因而增長iptables的路由:

iptables -t nat -A PREROUTING --dst 192.168.1.157 -p tcp --dport 8080 -j DNAT --to-destination 127.0.0.1:8080

再次訪問: http://192.168.1.157:8080/ui,成功。

13. 限制

這種方式存在的限制是etcd服務是由kubeadm在容器中啓動的,並且只是在master節點上啓動了一個,存在單點故障, apiserver也存在單點故障。

多個apiserver

--api-advertise-addresses (multiple values are allowed)

能夠經過指定使用外部etcd服務

--external-etcd-cafile etcd certificate authority file

--external-etcd-endpoints (multiple values are allowed)

--external-etcd-certfile etcd client certificate file

--external-etcd-keyfile etcd client key file

具體參考官方文檔:http://kubernetes.io/docs/admin/kubeadm/

相關文章
相關標籤/搜索