這裏小編給你們介紹關於kubernetes的安裝和命令的基本使用,固然本人感受只是一個過渡篇,畢竟真正的核心是它的維護和平常的生產使用。可是儘管如此,沒有集羣永遠搞不了事情,因此開始進入正題:
1. Kubernetes的安裝配置
2. 配置參數介紹
3. Kubectl命令介紹node
Kubernetes的安裝配置linux
#關閉防火牆: [root@node01 ~]#systemctl disable firewalld [root@node01 ~]#systemctl stop firewalld #主機關閉selinux [root@node01 ~]#setenforce 0 或者[root@node01 ~]#vim /etc/sysconfig/selinux (SELINUX=disabled) #重啓服務器 [root@node01 ~]#reboot now
從kubernetes1.4開始引入了命令kubeadm,致力於簡化集羣的安裝和解決kubernetes集羣的高可用問題,可是其中存在很多bug,所以不能用於生產,可是咱們能夠用於學習測試。
① 安裝kubeadm和相關工具(注意,分佈式的集羣,須要在每個節點上配置)git
#配置yum源,因爲默認的yum源可能國內的網絡沒法訪問,這裏咱們配置一個國內的yum源 /etc/yum.repos.d/mritd.repo: [mritd] name=Mritd Repository baseurl=https://yumrepo.b0.upaiyun.com/centos/7/x86_64 enable=1 gpgcheck=0 編寫好以後: [root@node01 ~]#yum clean all [root@node01 ~]#yum makecache #安裝相應的工具 [root@node01 ~]#yum install -y docker kubelet kubeadm kubectl Kubernetes-cni #啓動如下服務 [root@node01 ~]#systemctl enable docker &&systemctl start docker [root@node01 ~]#systemctl enable kubelet&&systemctl start kubelet
② 下載kubernetes的相關鏡像
這裏最好配置一個國內docker的鏡像加速器:(步驟略:)http://www.javashuo.com/article/p-rjlglpqu-ey.html
#在master節點上pull相關鏡像docker
docker pull k8s.gcr.io/kube-apiserver:v1.13.0 docker pull k8s.gcr.io/kube-controller-manager:v1.13.0 docker pull k8s.gcr.io/kube-scheduler:v1.13.0 docker pull k8s.gcr.io/kube-proxy:v1.13.0 docker pull k8s.gcr.io/pause:3.1 docker pull k8s.gcr.io/etcd:3.2.24 docker pull k8s.gcr.io/coredns:1.2.6 docker pull k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.0 docker tag k8s.gcr.io/kube-apiserver:v1.13.0 gladmo/kube-apiserver:v1.13.0 docker tag k8s.gcr.io/kube-controller-manager:v1.13.0 gladmo/kube-controller-manager:v1.13.0 docker tag k8s.gcr.io/kube-scheduler:v1.13.0 gladmo/kube-scheduler:v1.13.0 docker tag k8s.gcr.io/kube-proxy:v1.13.0 gladmo/kube-proxy:v1.13.0 docker tag k8s.gcr.io/pause:3.1 gladmo/pause:3.1 docker tag k8s.gcr.io/etcd:3.2.24 gladmo/etcd:3.2.24 docker tag k8s.gcr.io/coredns:1.2.6 gladmo/coredns:1.2.6 docker tag k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.0 gladmo/kubernetes-dashboard-amd64:v1.10.0
③ 運行kubeadm init安裝master
至此準備工做就緒,執行 kubeadm init 命令便可一鍵完成kubernetes master的節點安裝vim
[root@node01 ~]#kubeadm init --kubernetes-version=1.6.0 #安裝一段時間後,會有相應的提示,當安裝成功後,根據相應的提示執行一下命令: [root@node01 ~]#cp /etc/Kubernetes/admin.conf $HOME [root@node01 ~]#chown $(id -u ):$(id -g ) $HOME/admin.conf [root@node01 ~]#export KUBECONFIG=$HOME/admin.conf
④ 安裝node,加入集羣(如下命令是安裝在node節點的)centos
#安裝相應服務 [root@node01 ~]#yum intall -y docker kubelet kubeadm kubectl kubernetes-cni #啓動相應服務 [root@node01 ~]#systemctl enable docker && systemctl start docker [root@node01 ~]#systemctl enable kubelet && systemctl start kubelet #執行kubeadm join 命令,加入集羣: [root@node01 ~]#kubeadm join –token c19151.ba4d5s1c15s1dw4f 192.168.130.131:6443 注意:這的token來自於,使用kubeadm安裝master過程當中的最後一行字: 然後面的URL則是master的URL地址
⑤ 安裝網絡插件api
[root@node01 ~]#kubectl get nodes 會發現,提示master節點是notready,這是由於尚未安裝CNI網絡插件 [root@node01 ~]#kubectl apply -f https://git.io/weave-kube-1.6 #一鍵安裝
⑥ 驗證kubernetes集羣是否安裝成功:安全
[root@node01 ~]#kubectl get pods –all-namespaces
注意:若是etcd、apiservice、controller-manager、dns、proxy、scheduler、weave-net這些pod都正常啓動,表示集羣安裝成功。
網上的搭建內容不少,這裏小編只是簡單的總結一下,能夠參考:
https://www.jianshu.com/p/897e0f14be60bash
固然若是想定製本身的kubernetes集羣,不妨使用二進制的文件的方式安裝kubernetes集羣,固然這個是一個挑戰,這裏方便學習,小編只介紹了快速安裝kubernetes集羣的方法。固然通常企業級的kubernetes集羣都是運維大佬們本身的搞的,這裏小編介紹一下企業級的kubernetes集羣的安裝步驟:
根據本身企業的需求使用二進制或者其餘方式去安裝集羣(這裏必定是絕對穩定的安裝方式)
各個服務的啓動參數(在各自的配置文件中配置)
Kubernetes集羣的安全設置,這裏過程比較難懂(我的以爲,安全比bug還難解決)
集羣的網絡配置(網絡插件):flannel、openvSwitch、weave…
私有倉庫,能夠經過docker的registry,或者企業級的harbor
根據生產的需求,可能須要在集羣的運行的時候,對服務進行不一樣的修改,這裏就須要瞭解相應的核心服務的配置:
公共參數
Kube-apiserver啓動參數
Kube-controller-manager啓動參數
Kube-scheduler啓動參數
Kubelet啓動參數
Kube-proxy啓動參數
小編這裏就不一一給你們舉例具體有哪些詳細的參數,由於這個通常都是用的時候去找,就像Linux命令同樣,不可能所有都記住的,爲了彌補你們,小編找了一個《kubernetes權威指南》第二版的pdf,小編也是跟着這本書結合工做中的問題去學習kubernetes的,可是小編看了看介紹的kubernetes版本比較低,可能會有些知識不同。小編也會按期更新看這本書的心得以及相關知識點。服務器
《kubernetes權威指南》第二版的pdf:http://down.51cto.com/data/2461262
kubectl命令語法以下:
$kubectl [command] [TYPE] [NAME] [flags]
其中command、TYPE、NAME、flags的含義以下:
①command:子命令、用於操做kubernetes集羣資源對象的命令,例如:create、delete、describe、get、apply等。
②TYPE:資源對象類型,區分大小寫,能以單數形式、複數形式或者簡寫形式表示,例如:
pod、service、deployment等等。
③NAME:資源對象的名稱,區分大小寫,若是不指定名稱,系統將返回屬於TYPE的所有對象列表。
④ flags:kbectl子命令的可選參數,例如「-s」指定apiservice的URL地址而不用默認值。
kubectl命令能夠用於多種格式對結果進行顯示,輸出的格式經過-o參數指定:
$kubectl [command] [TYPE] [NAME] -o=<output_format>
經常使用輸出格式演示:
$kubectl get pod <pod-name> -o =wide #顯示pod的更多信息 $kubectl get pod <pod-name> -o =yaml #以yaml格式顯示pod信息 $kubectl get pod <pod-name> -o =custom-columns=NAME:.metadata.name,RSRC:.metadata.resourceVersion #自定義信息顯示 $kubectl get pod <pod-name> -o =custom-columns-file=temp.txt #基於文件 temp.txt文件內容: NAME RSRC metadata.name metadata.resourceVersion #排序操做 $kubectl get pods –sort-by=.metadata.name #將顯示結果根據name進行排序
#建立資源對象 $kubectl create -f my-service.yaml -f my-rc.yaml #根據具體文件建立資源對象 $kubectl create -f <directory> #建立目錄下全部的文件的資源對象 #查看資源對象 $kubectl get pods -n namespace_name $ kubectl get rc,service -n namespace_name #描述資源對象 $kubectl describe nodes <node-name> -n namespace_name $kubectl describe pod pod_name -n namespace_name $kubectl describe pods <rc-name> #顯示有RC管理的pod #刪除資源對象 $kubectl delete -f pod.yaml #基於pod.yaml定義的名稱刪除pod $kubectl delete pods ,service,-l name=<label-name> #刪除全部包含label的pod和service $kubectl delete pods --all 刪除全部的pod #執行容器命令 $kubectl exec <pod-name> date $kubectl exec <pod-name> -c <container-name> date $kubectl exec -it <pod-name> -c <container-name> /bin/bash #查看容器的日誌 $kubectl logs <pod-name> $kubectl logs -f <pod-name> -c <container-name> #監控某一個pod中的某一個容器的日誌