yum -y install etcd docker flannel kubenetesnode
通常會遇到沒有k8s源的問題,先 yum update -y 看是否有效,若是仍是沒用就建立yum 源,再安裝 kubenetesdocker
以下操做:centos
vi virt7-docker-common-release.repo
加入如下內容:api
[virt7-docker-common-release] name=virt7-docker-common-release baseurl=http://cbs.centos.org/repos/virt7-docker-common-release/x86_64/os/ gpgcheck=0
執行如下命令,安裝kubernetesruby
yum -y install --enablerepo=virt7-docker-common-release kubernetes
接下來開始部署:bash
Master上執行:ide
[root@localhost ~]# hostnamectl --static set-hostname k8s-master
Node1上執行:ui
[root@localhost ~]# hostnamectl --static set-hostname k8s-node-1
Node2上執行:this
[root@localhost ~]# hostnamectl --static set-hostname k8s-node-2
systemctl disable firewalld.services
systemctl stop firewalld.services
啓動 etcd docker flannel 服務:
一、先啓動etcd:
systemctl enable etcd.service
systemctl start etcd.service
master、node上均編輯/etc/sysconfig/flanneld,修改紅色部分atom
# 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=""
Flannel使用Etcd進行配置,來保證多個Flannel實例之間的配置一致性,因此須要在etcd上進行以下配置:(‘/atomic.io/network/config’這個key與上文/etc/sysconfig/flannel中的配置項FLANNEL_ETCD_PREFIX是相對應的,錯誤的話啓動就會出錯)
[root@k8s-master ~]# etcdctl mk /atomic.io/network/config '{ "Network": "10.0.0.0/16" }' { "Network": "10.0.0.0/16" }
啓動Flannel以後,須要依次重啓docker
在master執行:
systemctl enable flanneld.service systemctl start flanneld.service service docker restart
在node上執行:
systemctl enable flanneld.service systemctl start flanneld.service service docker restart
yum安裝的etcd默認配置文件在/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=""
1.修改文件/etc/kubernetes/config(全部節點)
注意,master和slave主機都要修改
指定master主機的ip,文件內容以下:
$ cat /etc/kubernetes/config KUBE_LOGTOSTDERR="--logtostderr=true" KUBE_LOG_LEVEL="--v=0" KUBE_ALLOW_PRIV="--allow-privileged=false" KUBE_MASTER="--master=http://master:8080"
1.修改配置文件/etc/etcd/etcd.conf,確保etcd監聽全部地址。內容以下:
$ cat /etc/etcd/etcd.conf
ETCD_NAME=default ETCD_DATA_DIR="/var/lib/etcd/default.etcd" ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
2.修改配置文件/etc/kubernetes/apiserver
cat /etc/kubernetes/apiserver
KUBE_API_ADDRESS="--address=0.0.0.0" KUBE_API_PORT="--port=8080" KUBELET_PORT="--kubelet-port=10250" KUBE_ETCD_SERVERS="--etcd-servers=http://127.0.0.1:2379" KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16" KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,ResourceQuota" KUBE_API_ARGS=""
3.修改配置文件/etc/kubernetes/controller-manager,定義slave主機ip地址
KUBELET_ADDRESSES="--machines=master地址"
執行以下命令,批量啓動服務
for SERVICES in etcd kube-apiserver kube-controller-manager kube-scheduler; do systemctl restart $SERVICES systemctl enable $SERVICES systemctl status $SERVICES done
注意:slave節點主機,一樣要安裝docker,flannel ,k8s
yum -y installflannel docker
yum -y install --enablerepo=virt7-docker-common-release kubernetes
1.修改kubernetes配置文件,指定master。
$ cat /etc/kubernetes/config KUBE_MASTER="--master=http://master:8080"
2.配置kubelet服務。
$ cat /etc/kubernetes/kubelet KUBELET_ADDRESS="--address=0.0.0.0" KUBELET_PORT="--port=10250" KUBELET_HOSTNAME="--hostname-override=node自身" KUBELET_API_SERVER="--api-servers=http://master:8080"
for SERVICES in kube-proxy kubelet docker flanneld; do systemctl restart $SERVICES systemctl enable $SERVICES systemctl status $SERVICES done
如今登錄master,確認slave的狀態
$ kubectl get nodes
NAME LABELS STATUS AGE
10.16.93.182 kubernetes.io/hostname=node1 Ready 1h這樣就配置完成了