kubeadm安装K8S,大陆网络

架构: 安装单台master做kubernetes控制平面,添加节点到控制平面

            一个master节点,两个node节点

1.集群环境介绍

IP 节点信息
10.2.83.181 k8s-master
10.2.83.183 k8s-node1
10.2.83.182 k8s-node2

 

 

2.系统优化

2.1 安装新内核

原内核信息:

 #升级到新版,升级方式如下:

wget https://elrepo.org/linux/kernel/el7/x86_64/RPMS/kernel-lt-5.4.183-1.el7.elrepo.x86_64.rpm
wget https://elrepo.org/linux/kernel/el7/x86_64/RPMS/kernel-lt-devel-5.4.183-1.el7.elrepo.x86_64.rpm

yum -y install kernel-lt-5.4.183-1.el7.elrepo.x86_64.rpm
yum -y install kernel-lt-devel-5.4.183-1.el7.elrepo.x86_64.rpm

 

#调整默认内核启动

grub2-set-default "CentOS Linux (5.4.183-1.el7.elrepo.x86_64) 7 (Core)"

#检查是否修改正确并重启系统

grub2-editenv list

reboot

2.2 开启IPVS支持

创建/etc/sysconfig/modules/ipvs.modules文件,内容如下:

#!/bin/bash
ipvs_modules="ip_vs ip_vs_lc ip_vs_wlc ip_vs_rr ip_vs_wrr ip_vs_lblc ip_vs_lblcr ip_vs_dh ip_vs_sh ip_vs_fo ip_vs_nq ip_vs_sed ip_vs_ftp nf_conntrack"
for kernel_module in ${ipvs_modules}; do
/sbin/modinfo -F filename ${kernel_module} > /dev/null 2>&1
if [ $? -eq 0 ]; then
/sbin/modprobe ${kernel_module}
fi
done

最后,执行如下命令使配置生效:

chmod 755 /etc/sysconfig/modules/ipvs.modules
sh /etc/sysconfig/modules/ipvs.modules
 lsmod | grep ip_vs

 

 

 

 2.3 关闭防火墙和selinux和swap

systemctl stop firewalld && systemctl disable firewalld
setenforce 0
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

接着,还需要关闭系统的交换分区,执行如下命令:

swapoff -a
cp /etc/fstab /etc/fstab.bak
cat /etc/fstab.bak | grep -v swap > /etc/fstab

然后,还需要修改iptables设置,在/etc/sysctl.conf中添加如下内容:

vm.swappiness = 0
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1

最后,执行如下命令,以使设置生效:

sysctl -p

2.4 主机名本地解析配置

 

 

 

 以上系统优化三个节点都需要执行。

3. 安装K8S

3.1 安装docker环境(三个节点操作)

# 卸载docker
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine


#添加阿里云docker yum源,官方的虽然慢点但是还可以接受                  
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

#安装必要依赖
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
##默认安装最新版
yum install docker-ce docker-ce-cli containerd.io -y
systemctl start docker
systemctl enable docker

#配置docker镜像使用阿里云加速器,需要注册阿里云账号,也可以用DaoCloud的
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://xxxxx.mirror.aliyuncs.com"]
}
EOF
PS:加速器配置
进入aliyun
搜索docker镜像加速器--注册后生成加速器信息在服务器进行配置

 


 

 

 

sudo systemctl daemon-reload
sudo systemctl restart docker

 

3.2 安装kubeadm,kubelet,kubectl

#添加阿里云kubernetes源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

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

yum -y install kubeadm kubectl kubelet

 安装完之后需要设置开机自启否则可能会报错

systemctl daemon-reload && systemctl enable kubelet

 

3.3 初始化集群(master节点)

在没有开通FQ网络的执行命令:

kubeadm init --kubernetes-version=1.23.4 --apiserver-advertise-address=10.2.83.181 --image-repository registry.aliyuncs.com/google_containers --service-cidr=172.100.0.0/16 --pod-network-cidr=172.110.0.0/16 --ignore-preflight-errors=all

可能报错:

failed with error: Get “http://localhost:10248/healthz“

解决:修改/etc/docker/daemon.json  替换原来的docker加速器为native.cgroupdriver=systemd

[root@k8s-master ~]# vim /etc/docker/daemon.json

{
"exec-opts": ["native.cgroupdriver=systemd"]
}

重启docker

systemctl restart docker

systemctl  start kubelet

在确保kubelet状态为running的时候在初始化可以成功,安装成功会有successfully!


开通FQ网络:

kubeadm init --kubernetes-version=1.23.4 --apiserver-advertise-address=10.2.83.181 --service-cidr=172.100.0.0/16 --pod-network-cidr=172.110.0.0/16 --ignore-preflight-errors=all

 初始化完成后确认:

查看pod所属的命名空间

kubectl get pod --all-namespaces 

 

runnding的状态是正常的,但是此时可能有一些的pending的状态,原因是没有安装网络组件flannel,安装方法:

https://github.com/flannel-io/flannel 

kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml 

安装完之后再查看状态发现都是running状态就是正常的

 

kubectl get pod --all-namespaces 

 

3.4 其他节点需要安装

docker 、kubeadm,kubelet,kubect同master节点,docker需要启动,其他服务无需启动

 

3.5 其他节点加入集群

kubeadm token create --print-join-command  //查看node节点join的命令

 

其他节点执行该命令后在master节点执行:

 

[root@k8s-master ~]# kubectl get nodes  //查看状态为ready就是正常的
NAME STATUS ROLES AGE VERSION
k8s-master Ready control-plane,master 23h v1.23.4
k8s-node1 Ready <none> 114m v1.23.4
k8s-node2 Ready <none> 112m v1.23.4

 

此时就完成了K8S的初步部署。

K8S的相关命令:

https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#get 

https://www.cnblogs.com/testzcy/p/13025897.html

 

posted @ 2022-03-15 10:54  学的都会  阅读(37)  评论(0编辑  收藏  举报