kubernetes集群搭建

2020-03-19  本文已影响0人  早_wsm

1、怎么来的

etcd:相当于k8s集群的数据库
api server:contoller manager(控制器服务)、scheduler(调度程序)

node内安装:

kubelet:调用docker
kube-proxy:创建端口映射等

二、准备搭建环境

预先准备三台主机并做好域名解析:
10.0.0.11 k8s-master 最小1G
10.0.0.12 k8s-node-1 最小1G
10.0.0.13 k8s-node-2 最小1G

#安装etcd组件
yum install etcd -y
#修改配置文件:
vim /etc/etcd/etcd.conf 
6行:ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
21行:ETCD_ADVERTISE_CLIENT_URLS="http://10.0.0.11:2379"

重新启动并设置为开机自启动
systemctl restart etcd.service
systemctl enable etcd.service
查看端口:

[root@master ~]# netstat -lntup |grep 2379
tcp6       0      0 :::2379                 :::*                    LISTEN      2307/etcd 

使用以下命令监控etcd集群是否健康:
etcdctl -C http://10.0.0.11:2379 cluster-health
显示结果:

[root@master ~]# etcdctl -C http://10.0.0.11:2379 cluster-health
member 8e9e05c52164694d is healthy: got healthy result from http://10.0.0.11:2379
cluster is healthy

kubernetes包含三个服务:
apiserver 核心服务
contoller manager
scheduler

#安装 kubernetes-master

yum install -y kubernetes-master.x86_64

#修改apiserver配置文件
[root@k8s-master ~]# vim /etc/kubernetes/apiserver 
8 KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"
11 KUBE_API_PORT="--port=8080"
14 KUBELET_PORT="--kubelet-port=10250"
17 KUBE_ETCD_SERVERS="--etcd-servers=http://10.0.0.11:2379"
23 KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,
SecurityContextDeny,ResourceQuota" #启用插件的名单,这里需要去掉ServiceAccount插件,否则会报错
#修改kubernetes配置文件
[root@k8s-master ~]# vim /etc/kubernetes/config
22 KUBE_MASTER="--master=http://10.0.0.11:8080"

分别重启三个服务并设置为开机自启:
systemctl restart kube-apiserver.service
systemctl enable kube-apiserver.service
systemctl restart kube-controller-manager.service
systemctl enable kube-controller-manager.service
systemctl restart kube-scheduler.service
systemctl enable kube-scheduler.service
检查服务安装是否正常使用kubectl get componentstatus命令

[root@master ~]# kubectl get componentstatus 
NAME                 STATUS    MESSAGE             ERROR
scheduler            Healthy   ok                  
controller-manager   Healthy   ok                  
etcd-0               Healthy   {"health":"true"}  

kubernetes-node包含俩个服务:
kuberlet
kube-Proxy

#直接安装kubernetes-node
yum install kubernetes-node.x86_64 -y
#修改kubernetes配置文件-kube-proxy
vim /etc/kubernetes/config 
22行:KUBE_MASTER="--master=http://10.0.0.11:8080"
​#修改kubelet
vim /etc/kubernetes/kubelet
5行:KUBELET_ADDRESS="--address=0.0.0.0"
8行:KUBELET_PORT="--port=10250"
11行:KUBELET_HOSTNAME="--hostname-override=10.0.0.12"#分别修改为node1与node2的地址
14行:KUBELET_API_SERVER="--api-servers=http://10.0.0.11:8080"

分别重启俩个服务
systemctl enable kubelet.service
systemctl restart kubelet.service
systemctl enable kube-proxy.service
systemctl restart kube-proxy.service
可以看到docker也已经启动了
systemctl status docker
装好节点后在master验证使用命令kubectl get nodes结果可看到启动状态:

[root@master ~]# kubectl get nodes
NAME        STATUS    AGE
10.0.0.12   Ready     5m
10.0.0.13   Ready     1m
#为所有节点安装flannel

yum install flannel -y
#所有节点都需要修改etcd的连接地址

sed -i 's#http://127.0.0.1:2379#http://10.0.0.11:2379#g' /etc/sysconfig/flanneld
```​
##master节点
定义flannel网段范围:
etcdctl mk /atomic.io/network/config   '{ "Network": "172.16.0.0/16" }'

等下需要搭建一个docker仓库,这里直接使用master简直docker仓库任务,所以先安装docker再重启服务
yum install docker -y
systemctl enable flanneld.service 
systemctl restart flanneld.service 
service docker restart
systemctl enable docker
重新启动etcd内三个服务:
systemctl restart kube-apiserver.service
systemctl restart kube-controller-manager.service
systemctl restart kube-scheduler.service
##node节点:
systemctl enable flanneld.service 
systemctl restart flanneld.service 
service docker restart
systemctl restart kubelet.service
systemctl restart kube-proxy.service

​安装完成后验证各节点是否可以实现互相通讯
为实现各节点内docker容器相互可以通讯,需要所有节点设置防火墙规则,并让生效,具体命令iptables -P FORWARD ACCEPT
在各节点内修改配置文件实现运行容器时便启用防火墙规则

vim /usr/lib/systemd/system/docker.service
#在[Service]区域下增加一行
ExecStartPost=/usr/sbin/iptables -P FORWARD ACCEPT

各节点进行重启服务
systemctl daemon-reload
systemctl restart docker
在每个节点内导入一个docker镜像并导入运行
这里提供一个镜像用作运行测试,下载地址:
链接:https://pan.baidu.com/s/1tF4EZ_qsu2o2YyzZde-7AQ
提取码:9yg5
所有节点执行docker load -i docker_busybox.tar.gz导入
运行:docker run -it busybox
最后可在各节点运行docker容器,相互ping一下,测试网络通讯是否成功

image.png
image.png
image.png

这样就通过flannel模式达到网络互通!

上一篇下一篇

猜你喜欢

热点阅读