摘要:使用安裝集群本文撰寫時,的分支不穩定,請使用版本來安裝,具體來說就是切換到最新的上。確保每個都安裝了在每個上開啟,修改,然后重啟。可參考這篇文章執行找一臺服務器,用來執行,的原理是通過連接到各個執行命令安裝集群。
GitHub: https://github.com/chanjarste...
使用Kubespray安裝k8s集群本文撰寫時,Kubespray的master分支不穩定,請使用release版本來安裝,具體來說就是切換到最新的tag上。
準備好target nodes準備好幾臺服務器,假設你準備了3臺。
給每個node安裝好操作系統,Ubuntu 16.04 Server LTS或者CentOS 7,并且有一個可以sudo的用戶或者直接有root用戶。
確保每個node都安裝了python 2.7
在每個node上開啟IPv4 Forwarding,修改/etc/sysctl.conf,然后重啟。可參考這篇文章
net.ipv4.ip_forward = 1執行Kubespray
找一臺服務器,用來執行Kubespray,Kubespray的原理是通過ssh連接到各個target nodes執行命令安裝k8s集群。
將服務器的.ssh/id_rsa.pub上傳到target nodes:
ssh-copy-id user@target-node-host
在Kubespray所在的機器上安裝bash-git-prompt
到Kubespray項目倉庫下載代碼:
git clone https://github.com/kubernetes-incubator/kubespray.git
使用中科大docker image mirror地址,運行以下命令:
find . -name "*.yml" | xargs -n1 -I{} sed -i "s/gcr.io/google-containers//gcr.mirrors.ustc.edu.cn/google-containers//" {}
find . -name "*.yml" | xargs -n1 -I{} sed -i "s/gcr.io/google_containers//gcr.mirrors.ustc.edu.cn/google-containers//" {}
find . -name "*.yml" | xargs -n1 -I{} sed -i "s/quay.io/quay.mirrors.ustc.edu.cn/" {}
如果中科大地址不行,請更換anjia0532的地址
find . -name "*.yml" | xargs -n1 -I{} sed -i "s/gcr.io/google-containers//anjia0532/google-containers./" {}
find . -name "*.yml" | xargs -n1 -I{} sed -i "s/gcr.io/google_containers//anjia0532/google-containers./" {}
修改roles/docker/defaults/main.yml文件,設置docker倉庫的鏡像:
docker_ubuntu_repo_base_url: "http://mirrors.aliyun.com/docker-ce/linux/ubuntu" docker_ubuntu_repo_gpgkey: "http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg" dockerproject_apt_repo_base_url: "https://mirrors.tuna.tsinghua.edu.cn/docker/apt/repo" dockerproject_apt_repo_gpgkey: "https://mirrors.tuna.tsinghua.edu.cn/docker/apt/gpg"
確保Kubespray所載機器上已經安裝了pip
在執行ansible-playbook命令之前修改inventory/mycluster/group_vars/k8s-cluster.yml文件:
efk_enabled: true
ingress_nginx_enabled: true
kubeconfig_localhost: true
kubectl_localhost: true
修改roles/network_plugin/calico/defaults/main.yml文件里的calico_mtu參數,根據官方文檔給每個服務器設置MTU。簡單來說就是kubespray默認為calico啟用了IP-in-IP模式,那么它的MTU應該是網卡MTU-20。
根據項目倉庫的指南執行命令
安裝完畢后,找到inventory/mycluster/artifacts/admin.conf文件,copy到~/.kube/config文件,然后你就可以在Kubespray機器上使用kubectl管理k8s了
Troubleshooting 提示Permission denied之類的錯誤可能是執行Ansible playbook的時候,ssh到target node執行某些命令缺少root權限。
在教程的最后一步ansible-playbook -i inventory/mycluster/hosts.ini cluster.yml,根據情況添加-b --become-user --become-method等參數。
寫本文時target node是ubuntu cloud image,所以只需添加-b參數就行了。其余情況請自行摸索。
同時也要記得添加-u 用戶名參數。
提示unable to resolve host這是因為每個target node有一個hostname,但是在/etc/hosts下沒有配置造成的,修改每個target node的/etc/hosts,比如:
127.0.0.1 localhost kube-1提示FAILED! ip in ansible_all_ipv4_addresses
這種錯誤出現在云環境中,target node有兩個IP,一個是內部IP(外部不能訪問),一個是外部IP(在OpenStack環境下就是一個是Project network IP,一個是Floating IP)。
這個時候需要修改inventory/mycluster/hosts.ini,把node的IP屬性改成內部IP,比如下面這種:
[all] node1 ansible_host=172.50.10.2 ip=192.168.1.4 node2 ansible_host=172.50.10.13 ip=192.168.1.8 node3 ansible_host=172.50.10.15 ip=192.168.1.9 ...用kubectl訪問
在master-node下可以用kubectl來訪問k8s,但這有點麻煩,實際上你能夠在任意機器上安裝kubectl然后遠程訪問。
方法很簡單將之前提到的.kube/config放到你自己電腦(假設你用的是MAC或者Linux系統)的目錄下,就可以了。
注意:在OpenStack環境下,每個node會被分配一個Floating IP,會導致你kubectl無法使用,這個時候需要你這樣做:
注釋.clusters.cluster.certificate-authority-data
添加.clusters.cluster.insecure-skip-tls-verify: true
修改.clusters.cluster.server的IP地址到一個能夠外部訪問的IP地址(這種情況出現在OpenStack環境下的Floating IP)
訪問Dashboard如果都安裝成功,那么你可以訪問k8s dashboard來看看安裝結果。打開瀏覽器,訪問https://{某個master的IP}:6443/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/,你會被要求登錄,你得先創建一個用戶并。
但是Kubespray并沒有替你創建用戶,所以請根據這篇guide來創建用戶,然后獲得Token,使用Token登錄。
下面講解主要步驟:
創建admin-user用戶。
新建一個文件名字叫做admin-user.yaml,內容如下:
apiVersion: v1 kind: ServiceAccount metadata: name: admin-user namespace: kube-system
在kube-master上運行kubectl create -f admin-user.yaml
綁定角色:
新建一個文件名字叫做admin-user-role.yaml,內容如下:
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: admin-user roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: admin-user
獲得token:
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk "{print $1}")
[calico-mtu]: https://docs.projectcalico.org/v2.2/usage/configuration/mtu [kubespray-repo]: https://github.com/kubernetes-incubator/kubespray [bash-git-prompt]: https://github.com/magicmonty/bash-git-prompt [enable-ipv4-forwarding]: http://www.ducea.com/2006/08/01/how-to-enable-ip-forwarding-in-linux/ [k8s-dashboard-create-user]: https://github.com/kubernetes/dashboard/wiki/Creating-sample-user [anjia0532-mirror]: https://github.com/anjia0532/gcr.io_mirror
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/33043.html
摘要:使用安裝集群本文撰寫時,的分支不穩定,請使用版本來安裝,具體來說就是切換到最新的上。確保每個都安裝了在每個上開啟,修改,然后重啟。可參考這篇文章執行找一臺服務器,用來執行,的原理是通過連接到各個執行命令安裝集群。 GitHub: https://github.com/chanjarste... 使用Kubespray安裝k8s集群 本文撰寫時,Kubespray的master分支不穩定...
摘要:現在,越來越多的開發人員不再使用傳統的應用程序服務器,而是開始使用作為分布式應用程序平臺開發人員使用作為后端數據庫。而我們已注意到,將諸如之類的輕量級安裝程序嵌入到分布式應用程序中,滿足了很多來自用戶的興趣與需求。 作為Rancher 2.0的重要組件,Rancher Kubernetes Engine(RKE)現已正式全面發布!這是Rancher Labs推出的新的開源項目,一個極致...
摘要:現在,越來越多的開發人員不再使用傳統的應用程序服務器,而是開始使用作為分布式應用程序平臺開發人員使用作為后端數據庫。而我們已注意到,將諸如之類的輕量級安裝程序嵌入到分布式應用程序中,滿足了很多來自用戶的興趣與需求。 作為Rancher 2.0的重要組件,Rancher Kubernetes Engine(RKE)現已正式全面發布!這是Rancher Labs推出的新的開源項目,一個極致...
摘要:一環境二安裝配置免密登錄,配置節點所需鏡像的文件由于某些鏡像國內無法訪問需要現將鏡像通過代理下載到本地然后上傳到本地鏡像倉庫或,同時修改配置文件,個別組件存放位置,需要新建服務器分發文件。文章轉載自公眾號北京爺們兒 K8s和TiDB都是目前開源社區中活躍的開源產品,TiDBOperator項目是一個在K8s上編排管理TiDB集群的項目。本文詳細記錄了部署K8s及install TiDB...
摘要:一環境二安裝配置免密登錄,配置節點所需鏡像的文件由于某些鏡像國內無法訪問需要現將鏡像通過代理下載到本地然后上傳到本地鏡像倉庫或,同時修改配置文件,個別組件存放位置,需要新建服務器分發文件。文章轉載自公眾號北京爺們兒 K8s和TiDB都是目前開源社區中活躍的開源產品,TiDBOperator項目是一個在K8s上編排管理TiDB集群的項目。本文詳細記錄了部署K8s及install TiDB...
閱讀 3702·2021-11-11 10:58
閱讀 2486·2021-09-22 15:43
閱讀 2875·2019-08-30 15:44
閱讀 2196·2019-08-30 13:08
閱讀 1827·2019-08-29 17:28
閱讀 893·2019-08-29 10:54
閱讀 683·2019-08-26 11:46
閱讀 3512·2019-08-26 11:43