etcd集群配置

master节点配置

1.安装kubernetes etcd
 [root@k8s ~]# yum -y install kubernetes-master etcd

2.配置 etcd 选项

 [root@k8s ~]# cat /etc/etcd/etcd.conf
#[Member]
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="http://172.19.15.92:2380"
ETCD_LISTEN_CLIENT_URLS="http://172.19.15.92:2379,http://127.0.0.1:2379"
ETCD_MAX_SNAPSHOTS=""
ETCD_NAME="etcd1"
ETCD_HEARTBEAT_INTERVAL=6000
ETCD_ELECTION_TIMEOUT=30000 #[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://172.19.15.92:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://172.19.15.92:2379"
ETCD_INITIAL_CLUSTER="etcd1=http://172.19.15.92:2380,etcd2=http://172.19.15.93:2380,etcd3=http://172.19.15.94:2380"

nodes节点配置

1.安装部署kubernetes-node /etcd /flannel /docker
 [root@k8s-node1 ~]# yum -y install kubernetes-node etcd flannel docker

2.分别配置etcd,node1 与 node2 的配置方法相同,以 node1 配置文件为例说明

 [root@k8s-node1 ~]# cat /etc/etcd/etcd.conf
#[Member]
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="http://172.19.15.93:2380"
ETCD_LISTEN_CLIENT_URLS="http://172.19.15.93:2379,http://127.0.0.1:2379"
ETCD_NAME="etcd2"
ETCD_HEARTBEAT_INTERVAL=6000
ETCD_ELECTION_TIMEOUT=30000 #[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://172.19.15.93:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://172.19.15.93:2379"
ETCD_INITIAL_CLUSTER="etcd1=http://172.19.15.92:2380,etcd2=http://172.19.15.93:2380,etcd3=http://172.19.15.94:2380"

启动etcd cluster

分别在3台服务器启动etcd
 [root@k8s ~]# systemctl start etcd.service
[root@k8s ~]# systemctl status etcd.service -l
● etcd.service - Etcd Server
Loaded: loaded (/usr/lib/systemd/system/etcd.service; enabled; vendor preset: disabled)
Active: active (running) since 二 2018-07-03 18:13:06 CST; 16h ago
Main PID: 2085 (etcd)
Tasks: 31
Memory: 328.4M
CGroup: /system.slice/etcd.service
└─2085 /usr/bin/etcd --name=etcd1 --data-dir=/var/lib/etcd/default.etcd --listen-client-urls=http://172.19.15.92:2379,http://127.0.0.1:2379

查看etcd集群状态

 [root@k8s ~]# etcdctl cluster-health
member 8c24796af2c20350 is healthy: got healthy result from http://172.19.15.94:2379
member e66597512233d97d is healthy: got healthy result from http://172.19.15.93:2379
member edfc36869b54e803 is healthy: got healthy result from http://172.19.15.92:2379
cluster is healthy

Kubernetes集群配置

master节点配置

1.apiserver配置文件修改,注意KUBE_ADMISSION_CONTROL选项的参数配置

 [root@k8s ~]# cat /etc/kubernetes/apiserver
KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"
KUBE_API_PORT="--port=8080"
KUBELET_PORT="--kubelet-port=10250"
KUBE_ETCD_SERVERS="--etcd-servers=http://172.19.15.92:2379,http://172.19.15.93:2379,http://172.19.15.94: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=""

2.启动服务

 [root@k8s ~]# systemctl start kube-apiserver
[root@k8s ~]# systemctl start kube-controller-manager
[root@k8s ~]# systemctl start kube-scheduler
[root@k8s ~]# systemctl enable kube-apiserver
[root@k8s ~]# systemctl enable kube-controller-manager
[root@k8s ~]# systemctl enable kube-scheduler

nodes节点配置

1.配置config配置,node1&node2配置相同,以node1为例说明
 [root@k8s-node1 ~]# cat /etc/kubernetes/config
KUBE_LOGTOSTDERR="--logtostderr=true"
KUBE_LOG_LEVEL="--v=0"
KUBE_ALLOW_PRIV="--allow-privileged=false"
KUBE_MASTER="--master=http://172.19.15.92:8080"

2.配置kubelet

 [root@k8s-node1 ~]# cat /etc/kubernetes/kubelet
KUBELET_ADDRESS="--address=127.0.0.1"
KUBELET_HOSTNAME="--hostname-override=172.19.15.93"
KUBELET_API_SERVER="--api-servers=http://172.19.15.92:8080"
KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure:latest"
KUBELET_ARGS=""

3.docker  service配置文件

 [root@k8s-node1 ~]# cat /usr/lib/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network.target firewalld.service [Service]
Type=notify
Environment="http_proxy=http://192.168.59.241:8888/" "https_proxy=https://192.168.59.241:8888/"
ExecStart=/usr/bin/dockerd --registry-mirror=http://f2d6cb40.m.daocloud.io --bip=192.100.90.1/24
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process [Install]
WantedBy=multi-user.target

网络配置

这里使用flannel进行网络配置,已经在2个节点上安装,下面进行配置。

在节点上进行配置flannel

 [root@k8s-node1 ~]# cat /etc/sysconfig/flanneld
FLANNEL_ETCD_ENDPOINTS="http://172.19.15.92:2379,http://172.19.15.93:2379,http://172.19.15.94:2379"
FLANNEL_ETCD_PREFIX="/k8s/network"
FLANNEL_OPTIONS="--logtostderr=true --log_dir=/var/log/k8s/flannel/ --etcd-prefix=/k8s/network --etcd-endpoints=http://172.19.15.92:2379,http://172.19.15.93:2379,http://172.19.15.94:2379 --iface=ens160"

master 节点需要配置 etcd 网络:

 etcdctl set /k8s/network/config '{"Network":"192.100.0.1/16"}'

2.启动服务

 [root@k8s-node1 ~]# systemctl start kubelet
[root@k8s-node1 ~]# systemctl start docker
[root@k8s-node1 ~]# systemctl start flanneld
[root@k8s-node1 ~]# systemctl enable kubelet
[root@k8s-node1 ~]# systemctl enable docker
[root@k8s-node1 ~]# systemctl enable flanneld

查看集群状态

 [root@k8s ~]# kubectl get nodes
NAME STATUS AGE
172.19.15.92 Ready 16h
172.19.15.93 Ready 1d
172.19.15.94 Ready 1d
[root@k8s ~]# etcdctl member list
8c24796af2c20350: name=etcd3 peerURLs=http://172.19.15.94:2380 clientURLs=http://172.19.15.94:2379 isLeader=false
e66597512233d97d: name=etcd2 peerURLs=http://172.19.15.93:2380 clientURLs=http://172.19.15.93:2379 isLeader=false
edfc36869b54e803: name=etcd1 peerURLs=http://172.19.15.92:2380 clientURLs=http://172.19.15.92:2379 isLeader=true
[root@k8s ~]# etcdctl cluster-health
member 8c24796af2c20350 is healthy: got healthy result from http://172.19.15.94:2379
member e66597512233d97d is healthy: got healthy result from http://172.19.15.93:2379
member edfc36869b54e803 is healthy: got healthy result from http://172.19.15.92:2379
cluster is healthy

更改 docker 网段为 flannel 分配的网段

 # export FLANNEL_SUBNET=10.254.26.1/24
# cat << EOF > /etc/docker/daemon.json
{
"bip" : "$FLANNEL_SUBNET"
}
EOF
# systemctl daemon-reload
# systemctl restart docker
 

最新文章

  1. ZOJ 2182 Cable TV Network(无向图点割-最大流)
  2. 使用Spring容器
  3. spirng MVC乱码过滤器
  4. QQ在线咨询状态显示不出来怎么办?http://bizapp.qq.com/webpres.htm
  5. Qt setStyleSheet 添加背景色/背景图片(取消背景色,读取本地文件作为背景色)
  6. Day4_名称空间与作用域
  7. ubantu/centos修改系统时间
  8. eclipse遇到启动报an error has occurred see the log file错
  9. python安装plinter
  10. 线程的中断(Lock与synchronized)
  11. JavaScript之radio遍历
  12. WordPress研究心得
  13. bzoj 3489 A simple rmq problem - 线段树
  14. DOM中的outerHTML,innerHTML,outerText,innerText的区别
  15. 关于python操作带有中文文件名报错的解决办法
  16. go语言之进阶篇字符串操作常用函数介绍
  17. arcgis-tomcat-cors
  18. Vue2学习笔记:v-on
  19. 【LOJ】#2432. 「POI2014」代理商 Couriers
  20. python3 基础数据类型

热门文章

  1. VUE项目 - IE报vuex requires a Promise polyfill in this browser问题解决
  2. 迷你MVVM框架 avalonjs 0.92发布
  3. Grapher
  4. ORACLE BI Publisher Enterprise
  5. Bourne Shell:控制语句、条件判断、文本处理、常用命令
  6. C语言中的undefined behavior
  7. [SoapUI] 通过Groovy脚本获取project所在的路径或者直接用${projectDir}
  8. 475. Heaters
  9. C# Redis Server分布式缓存编程(一)(转)
  10. 一文读懂spark yarn集群搭建