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

 

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐