1. 程式人生 > >kubernetes1.5.2部署叢集

kubernetes1.5.2部署叢集

1、環境介紹及準備:

1.1 物理機作業系統

  物理機作業系統採用Centos7.3 64位,細節如下。

[[email protected] ~]# uname -a
Linux localhost.localdomain 3.10.0-514.6.1.el7.x86_64 #1 SMP Wed Jan 18 13:06:36 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
[[email protected] ~]# cat /etc/redhat-release 
CentOS Linux release 7.3.1611 (Core)

1.2 主機資訊

  本文準備了三臺機器用於部署k8s的執行環境,細節如下:

節點及功能

主機名

IP

Master、etcd、registry

K8s-master

10.0.251.148

Node1

K8s-node-1

10.0.251.153

Node2

K8s-node-2

10.0.251.155

  設定三臺機器的主機名:

  Master上執行:

[[email protected] ~]#  hostnamectl --static set-hostname  k8s-master

  Node1上執行:

[[email protected]
~]# hostnamectl --static set-hostname k8s-node-1

  Node2上執行:

[[email protected] ~]# hostnamectl --static set-hostname  k8s-node-2

  在三臺機器上設定hosts,均執行如下命令:

echo '10.0.251.148    k8s-master
10.0.251.148   etcd
10.0.251.148   registry
10.0.251.153   k8s-node-1
10.0.251.155    k8s-node-2' >> /etc/hosts

1.3 關閉三臺機器上的防火牆

systemctl disable firewalld.service
systemctl stop firewalld.service

2、部署etcd

  k8s執行依賴etcd,需要先部署etcd,本文采用yum方式安裝:

[[email protected] ~]# yum install etcd -y

yum安裝的etcd預設配置檔案在/etc/etcd/etcd.conf。編輯配置檔案,更改以下帶顏色部分資訊:

複製程式碼
[[email protected] ~]# vi /etc/etcd/etcd.conf

# [member]
ETCD_NAME=master
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
#ETCD_WAL_DIR=""
#ETCD_SNAPSHOT_COUNT="10000"
#ETCD_HEARTBEAT_INTERVAL="100"
#ETCD_ELECTION_TIMEOUT="1000"
#ETCD_LISTEN_PEER_URLS="http://0.0.0.0:2380"
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379,http://0.0.0.0:4001"
#ETCD_MAX_SNAPSHOTS="5"
#ETCD_MAX_WALS="5"
#ETCD_CORS=""
#
#[cluster]
#ETCD_INITIAL_ADVERTISE_PEER_URLS="http://localhost:2380"
# if you use different ETCD_NAME (e.g. test), set ETCD_INITIAL_CLUSTER value for this name, i.e. "test=http://..."
#ETCD_INITIAL_CLUSTER="default=http://localhost:2380"
#ETCD_INITIAL_CLUSTER_STATE="new"
#ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_ADVERTISE_CLIENT_URLS="http://etcd:2379,http://etcd:4001"
#ETCD_DISCOVERY=""
#ETCD_DISCOVERY_SRV=""
#ETCD_DISCOVERY_FALLBACK="proxy"
#ETCD_DISCOVERY_PROXY=""
複製程式碼

啟動並驗證狀態

複製程式碼
[[email protected] ~]# systemctl start etcd
[[email protected] ~]#  etcdctl set testdir/testkey0 0
0
[[email protected] ~]#  etcdctl get testdir/testkey0 
0
[[email protected] ~]# etcdctl -C http://etcd:4001 cluster-health
member 8e9e05c52164694d is healthy: got healthy result from http://0.0.0.0:2379
cluster is healthy
[[email protected] ~]# etcdctl -C http://etcd:2379 cluster-health
member 8e9e05c52164694d is healthy: got healthy result from http://0.0.0.0:2379
cluster is healthy
複製程式碼

擴充套件:Etcd叢集部署參見——http://www.cnblogs.com/zhenyuyaodidiao/p/6237019.html

3、部署master

3.1 安裝Docker

[[email protected] ~]# yum install docker

配置Docker配置檔案,使其允許從registry中拉取映象。

複製程式碼
[[email protected] ~]# vim /etc/sysconfig/docker

# /etc/sysconfig/docker

# Modify these options if you want to change the way the docker daemon runs
OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false'
if [ -z "${DOCKER_CERT_PATH}" ]; then
    DOCKER_CERT_PATH=/etc/docker
fi
OPTIONS='--insecure-registry registry:5000'
複製程式碼

設定開機自啟動並開啟服務

[[email protected] ~]# chkconfig docker on
[[email protected]-master ~]# service docker start

3.2 安裝kubernets

[[email protected] ~]# yum install kubernetes

3.3 配置並啟動kubernetes

在kubernetes master上需要執行以下元件:

    Kubernets API Server

    Kubernets Controller Manager

    Kubernets Scheduler

相應的要更改以下幾個配置中帶顏色部分資訊:

3.3.1 /etc/kubernetes/apiserver

複製程式碼
[[email protected] ~]# vim /etc/kubernetes/apiserver

###
# kubernetes system config
#
# The following values are used to configure the kube-apiserver
#

# The address on the local server to listen to.
KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"

# The port on the local server to listen on.
KUBE_API_PORT="--port=8080"

# Port minions listen on
# KUBELET_PORT="--kubelet-port=10250"

# Comma separated list of nodes in the etcd cluster
KUBE_ETCD_SERVERS="--etcd-servers=http://etcd:2379"

# Address range to use for services
KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16"

# default admission control policies
#KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota"
KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota"

# Add your own!
KUBE_API_ARGS=""
複製程式碼

3.3.2  /etc/kubernetes/config

複製程式碼
[[email protected] ~]# vim /etc/kubernetes/config

###
# kubernetes system config
#
# The following values are used to configure various aspects of all
# kubernetes services, including
#
#   kube-apiserver.service
#   kube-controller-manager.service
#   kube-scheduler.service
#   kubelet.service
#   kube-proxy.service
# logging to stderr means we get it in the systemd journal
KUBE_LOGTOSTDERR="--logtostderr=true"

# journal message level, 0 is debug
KUBE_LOG_LEVEL="--v=0"

# Should this cluster be allowed to run privileged docker containers
KUBE_ALLOW_PRIV="--allow-privileged=false"

# How the controller-manager, scheduler, and proxy find the apiserver
KUBE_MASTER="--master=http://k8s-master:8080"
複製程式碼

啟動服務並設定開機自啟動

[[email protected] ~]# systemctl enable kube-apiserver.service
[[email protected]-master ~]# systemctl start kube-apiserver.service
[[email protected]-master ~]# systemctl enable kube-controller-manager.service
[[email protected]-master ~]# systemctl start kube-controller-manager.service
[[email protected]-master ~]# systemctl enable kube-scheduler.service
[[email protected]-master ~]# systemctl start kube-scheduler.service

4、部署node

4.1 安裝docker

  參見3.1

4.2 安裝kubernets

  參見3.2

4.3 配置並啟動kubernetes

  在kubernetes node上需要執行以下元件:

    Kubelet

    Kubernets Proxy

相應的要更改以下幾個配置文中帶顏色部分資訊:

4.3.1 /etc/kubernetes/config

複製程式碼
[[email protected]1 ~]# vim /etc/kubernetes/config

###
# kubernetes system config
#
# The following values are used to configure various aspects of all
# kubernetes services, including
#
#   kube-apiserver.service
#   kube-controller-manager.service
#   kube-scheduler.service
#   kubelet.service
#   kube-proxy.service
# logging to stderr means we get it in the systemd journal
KUBE_LOGTOSTDERR="--logtostderr=true"

# journal message level, 0 is debug
KUBE_LOG_LEVEL="--v=0"

# Should this cluster be allowed to run privileged docker containers
KUBE_ALLOW_PRIV="--allow-privileged=false"

# How the controller-manager, scheduler, and proxy find the apiserver
KUBE_MASTER="--master=http://k8s-master:8080"
複製程式碼

4.3.2 /etc/kubernetes/kubelet

複製程式碼
[[email protected]1 ~]# vim /etc/kubernetes/kubelet

###
# kubernetes kubelet (minion) config

# The address for the info server to serve on (set to 0.0.0.0 or "" for all interfaces)
KUBELET_ADDRESS="--address=0.0.0.0"

# The port for the info server to serve on
# KUBELET_PORT="--port=10250"

# You may leave this blank to use the actual hostname
KUBELET_HOSTNAME="--hostname-override=k8s-node-1"

# location of the api-server
KUBELET_API_SERVER="--api-servers=http://k8s-master:8080"

# pod infrastructure container
KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure:latest"

# Add your own!
KUBELET_ARGS=""
複製程式碼

啟動服務並設定開機自啟動

[[email protected] ~]# systemctl enable kubelet.service
[[email protected]-master ~]# systemctl start kubelet.service
[[email protected]-master ~]# systemctl enable kube-proxy.service
[[email protected]-master ~]# systemctl start kube-proxy.service

4.4 檢視狀態

  在master上檢視叢集中節點及節點狀態

複製程式碼
[[email protected] ~]#  kubectl -s http://k8s-master:8080 get node
NAME         STATUS    AGE
k8s-node-1   Ready     3m
k8s-node-2   Ready     16s
[[email protected]-master ~]# kubectl get nodes
NAME         STATUS    AGE
k8s-node-1   Ready     3m
k8s-node-2   Ready     43s
複製程式碼

至此,已經搭建了一個kubernetes叢集,但目前該叢集還不能很好的工作,請繼續後續的步驟。

5、建立覆蓋網路——Flannel

5.1 安裝Flannel

  在master、node上均執行如下命令,進行安裝

[[email protected] ~]# yum install flannel

版本為0.0.5

5.2 配置Flannel

  master、node上均編輯/etc/sysconfig/flanneld,修改紅色部分

複製程式碼
[[email protected] ~]# vi /etc/sysconfig/flanneld

# Flanneld configuration options

# etcd url location.  Point this to the server where etcd runs
FLANNEL_ETCD_ENDPOINTS="http://etcd:2379"

# etcd config key.  This is the configuration key that flannel queries
# For address range assignment
FLANNEL_ETCD_PREFIX="/atomic.io/network"

# Any additional options that you want to pass
#FLANNEL_OPTIONS=""
複製程式碼

5.3 配置etcd中關於flannel的key

  Flannel使用Etcd進行配置,來保證多個Flannel例項之間的配置一致性,所以需要在etcd上進行如下配置:(‘/atomic.io/network/config’這個key與上文/etc/sysconfig/flannel中的配置項FLANNEL_ETCD_PREFIX是相對應的,錯誤的話啟動就會出錯)

[[email protected] ~]# etcdctl mk /atomic.io/network/config '{ "Network": "10.0.0.0/16" }'
{ "Network": "10.0.0.0/16" }

5.4 啟動

  啟動Flannel之後,需要依次重啟docker、kubernete。

  在master執行:

systemctl enable flanneld.service 
systemctl start flanneld.service 
service docker restart
systemctl restart kube-apiserver.service
systemctl restart kube-controller-manager.service
systemctl restart kube-scheduler.service

  在node上執行:

systemctl enable flanneld.service 
systemctl start flanneld.service 
service docker restart
systemctl restart kubelet.service
systemctl restart kube-proxy.service

相關推薦

kubernetes1.5.2部署叢集

1、環境介紹及準備: 1.1 物理機作業系統   物理機作業系統採用Centos7.3 64位,細節如下。 [[email protected] ~]# uname -a Linux localhost.localdomain 3.10.0-514.6.1

kubernetes1.5.2--部署dashboard服務

本文基於kubernetes 1.5.2版本編寫 使用http方式訪問api server的部署 cat dashboard-controller.yaml  apiVersion: extensions/v1beta1 kind: Deployment metadata: &n

centos7.2搭建kubernetes1.5.2+dashboard

heartbeat status vol 持久 種類型 data 操作系統 sig mct 一、 簡介 近來容器對企業來說已經不是什麽陌生的概念,Kubernetes作為Google開源的容器運行平臺,受到了大家的熱捧。搭建一套完整的kubernetes平臺,也成為試

logstash5.5.2部署-03

ubuntu16.04 1、安裝前必須有Java java -version java version "1.8.0_65" Java(TM) SE Runtime Environment (build 1.8.0_65-b17) Java HotSpot

kubernetes v1.5.2搭建,部署nginx,tomcat,三臺centos7 叢集,一篇秒懂kubernetes工具

安裝vmware 先安裝一個,centos7 minimal模式,安裝完重啟,輸入root與密碼,進入控制檯 ip addr //可以看ip,minimal是沒有安裝ifconfig等等工具的 配置開機聯網 cd /etc/sysconfig/network-script

Hadoop2.5.2叢集部署(完全分散式)

環境介紹 硬體環境 CPU 4 MEM 4G 磁碟 60G  軟體環境 OS:centos6.5版本 64位 Hadoop:hadoop2.5.2 64位 JDK: JDK 1.8.0_91 主機配

CentOS7.5 使用二進位制程式部署Kubernetes1.12.2(三)

一、安裝方式介紹 1、yum 安裝 目前CentOS官方已經把Kubernetes源放入到自己的預設 extras 倉庫裡面,使用 yum 安裝,好處是簡單,壞處也很明顯,需要官方更新 yum 源才能獲得最新版本的軟體,而所有軟體的依賴又不能自己指定,尤其是你的作業系統版本如果低的話,使用 yum 源安裝

CentOS7部署ElasticSearch 5.2.2 版本叢集搭建

CentOS7(CentOS Linux release 7.3.1611 (Core))部署ElasticSearch-5.2.2集群系統規劃 節點名稱 內部IP地址 對外IP地址 軟體版本 no

1、kubernetes 1.5.2原理以及叢集HA部署

Kubernetes是什麼?  1.是一個全新的基於容器技術的分散式架構,是谷歌的Borg技術的一個開源版本  Borg是谷歌的一個久負盛名的內部使用的大規模叢集管理系統,基於容器技術,目的是實現資源管理的自動化,垮多個數據中心的資源利用率的最大化  2.Kuberne

新手小白Linux(Centos6.5部署java web項目(mongodb4.0.2安裝及相關操作)

read har space 創建 縮進 路徑 .org font url 紅帽企業或CentOS的Linux上安裝MongoDB的社區版: https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-ha

Docker實戰之安裝配置Hadoop-2.5.2完全分散式叢集

環境配置 VM:VMware Workstation OS:Ubuntu 14.04  LTS Hadoop:hadoop-2.5.2 Hadoop叢集規劃 172.17.0.2    hadoop-master 172.17.

Hadoop2.5.2集群部署(完全分布式)

tex 免密碼登錄 文件復制 job src 時間 配置環境 8.0 上進 環境介紹 硬件環境 CPU 4 MEM 4G 磁盤 60G 軟件環境 OS:centos6.5版本 64位 Hadoop:hadoop2.5.2 64位 JDK: JDK 1.8.0_91 主機

spark-2.2.0 叢集安裝部署以及hadoop叢集部署

Spark在生產環境中,主要部署在安裝Linux系統的叢集中。在linux系統中安裝Spark需要預先安裝JDK、Scala等所需要的依賴。 由於Spark是計算框架,所以需要預先在叢集內有搭建好儲存資料的持久化層,如HDFS、Hive、Cassandra等,最後可以通過啟動指令碼執行應用。

Spark2.2.0叢集搭建部署之【SPARK叢集篇】

軟體準備資訊,詳見Spark2.2.0叢集搭建部署之【軟體準備篇】 基礎配置資訊,詳見Spark2.2.0叢集搭建部署之【基礎配置篇】 SSH無密訪問,詳見park2.2.0叢集搭建部署之【無密訪問篇】 HADOOP叢集,詳見Spark2.2.0叢集搭建部署之【HADOOP叢集篇】

Spark2.2.0叢集搭建部署之【HADOOP叢集篇】

軟體準備資訊,詳見Spark2.2.0叢集搭建部署之【軟體準備篇】 基礎配置資訊,詳見Spark2.2.0叢集搭建部署之【基礎配置篇】 SSH無密訪問,詳見park2.2.0叢集搭建部署之【無密訪問篇】 將hadoop-2.7.7.tar.gz 進行解壓 tar -zxvf 

Spark2.2.0叢集搭建部署之【無密訪問篇】

軟體準備資訊,詳見Spark2.2.0叢集搭建部署之【軟體準備篇】 基礎配置資訊,詳見Spark2.2.0叢集搭建部署之【基礎配置篇】 通過SSH無密訪問來達到叢集中機器相互訪問的目的。首先固定機器的ip地址,避免每次重啟機器ip改變的問題。 通過ifconfig命令檢視當前ip地址,若

Spark2.2.0叢集搭建部署之【基礎配置篇】

軟體準備資訊,詳見Spark2.2.0叢集搭建部署之【軟體準備篇】 Spark叢集在生產環境中,主要部署在linux的叢集中,所以需要先安裝JDK,SCALA等基礎配置。 由於Spark是計算框架,所以需要預先在叢集內有搭建好儲存資料的持久化層,如HDFS,最後可以通過啟動指令碼執行應用。

Spark2.2.0叢集搭建部署之【軟體準備篇】

本文主要展示如何在虛擬機器上搭建部署Spark2.2.0的詳細步驟,包括環境安裝、無密登入、Hadoop叢集,Spark叢集。 需要準備的軟體為: VMware-WorkStation CentOS-7-x86_64-DVD-1708.iso jdk-1.8.0-openjdk scala-

CentOS 7.5二進位制部署Kubernetes1.12(加密通訊)(五)

一、安裝方式介紹 1、二進位制安裝 使用二進位制檔案安裝,好處是可以安裝任意版本的 Kubernetes,對一些新版本新功能追求的同學比較合適,壞處是配置比較複雜,很多軟體包因為一些原因,我們在大陸是訪問不到的。這篇文章我們使用加密通訊,也就是各元件和kube-apiserver的通訊採用加密方式。 二

RocketMQ初探(五)之RocketMQ4.2.6叢集部署(單Master+雙Master+2m+2s+async非同步複製)

原文地址:https://www.cnblogs.com/buyige/p/9454634.html     以下部署方式結合眾多博友的部落格,經過自己一步一步實際搭建,如有雷同,侵權行為,請見諒。。。其中遇到不少的坑,希望能幫到更多的人,現在很少能找到一份完整版4.2.6版本的搭