ubuntu 16.04下安裝kubernetes1.6(一)
1 kubernetes 簡介
kubernetes是提供了一套元件來管理容器的叢集管理系統,kubernetes可以放便地管理跨主機執行的容器,可以對容器進行維護和擴充套件。
2 kubernetes核心元件
master端元件
2.1 apiserver
kubernetes系統的入口,封裝了核心物件的增刪改查操作,以RESTFul介面方式提供給外部客戶和內部元件呼叫。它維護的REST物件將持久化到etcd(一個分散式強一致性的key/value儲存)
2.2 controller-manager
負責執行各種控制器,目前有兩類:
endpoint-controller:定期關聯service和pod(關聯資訊由endpoint物件維護),保證service到pod的對映總是最新的。
replication-controller:定期關聯replicationController和pod,保證replicationController定義的複製數量與實際執行pod的數量總是一致的。
2.3 scheduler
負責叢集的資源排程,為新建的pod分配機器
2.4 etcd
提供pod,services等資訊的持久化儲存
minion端元件
2.5 kubelet
負責管控docker容器,如啟動/停止、監控執行狀態等。它會定期從etcd獲取分配到本機的pod,並根據pod資訊啟動或停止相應的容器。同時,它也會接收apiserver的HTTP請求,彙報pod的執行狀態
2.6 kube-proxy
負責為pod提供代理。它會定期從etcd獲取所有的service,並根據service資訊建立代理。當某個客戶pod要訪問其他pod時,訪問請求會經過本機proxy做轉發。
3 基本操作物件
3.1 pod
Kubernetes最基本的部署排程單元,可以包含一個或多個container,邏輯上表示某種應用的一個例項。比如一個web站點應用由前端、後端及資料庫構建而成,這三個元件將執行在各自的容器中,那麼我們可以建立包含三個container的pod。
3.2 service
是pod的路由代理抽象,用於解決pod之間的服務發現問題。因為pod的執行狀態可動態變化(比如切換機器了、縮容過程中被終止了等),所以訪問端不能以寫死IP的方式去訪問該pod提供的服務。service的引入旨在保證pod的動態變化對訪問端透明,訪問端只需要知道service的地址,由service來提供代理
3.3 replicationController
是pod的複製抽象,用於解決pod的擴容縮容問題。通常,分散式應用為了效能或高可用性的考慮,需要複製多份資源,並且根據負載情況動態伸縮。透過replicationController,我們可以指定一個應用需要幾份複製,Kubernetes將為每份複製建立一個pod,並且保證實際執行pod數量總是與該複製數量相等(例如,當前某個pod當機時,自動建立新的pod來替換)。
service和replicationController只是建立在pod之上的抽象,最終是要作用於pod的,那麼它們如何跟pod聯絡起來呢?這就要引入label的概念:label就是為pod加上可用於搜尋或關聯的一組key/value標籤,而service和replicationController正是透過label來與pod關聯的。建立service和replicationController時可以指定同樣的label:"xxx=yyy",再透過label selector機制,就將它們與這三個pod關聯起來了。
4 kubernetes安裝
4.1 環境準備
4.2 用openvswitch GRE實現kubernetes的網路模型
利用openvswitch GRE通道實現跨主機間的容器通訊
分別在192.168.100.92和192.168.100.93上做下列操作
安裝openvswitch,bridge-utils,docker
apt-get install openvswitch-switch bridge-utils docker-engine
建立ovs bridge
ovs-vsctl add-br obr0
建立gre,並將新建的gre0新增到obr0
ovs-vsctl add-port obr0 gre0 -- set Interface gre0 type=gre options:remote_ip=192.168.100.93
在192.168.100.93上將remote_ip=192.168.100.93改為remote_ip=192.168.100.92
建立linux bridge
brctl addbr kbr0
新增obr0為kbr0的介面
brctl addif kbr0 obr0
設定docker0為down狀態
ip link set dev docker0 down
刪除docker0
ip link del dev docker0
為了是kbr0永久生效,在/etc/network/interfaces,新增如下語句
auto kbr0
iface kbr0 inet static
address 172.17.1.1
netmask 255.255.255.0
dns-nameservers 8.8.8.8
up route add -net 172.17.2.0/24 gw 192.168.100.93 dev enp0s3
在192.168.100.93的/etc/network/interfaces,新增如下語句
auto kbr0
iface kbr0 inet static
address 172.17.2.1
netmask 255.255.255.0
dns-nameservers 8.8.8.8
up route add -net 172.17.1.0/24 gw 192.168.100.92 dev enp0s3
開啟ip_forward
在/etc/sysctl.conf中開啟
net.ipv4.ip_forward=1
sysctl -p
分別在192.168.100.92上ping 172.17.2.1,在192.168.100.93上ping 172.17.1.1,如果能相互ping通則GRE通道已經打通了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/27181165/viewspace-2145485/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ubuntu 16.04下安裝kubernetes1.6(二)Ubuntu
- ubuntu16.04 下安裝mysqlUbuntuMySql
- Ubuntu 16.04 下安裝配置caffeUbuntu
- ubuntu16.04 下kvm安裝Ubuntu
- UBuntu16.04下安裝Docker(親測)UbuntuDocker
- Ubuntu16.04下安裝gtsam-3.2.1Ubuntu
- ubuntu16.04下安裝NS3.27UbuntuS3
- ubuntu16.04系統下安裝dockerUbuntuDocker
- Ubuntu 16.04 安裝 EmacsUbuntuMac
- Vagrant 安裝ubuntu 16.04Ubuntu
- Ubuntu 16.04安裝NginxUbuntuNginx
- Ubuntu 16.04 安裝 RedisUbuntuRedis
- ubuntu16.04下的MySQL離線安裝UbuntuMySql
- Ubuntu 16.04 安裝 Mysql 8.0UbuntuMySql
- ubuntu16.04安裝rosUbuntuROS
- Ubuntu 16.04 上安裝 OrientDB!Ubuntu
- Ubuntu 16.04 安裝 JenkinsUbuntuJenkins
- ubuntu 16.04下安裝kubernetes 1.6之dashboardUbuntu
- ubuntu 16.04安裝LNMP環境UbuntuLNMP
- 安裝kalibr Ubuntu16.04Ubuntu
- Ubuntu16.04安裝、使用typoraUbuntu
- Ubuntu 16.04 安裝VSCodeUbuntuVSCode
- ubuntu16.04 CUDA, CUDNN 安裝UbuntuDNN
- Ubuntu 16.04 上安裝 MySQL 5.7UbuntuMySql
- Ubuntu 16.04下安裝資料庫Oracle客戶端Ubuntu資料庫Oracle客戶端
- Ubuntu 16.04 安裝Google 瀏覽器UbuntuGo瀏覽器
- VM中的Ubuntu(16.04)安裝tenserflowUbuntu
- Ubuntu 16.04 安裝Nvidia驅動Ubuntu
- Ubuntu 16.04 安裝 Tensorflow Gpu版本UbuntuGPU
- Ubuntu 16.04安裝RabbitMQ(單機版)UbuntuMQ
- ubuntu 16.04 64bit安裝 JuliaUbuntu
- Ubuntu 16.04 安裝 Gnome 桌面環境Ubuntu
- Ubuntu 16.04下安裝Oracle資料庫的ODBC驅動UbuntuOracle資料庫
- Ubuntu 16.04下 Mysql5.7.17原始碼編譯與安裝UbuntuMySql原始碼編譯
- ubuntu 16.04 下安裝kubernetes 1.6 之kube-dnsUbuntuDNS
- Ubuntu16.04雙系統安裝及解除安裝Ubuntu
- Ubuntu 16.04 安裝 MySQL 8.0 全過程UbuntuMySql
- ubuntu16.04安裝Tomact8UbuntuMac