centos7部署k8s集群

1、环境说明

 

操作系统:centos7

matser节点:192.168.124.76

node1节点:192.168.124.97

 

2、前置必操作步骤

 

2.1、关闭防火墙

systemctl stop firewalld  #关闭防火墙
systemctl disable firewalld  #永久关闭防火墙

  

2.2、关闭selinux

setenforce 0  #关闭selinux

 

 永久关闭,编辑配置文件:

vi /etc/sysconfig/selinux  #编辑文件

SELINUX=disable  #将enforcing修改为disable

 

 

2.3、永久关闭swap

swapoff -a    #临时关闭swapoff

永久关闭:

vim /etc/fstab

注释掉关于swap这一行,如下图:

 

2.4、添加主机名称

vi /etc/hosts

添加以下内容:(将master节点和node节点的ip和主机名称一一映射配置)

强调:此操作master节点和node节点配置一致

 

 2.5、将桥接的IPV4流量传递到iptables链

cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

执行完成执行以下命令生效:

sysctl --system

 

2.6、同步时间

注意!不同步时间会导致节点加入集群失败报错

yum intsall ntpdate  #安装时间同步软件

ntpdate time.nist.gov  #同步网络时间

hwclock -w  #同步后调整硬件时间

  

3、docker安装设置

 

3.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    #执行安装

 

3.2、docker设置开启自启动/启动

systemctl enable docker    #设置开启自启动

systemctl start docker    #启动docker

docker --version  #查看版本

 

4、kubeadm、kubectl、kubelet安装

 

4.1、添加阿里源

cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

 

4.2、安装kubeadm、kubectl、kubelet

安装指定版本,这里装的是1.19.2:

yum install cri-tools-1.19.2-0.x86_64 --nogpgcheck
yum install kubectl-1.19.2-0.x86_64 --nogpgcheck
yum install kubeadm-1.19.2-0.x86_64 --nogpgcheck

设置开机自启动

systemctl enable kubelet

 

5、master节点部署

 

5.1、初始化master

kubeadm init \
--apiserver-advertise-address=192.168.124.76 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.19.2 \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.244.0.0/16

  

参数说明:

--apiserver-advertise-address:填写master主节点的ip

--kubernetes-version:填写安装的kubernetes版本

--service-cidr:指定service网络地址范围不能选取与本机网络重叠或者冲突

--pod-network-cidr: 指定pod网络地址范围

注意:pod cidr和service cidr和本机网段需要注意三者之间网络无重叠冲突即可

 

初始化成功标志:

 

建议至少2 cpu ,2G,非硬性要求,1cpu,1G也可以搭建起集群。但是:
1个cpu的话初始化master的时候会报 [WARNING NumCPU]: the number of available CPUs 1 is less than the required 2
部署插件或者pod时可能会报warning:FailedScheduling:Insufficient cpu, Insufficient memory
如果出现这种提示,说明你的虚拟机分配的CPU为1核,需要重新设置虚拟机master节点内核数。

 

执行命令:

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config  

 

执行命令,发现mstaer节点状态status为NOTready,这是因为没安装网络插件

kubectl get node

 

5.2、安装flannel

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/Documentation/kube-flannel.yml

 

执行安装命令失败,报错:The connection to the server raw.githubusercontent.com was refused - did you specify the right host or port?  

可能是因为外网无法访问,可通过以下操作解决此问题:

1、浏览器访问:https://www.ipaddress.com

查询此域名的实际ip:raw.githubusercontent.com

添加到hosts文件:

vi /etc/hosts    #编辑配置文件

199.232.68.133 raw.githubusercontent.com  #添加此行内容(记得ip换成查到的真实ip)

 

2、重启执行安装命令,可查看到安装成功

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/Documentation/kube-flannel.yml

如下图:

 

3、查看是否安装成功,执行以下命令:

kubectl get pods -n kube-system

 

4、再次查看node,可以看到状态为ready

kubectl get node

 

6、node节点部署

注意!!!node节点机器需要执行标题1/2/3/4的步骤

 

6.1、更改docker的启动参数

为了避免执行node加入集群报错:

[WARNING IsDockerSystemdCheck]: detected "cgroupfs" as the Docker cgroup driver. The recommended driver is "systemd". Please follow the guide at https:/ /kubernetes.io/docs/setup/cri/

vi /usr/lib/systemd/system/docker.service    #编辑配置文件
#ExecStart=/usr/bin/dockerd #注释掉这一行 ExecStart=/usr/bin/dockerd --exec-opt native.cgroupdriver=systemd #新增这行

重启docker:

systemctl daemon-reload
systemctl restart docker

  

6.2、node加入集群

在node节点执行以下命令:

kubeadm join 192.168.124.76:6443 --token 3pmo8v.vg0tgxmdsh8wzm1f \
    --discovery-token-ca-cert-hash sha256:ceab6d527e56718ea85bc7d90842443b728094ce559dc61fa3123e6916c7e907

执行成功如下图:

 

注意!!!如果token忘记或失效,可在master节点机器执行以下命令重新获取生成token和ca证书

#生成新token
kubeadm token create    

#获取ca证书sha256编码hash值
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'

然后在node节点重新执行加入集群命令:

kubeadm join 192.168.124.76:6443 --token 3pmo8v.vg0tgxmdsh8wzm1f \
    --discovery-token-ca-cert-hash sha256:ceab6d527e56718ea85bc7d90842443b728094ce559dc61fa3123e6916c7e907

  

 6.3、master节点文件拷贝到node节点

1)将matser节点的/etc/kubernetes/admin.conf拷贝到node节点相同目录下

在master节点执行此命令,可使用scp -r命令直接拷贝:

#格式如下:
scp -r user@node节点ip:/etc/kubernetes/admin.conf /etc/kubernetes/

scp -r root@192.168.124.97:/etc/kubernetes/admin.conf /etc/kubernetes/  #执行此命令后,输入登录密码可直接完成拷贝

 

2)配置环境变量生效

echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
 
source ~/.bash_profile

 

3)执行以下命令查看node,可发现已成功加入集群,且状态为Ready

kubectl get node

 

至此,k8s的一个简单的集群就搭建完成了~

 

7、遇到问题解决

 

 7.1、安装失败,彻底清理环境重新安装

#执行以下操作
kubeadm reset systemctl stop kubelet systemctl stop docker rm -rf /var/lib/cni/ rm -rf /var/lib/kubelet/* rm -rf /etc/cni/ ifconfig cni0 down ifconfig flannel.1 down ifconfig docker0 down ip link delete cni0 ip link delete flannel.1

systemctl restart kubelet  #重启kubelet

systemctl restart docker  #重启docker

 

7.2、node节点加入集群失败

node节点加入集群报错若如下,是时间不同步问题,按照标题2.6将每台机器的时间进行同步

 

7.3、查看组件状态kubevtl get cs显示unhealthy

 

 

1)可先确认10251、10252端口是否有开启

执行命令j进行查看:

netstat -tunlp

 

2)检查/etc/kubernetes/manifests/kube-scheduler.yaml和/etc/kubernetes/manifests/kube-controller-manager.yaml这两个文件

删除去掉--port=0这一行,保存生效

 

 

3)重启kubelet组件

systemctl restart kubelet

 

4)再次查看组件,显示正常

 

posted @ 2020-10-16 10:26  spellbound  阅读(529)  评论(0编辑  收藏  举报