文章目录
k8s 集群主要有以下几个组件:
-
etcd: 一款分布式的一致性KV存储存储和服务发现系统,存储了整个集群的状态
-
kube-apiserver: 提供kubernetes集群的API调用
-
kube-controller-manager:负责维护集群的状态,比如故障检测、自动扩展、滚动更新等
-
kube-scheduler:负责资源的调度
-
kubelet:负责维护容器的生命周期,同时也负责Volume(CSI)和网络(CNI)的管理
-
kube-proxy:负责为Service提供cluster内部的服务发现和负载均衡
-
Container runtime:负责镜像管理以及Pod和容器的真正运行(CRI)
-
flannel: 一款网络插件,集群中的pod通讯主要依赖于它
-
coredns: 负责为整个集群提供DNS服务
一. 环境和版本信息
- OS: CentOS 7.4.1708
- HAProxy Vervion: 1.5.18
- Docker Version: Docker-CE 19.03.9-3
- Kubetnetes Version: v1.18.3
- HAProxy: 10.202.42.72
- Control-plane Node(master node):
node-01: 10.202.82.192
node-02: 10.202.83.77
node-03: 10.202.82.80
- Worker Node:
node-04: 10.202.82.97
node-05: 10.202.83.188
node-06: 10.202.82.186
node-07: 10.202.42.177
二.系统配置(全部节点)
1.关闭防火墙
sudo systemctl stop firewalld
sudo systemctl disable firewalld
2.关闭selinux
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
3.关闭swap
swapoff -a
sed -i 's/.*swap.*/#&/' /etc/fstab
4.启动bridge-nf方式
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-arptables = 1
EOF
sysctl -p /etc/sysctl.d/k8s.conf
三. 安装docker、kubeadm、kubelet、kubectl (全部节点)
- 下载地址 https://download.csdn.net/download/sinat_39562444/12882173
1. 安装docker(master)
yum install docker-ce-19.03.9-3.el7.x86_64.rpm docker-ce-cli-19.03.9-3.el7.x86_64.rpm containerd.io-1.2.6-3.3.el7.x86_64.rpm
修改Docker的Cgroup Driver(可选操作)
systemctl start docker
cat <<EOF > /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
systemctl restart docker
systemctl enable docker
注:Docker在默认情况下使用的Cgroup Driver为cgroupfs而kubernetes1.14之后推荐使用systemd来代替 cgroupfs,详见: https://kubernetes.io/docs/setup/cri