kubernetes(k8s)-单master节点安装部署
etcd 保存了整个集群的状态 相当于数据库的功能apiserver 提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制controller manager 负责维护集群的状态,比如故障检测、自动扩展、滚动更新等scheduler 负责资源的调度,按照预定的调度策略将pod调度到相应的机器上kubelet 负责维护容器的生命周期,同时也负责Volume (CVI) 和网络
k8s的核心组件和架构
核心组件
etcd 保存了整个集群的状态 相当于数据库的功能
apiserver 提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制
controller manager 负责维护集群的状态,比如故障检测、自动扩展、滚动更新等
scheduler 负责资源的调度,按照预定的调度策略将pod调度到相应的机器上
kubelet 负责维护容器的生命周期,同时也负责Volume (CVI) 和网络 (CNI)的管理
Container runtime 负责镜像管理以及Pod和容器的真正运行 (CRI)
kube-proxy 负责为Service 提供cluster内部的服务发现和负载均衡
架构图
扩展组件
kube-dns 负责为整个集群提供DNS服务
lngress Controller 为服务提供外网入口 默认四层负载,ingress可以实现七层负载
Heapster 提供资源监控
Dashboard 提供GUI web界面
Federation 提供跨可用区的集群
Fluentd-elasticsearch 提供集群日志采集、存储与查询
k8s集群的安装部署
准备环境
准备三台虚拟机
IP: 192.168.81.131 192.168.81.132 192.168.81.133
分别修改三台虚拟机主机名
hostnamectl set-hostname k8s-master
hostnamectl set-hostname k8s-node1
hostnamectl set-hostname k8s-node2
做好hosts解析
192.168.81.131 k8s-master
192.168.81.132 k8s-node1
192.168.81.133 k8s-node2
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
关闭SELinux
临时关闭
setenforce 0
永久关闭
vi /etc/selinux/config #将SELINUX=enforcing改为SELINUX=disabled,然后保存退出
关闭NetworkManager(Linux网络管理)
systemctl stop NetworkManager.service
systemctl disable NetworkManager.service
更新yum源
常用工具安装
yum install -y bash-completion.noarch
yum install -y net-tools vim lrzsz wget tree screen lsof tcpdump
关闭postfix.service服务
systemctl stop postfix.service
systemctl disable postfix.service
master节点安装
etcd安装
yum install etcd -y #(安装)
修改etcd配置
vim /etc/etcd/etcd.conf
启动etcd
systemctl start etcd
systemctl enable etcd
安装kubernetes
yum install kubernetes-master.x86_64 -y
修改配置文件
vim /etc/kubernetes/apiserver
vim /etc/kubernetes/config
启动服务
systemctl start kube-apiserver.service
systemctl start kube-controller-manager.service
systemctl start kube-scheduler.service
systemctl enable kube-apiserver.service
systemctl enable kube-controller-manager.service
systemctl enable kube-scheduler.service
检查服务状态
kubectl get componentstatus
node节点安装(所有node节点)
yum -y install kubernetes-node.x86_64
修改配置文件
vim /etc/kubernetes/config
vim /etc/kubernetes/kubelet
启动
systemctl start kubelet.service
systemctl enable kubelet.service
systemctl start kube-proxy.service
systemctl enable kube-proxy.service
安装flannel服务(所有node节点)
安装
yum install flannel -y
修改配置文件
vim /etc/sysconfig/flanneld
master节点上操作
etcdctl set /atomic.io/network/config '{ "Network": "172.16.0.0/16"}'
node节点上启动flanneld服务
systemctl start flanneld.service
systemctl enable flanneld.service
#重启docker
systemctl restart docker
测试跨宿主机容器之间的互通
docker pull busybox:1.27
docker run -it busybox:1.27
ping不通,是由于iptables 规则的问题
修改FORWARD 由 DROP 修改为 ACCEPT 所有节点
iptables -P FORWARD ACCEPT
加入docker启动文件
vim /usr/lib/systemd/system/docker.service
#加入一行
ExecStartPost=/usr/sbin/iptables -P FORWARD ACCEPT
配置生效
systemctl daemon-reload
更多推荐
所有评论(0)