Kubernetes之一安裝

在容器時代,容器的編排和管理是一項很是複雜的任務,經常使用的三個流派:
1. Docker compose,Docker swam,Docker machine號稱Docker管理三劍客
2. Apahce Mesos, marathon
3. Google Kubernetes
其中,Google的Kubernetes結合過去十年以每一年刪除,增長10億量級的容器的實際經驗,一經推出,當即在Docker的市場受到普遍的歡迎。node

Kubernetes特性

1. 自動裝箱
2. 自我修復
3. 自動水平擴展
4. 自動服務發現和負載均衡
5. 自動發佈和回滾
6. 密鑰和配置管理(配置中心)
7. 存儲捲動態編排
8. 批處理運行

Kubernetes架構


Kubernetes集羣, 有中心節點和node節點組成。linux

Master節點

Master 提供API和scheduler(資源請求的多維度)至少三個節點
1. API
2. controler:控制器,在本地loop,週期性探測,檢查容器的健康性(按用戶定義的)
3. controler admin:控制器管理器,作冗餘

Node節點

Node節點運行docker, node之上有一個軟件 keeplight來監控運行在docker上的狀態。若是一個docker下線,須要重啓一個docker,監控docker的健康狀態。

Pod

在Kubernetes中,pod是容器的外殼,給docker作了一層封裝。pod是K8s調度的最小單元。一個pod能夠包括多個docker,共享網絡資源,存儲卷, 相似模擬傳統的虛擬機。通常來講,一個pod只放一個容器。若是多個,一個主docker,多個輔助docder,輔助主docker工做實現更多的功能。pod是Kubernetes的原子單元

Kubernetes安裝部署

傳統部署

全部的組件部署爲系統級守護進程

Kubeadm部署

Master部署在pod上(靜態,也能動態),node上的proxy也運行爲pod,以系統進程運行flannel

Kubeadm部署詳細步驟

1、前提:

一、各節點時間同步;
二、各節點主機名稱解析:dns OR hosts;
三、各節點iptables及firewalld服務被disable;

2、初始化主節點

1. 準備三臺虛擬機(Centos7.5,一臺做爲Master,另外兩臺做爲node1和node2安裝相關的程序包
2. disable selinux, iptables
3. 配置kubernets yum
    [kubernetes]
    name=Kubernetes
    baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
    gpgcheck=0
    gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
    enabled=1
    從https://mirrors.aliyun.com/kubernetes/yum/doc/下載rpm-package-key.gpg   
    同時配置好Docker的repo
4. 在三臺虛擬機上yum install docker-ce kubelet kubeadm kubectl
5. docker須要在一下載,可能須要配置代理
    vim /usr/lib/systemd/system/docker.service
    Environment="HTTPS_PROXY=http://www.ik8s.io:10080"
    安裝完成以後刪除此配置,有能夠會影響後續別的docker image下載速度
6. systemctl enable kubelet && systemctl enable docker && systemctl start docker && systemctl  daemon-reload
7. 更改/proc/sys/net/bridge/bridge-nf-call-iptables 和bridge-nf-call-ip6tables 爲1
8. vim /etc/sysconfig/kubelet
     KUBELET_EXTRA_ARGS="--fail-swap-on=false"
9. 初始化master節點:
    # kubeadm init --kubernetes-version=v1.11.1 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --ignore-preflight-errors=Swap
10. 初始化kubectl(此安裝是以root,在實際工做環境中,請初始化完成以後的提示用普通用戶建立)
      # mkdir -p $HOME/.kube
      # cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    測試:
    # kubectl get componentstatus
    # kubectl get nodes
11. 添加flannel網絡附件
    # kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
12. 驗正master節點已經就緒
    # kubectl get nodes

3、添加節點到集羣中

一、配置docker Unit File中的Environment變量,定義其HTTPS_PROXY,或者事先導入所須要的鏡像文件;
        # systemctl start docker.service
        # docker load node-component-imgs.gz 
二、編輯kubelet的配置文件/etc/sysconfig/kubelet,設置其忽略Swap啓用的狀態錯誤,內容以下:
        KUBELET_EXTRA_ARGS="--fail-swap-on=false"
三、設定docker和kubelet開機自啓動:
        # systemctl enable docker kubelet
四、將節點加入第二步中建立的master的集羣中,要使用初始化master節點提示的kubeadm join命令,並且要額外附加「--ignore-preflight-errors=Swap」選項;
五、待加入完成後,在設置了kubectl的節點上驗正節點的就緒狀態:
        # kubectl get nodes
相關文章
相關標籤/搜索