1、怎么来的
-
发展经历
iaas
paas
saas
谷歌使用go语言开发,10年容器基础架构
特点:
轻量级
弹性伸缩
开源
负载均衡
适合人群:软件工程师,测试工程师,运维工程师 -
2、知识图谱
-
Pod
什么是Pod
k8s网络通讯模式
构建k8s集群 -
资源清单
-
Pod的生命周期
-
修改kubeadm 达到证书期限为10年
-
k8s高可用集群构建
- 3、组件知识
master内安装:
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
- 1.在k8s-master上做好配置
#安装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
- 2.在k8s-master上安装kubernetes
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"}
- 3.node节点安装kubernetes
分别在俩台node节点安装kubernetes-node
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
- 4.为所有节点配置flannel网络
为实现node节点容器可相互通信,需要配置flannel
#为所有节点安装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
这样就通过flannel模式达到网络互通!
网友评论