Kubeadm方式搭建k8s集群搭建
搭建K8S环境有几种常见的方式Minikube:Minikube是一个工具,可以在本地快速运行一个单点的K8S,供初步尝试K8S或日常开发的用户使用,不能用于生产环境。Kubeadm:Kubeadm是K8S官方社区推出的一套用于简化快速部署K8S集群的工具,Kubeadm的设计目的是为新用户开始尝试K8S提供一种简单的方法。二进制包:从官方下载二进制包,手动部署每个组件组成K8S集群,这也是目前企
搭建K8S环境有几种常见的方式
Minikube:
Minikube是一个工具,可以在本地快速运行一个单点的K8S,供初步尝试K8S或日常开发的用户使用,不能用于生产环境。
Kubeadm:
Kubeadm是K8S官方社区推出的一套用于简化快速部署K8S集群的工具,Kubeadm的设计目的是为新用户开始尝试K8S提供一种简单的方法。
二进制包:
从官方下载二进制包,手动部署每个组件组成K8S集群,这也是目前企业生产环境中广为使用的方式,但对K8S管理人员的要求较高。
搭建前的准备工作(这里是3台机器都需要操作步骤)
1、3台虚拟机,网段相同。(最好cpu有2G,如果只有1G会报警告)
2、配置主机名与静态IP地址如下表所示:
角色 | 主机名 | IP地址 |
---|---|---|
Master | master | 192.168.25.127 |
Node | node1 | 192.168.25.128 |
Node | node2 | 192.168.25.129 |
3、更改hosts文件添加主机名与IP映射关系
vim /etc/hosts
192.168.25.127 master master
92.168.25.128 node1 node1
192.168.198.113 node2 node2
4、在每台机器上关闭防火墙,清理防火墙规则,设置默认转发策略:
systemctl stop firewalld
systemctl disable firewalld
iptables -F && iptables -X && iptables -F -t nat && iptables -X -t nat
iptables -P FORWARD ACCEPT
5.关闭 swap 分区
如果开启了 swap 分区,kubelet 会启动失败(可以通过将参数 --fail-swap-on 设置为 false 来忽略 swap on),故需要在每台机器上关闭 swap 分区。同时注释 /etc/fstab 中相应的条目,防止开机自动挂载 swap 分区:
swapoff -a
sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
5.关闭 swap 分区
如果开启了 swap 分区,kubelet 会启动失败(可以通过将参数 --fail-swap-on 设置为 false 来忽略 swap on),故需要在每台机器上关闭 swap 分区。同时注释 /etc/fstab 中相应的条目,防止开机自动挂载 swap 分区:
6.关闭 SELinux
关闭 SELinux,否则后续 K8S 挂载目录时可能报错 Permission denied
setenforce 0
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
7、安装ntp
yum install -y ntp
8、更新系统时间(系统时间不一致,会导致node节点无法加入集群)
ntpdate cn.pool.ntp.org
9、优化内核参数
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
net.ipv4.ip_forward=1
net.ipv4.tcp_tw_recycle=0
vm.swappiness=0 # 禁止使用 swap 空间,只有当系统 OOM 时才允许使用它
vm.overcommit_memory=1 # 不检查物理内存是否够用
vm.panic_on_oom=0 # 开启 OOM
fs.inotify.max_user_instances=8192
fs.inotify.max_user_watches=1048576
fs.file-max=52706963
fs.nr_open=52706963
net.ipv6.conf.all.disable_ipv6=1
net.netfilter.nf_conntrack_max=2310720
EOF
安装Docker&Kubeadm&Kubelet
1、安装Docker
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
yum -y install docker-ce-18.06.1.ce-3.el7
systemctl enable docker && systemctl start docker
docker --version
2、添加阿里云Yum软件源
[kubernetes]
name=Kubernetes Repo
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
gpgcheck=0
enabled=1
3、安装Kubeadm&Kubelet&Kubectl
注意:本次部署K8S版本号为1.13.3
yum install -y kubelet-1.13.3 kubeadm-1.13.3 kubectl-1.13.3
systemctl enable kubelet
4、查看安装情况
kubelet --version
kubeadm version
部署Kubernetes Master(master节点上操作)
1、初始化kubeadm
kubeadm init --kubernetes-version=v1.13.3 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --apiserver-advertise-address=192.168.25.127 --image-repository registry.aliyuncs.com/google_containers --ignore-preflight-errors=NumCPU
–apiserver-advertise-address:API服务器将通知它正在监听的IP地址,监听的地址为“0.0.0.0”,即本机所有IP地址。
–apiserver-bind-port:API服务器绑定到的端口。(默认:6443)
–cert-dir:加载证书的相关目录(默认:/etc/kubernetes/pki)
–config:配置文件的路径。警告:配置文件目前属于实验性,还不稳定。
–ignore-preflight-errors:将错误显示为警告的检查列表进行忽略。例如:“IsPrivilegedUser,Swp”。Value 'all’忽略所有检查中的错误。
–pod-network-cidr:指定pod网络的IP地址范围。如果设置,控制平面将为每个节点自动分配CIDRs。
–service-cidr:为service VIPs使用不同的IP地址。(默认“10.96.0.0/12”)
2、使用节点的操作
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
3、查看nodes状态
kubectl get nodes
4、部署Pod网络插件(CNI)
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/Documentation/kube-flannel.yml
5、命令验证:全部为Running则OK,其中一个不为Running,比如:Pending、ImagePullBackOff都表明Pod没有就绪
kubectl get pod --all-namespaces
6、kubectl get nodes 再次验证状态
说明:
1)master和node节点上如果 kubeadm执行不成功,或者需要重新执行,需要先使用kubeadm reset 恢复初始状态
2)master和node节点上需要开启kubectl开机自启动 systemctl enable kubectl, 否则主机重启后组件类容器不能启动
部署Kubernetes Node(node节点上操作)
加入Kubernetes Node
#根据maser上 kubeadmin init执行结果的提示,在2台node上分别执行如下命令
kubeadm join 1192.168.25.127:6443 --token 04no0s.h50k51zzgy5o54op --discovery-token-ca-cert-hash sha256:732f9cc0e01d3ffefad27204b1a8b7d67e2c769fff2d8b012368b4a2c22a776f
验证:(master节点上操作)
1、查看节点信息
kubectl get nodes
更多推荐
所有评论(0)