使用Rancher建立kubernetes集羣
前言
docker用多了會上癮!最近把之前做的所有服務全部都容器化了,但是分散管理太麻煩,總不能一個一個的命令敲吧。所以今天我就把手頭上僅有的兩臺aws伺服器用rancher部署一下kubernetes集羣。
正文
其實相當簡單,命令都沒幾個。如果使用kops的話,填一下key和secret,然後根據需要更改一下配置,之後create就可以直接部署好k8s集羣。因為我本地有三臺機器,所以還是簡單介紹一下幾個命令。首先是創建ec2,選擇鏡像的時候最好選擇ubuntu。如果使用的是aws的centos的話,需要將cgroup的掛載點改一下。以下是原回答:
https://github.com/rancher/rancher/issues/10015
On Amazon Linux I successfully tested Amazon Linux 2017.09 and Docker
17.06 (default yum install) by changing the mount from /sys:/sys:ro to /
cgroup:/sys/fs/cgroup:ro. Let me know what versions are being used if
this doesnt work.
建好了ec2以後,需要將伺服器和安全組打好標籤,key為kubernetes.io/cluster/XXXX
其中的XXXX
為任意字元但是在每臺機器上都必須一致。value為owned
。打好tag以後,挑一臺伺服器做為rancher的主機,使用如下命令:
sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher
建好rancher之後,設置一下密碼,有域名的可以綁定一下域名在命令後面加上--acme-domain www.yourdomain.com
。然後點擊Global
-Add Cluster
創建k8s集羣。因為我們已經申請好了主機,所以選擇CUSTOM (From my own existing nodes)
然後選擇下一步然後顯示的命令再另外選擇的主機上運行一下就可以了。
sudo docker run -d --privileged --restart=unless-stopped --net=host -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run rancher/rancher-agent:v2.1.5 --server https://www.XXXXXXX.com --token XXXXXXXXXXXX --etcd --controlplane --worker
我的三臺機器,一臺運行rancher,一臺作為上面k8s的master機器,還一臺我決定再跑個k8s的worker。再最後一臺機器上運行剛才的命令,只是role選擇--worker
就可以了。至此k8s的集羣就創建完了,如果不想用rancher,可以把rancher停掉,不影響k8s的使用。
創建完集羣之後,我們可以在本地安裝kubectl,將Cluster: your-cluster-name
標籤下將Kubeconfig File
複製到本地的~/.kube/config
下,就可以遠程的管理集羣及相關應用了。使用kubectl來創建pods,只需要先編寫好相關的yaml文件,然後運行kubectl create -f xxxx.yaml
就可以了!!
如果要向外部暴露伺服器的也很簡單,先部署一個Deployment
在ports
下暴露containerPort
比如5000。然後在部署一個Service
-selector
-app
選擇我們剛才寫的Deployment
,再將targetPort
選擇我們剛才暴露的埠5000,再設置一下service port比如還是5000,type選擇ClusterIP
。最後再部署一個ingress
將backend
-serviceName
和servicePort
分別設置為剛才的service名字及埠。域名可以綁定任何一臺k8s機器的ip。我這裡是直接綁定*.mydomain.com。所以這裡的host設置為api.mydomain.com.這樣完成了對外服務的部署。
部署其他的工具例如rabbitmq·mysql·等等也很簡單,我使用helm來部署,首先將Global
-Catalogs
-Helm Stable
打開。然後選擇自己的project-Catalog Apps
-Launch
-選擇自己需要的工具。進去之後拉倒最下面PREVIEW
將values.yaml
下載到本地,更改必要的參數。然後運行helm install --name my-release -f values.yaml stable/XXXXX
就可以了!!簡單方便有木有!!!
推薦閱讀: