kubernetes集羣安裝篇(二)

  這裏小編給大家介紹關於kubernetes的安裝和命令的基本使用,當然本人感覺只是一個過渡篇,畢竟真正的核心是它的維護和日常的生產使用。但是儘管如此,沒有集羣永遠搞不了事情,所以開始進入正題:
  1. Kubernetes的安裝配置
  2. 配置參數介紹
  3. Kubectl命令介紹

一、Kubernetes的安裝配置

Kubernetes的安裝配置

(1)環境要求:

1)軟硬件:

kubernetes集羣安裝篇(二)

2)服務:

#關閉防火牆:
[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

(2)使用kubeadm工具快速安裝kubernetes集羣:

  從kubernetes1.4開始引入了命令kubeadm,致力於簡化集羣的安裝和解決kubernetes集羣的高可用問題,但是其中存在不少bug,因此不能用於生產,但是我們可以用於學習測試。
① 安裝kubeadm和相關工具(注意,分佈式的集羣,需要在每一個節點上配置)

#配置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的鏡像加速器:(步驟略:)https://blog.51cto.com/14048416/2382924
#在master節點上pull相關鏡像

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的節點安裝

[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節點的)

#安裝相應服務
[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地址

⑤ 安裝網絡插件

[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/897e0f14be60

二、配置參數介紹

  當然如果想定製自己的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權威指南》第二版的pdfhttp://down.51cto.com/data/2461262

三、Kubectl命令介紹

(1) kubectl語法介紹

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地址而不用默認值。

(2) kubectl可操作的資源對象

kubernetes集羣安裝篇(二)

(3) kubectl子命令介紹

kubernetes集羣安裝篇(二)

(4) kubectl輸出格式

  kubectl命令可以用於多種格式對結果進行顯示,輸出的格式通過-o參數指定:

$kubectl [command] [TYPE] [NAME] -o=<output_format>

kubernetes集羣安裝篇(二)
常用輸出格式演示

$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進行排序

(5) kubectl操作示例

#創建資源對象
$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中的某一個容器的日誌
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章