Kubeadm方式搭建k8s集群搭建

搭建K8S环境有几种常见的方式

Minikube:

Minikube是一个工具,可以在本地快速运行一个单点的K8S,供初步尝试K8S或日常开发的用户使用,不能用于生产环境。

Kubeadm:

Kubeadm是K8S官方社区推出的一套用于简化快速部署K8S集群的工具,Kubeadm的设计目的是为新用户开始尝试K8S提供一种简单的方法。

二进制包:
从官方下载二进制包,手动部署每个组件组成K8S集群,这也是目前企业生产环境中广为使用的方式,但对K8S管理人员的要求较高。

搭建前的准备工作(这里是3台机器都需要操作步骤)

1、3台虚拟机,网段相同。(最好cpu有2G,如果只有1G会报警告)

2、配置主机名与静态IP地址如下表所示:

角色主机名IP地址
Mastermaster192.168.25.127
Nodenode1192.168.25.128
Nodenode2192.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

©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页