kubeadm部署k8s-1.28.2集群

今天给大家讲解一下这个版本的实验流程

k8s想必大家以及有所了解,先看一下整体架构:

  1. Kubernetes整体架构:master--nodes

这个是他的工作流程

  1. 部署 Kubernetes 集群方式介绍
部署集群有多种方式:
minikube可以在本地运行Kubernetes的工具,minikube可以在个人计算机(包括Windows,macOS和Linux PC)上运行一个单节点Kubernetes集群,以便您可以试用Kubernetes或进行日常开发工作;
Kind和minikube类似的工具,让你在本地计算机上运行Kubernetes,此工具需要安装并配置Docker;
  1. 集群节点准备
1.1 主机操作系统说明
CentOS7u9
1.2 主机硬件配置说明
Cpu 4核,内存4G,硬盘100G
1.3 主机配置
1.3.1  主机名配置
由于本次使用3台主机完成kubernetes集群部署,其中1台为master节点,名称为k8s-1;其中2台为worker节点,名称分别为:k8s-2及k8s-3
 master节点
hostnamectl set-hostname k8s-1
 k8s-2节点
hostnamectl set-hostname k8s-2
 k8s-3节点
hostnamectl set-hostname k8s-3
1.3.2 主机IP地址配置
 k8s-1节点IP地址为: 192.168.8.30/24
 worker1节点IP地址为: 192.168.8.31/24
 worker2节点IP地址为: 192.168.8.32/24
1.3.3 主机名与IP地址解析
所有集群主机均需要进行配置。
vim /etc/hosts
添加:
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.8.30 k8s-1
192.168.8.31 k8s-2
192.168.8.32 k8s-3
1.3.4  防火墙配置
所有主机均需要操作。
关闭现有防火墙firewalld
systemctl disable firewalld
systemctl stop firewalld
1.3.5 SELINUX配置
所有主机均需要操作。修改SELinux配置需要重启操作系统。
setenforce 0
sed -ri 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
1.3.6 时间同步配置
所有主机均需要操作。最小化安装系统需要安装ntpdate软件。
yum -y install ntpdate
ntpdate time1.aliyun.com
crontab -e
添加:
0 */1 * * * /usr/sbin/ntpdate time1.aliyun.com
1.3.7 配置内核路由转发及网桥过滤
所有主机均需要操作。
添加网桥过滤及内核转发配置文件
vim /etc/sysctl.d/k8s.conf
添加:
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
vm.swappiness = 0  
加载br_netfilter模块
modprobe br_netfilter
echo "modprobe br_netfilter" >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local
查看是否加载
lsmod | grep br_netfilter
1.3.8 安装ipset及ipvsadm
所有主机均需要操作。
安装ipset及ipvsadm
yum -y install ipset ipvsadm
配置ipvsadm模块加载方式
添加需要加载的模块
cat > /etc/sysconfig/modules/ipvs.modules <
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack
EOF
授权、运行、检查是否加载
chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack
  
1.3.10 关闭SWAP分区
修改完成后需要重启操作系统,如不重启,可临时关闭,命令为
swapoff -a
 永久关闭swap分区
vim /etc/fstab
在行首添加#注释掉
# /dev/mapper/centos-swap swap                    swap    defaults        0 0
  
  1. Docker准备
2.1 Docker安装YUM源准备
使用阿里云开源软件镜像站。
2.2 Docker安装
yum -y install docker-ce
2.3 启动Docker服务
systemctl enable --now docker
2.4 修改cgroup方式,添加国内镜像源
/etc/docker/daemon.json 默认没有此文件,需要单独创建
在/etc/docker/daemon.json添加如下内容
vim /etc/docker/daemon.json
添加:
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "registry-mirrors": [
    " https://dockerhub.icu ",
  ]
}
systemctl restart docker
参考国内镜像加速器列表(vpn连接访问):
2.5 cri-dockerd安装
直接拖包安装就好了
yum -y install  cri-dockerd-0.3.8-3.el7.x86_64.rpm
vim /usr/lib/systemd/system/cri-docker.service
修改第10行内容
ExecStart=/usr/bin/cri-dockerd --pod-infra-container-image=registry.k8s.io/pause:3.9 --container-runtime-endpoint fd://
systemctl start cri-docker
systemctl enable cri-docker
  1. kubernetes 1.28.2  集群部署
3.1  集群软件及版本说明(版本1.28.2,各个组件版本相同)
集群所有主机都安装:
Kubeadm 初始化集群、管理集群等
Kubelet 用于接收api-server指令,对pod生命周期进行管理
Kubectl 集群应用命令行管理工具
3.2  kubernetes YUM源准备
添加阿里云YUM源
cat > /etc/yum.repos.d/k8s.repo <
[kubernetes]
name=Kubernetes
enabled=1
gpgcheck=0
repo_gpgcheck=0
EOF
  
3.3 集群软件安装
所有节点均可安装
查看指定版本
yum list kubeadm.x86_64 --showduplicates | sort -r
yum list kubelet.x86_64 --showduplicates | sort -r
yum list kubectl.x86_64 --showduplicates | sort -r
  
安装指定版本
yum -y install  kubeadm-1.28.2-0  kubelet-1.28.2-0 kubectl-1.28.2-0
:不指定版本时,将安装yum源中最新版本 #  yum -y install  kubeadm  kubelet kubectl
  
3.4 配置kubelet
为了实现docker使用的cgroupdriver与kubelet使用的cgroup的一致性,建议修改如下文件内容。
vim /etc/sysconfig/kubelet
添加:
KUBELET_EXTRA_ARGS= "--cgroup-driver=systemd"
  
 设置kubelet为开机自启动即可,由于没有生成配置文件,集群初始化后自动启动
systemctl enable kubelet
3.5  集群镜像准备
查看集群所需的镜像,可使用VPN实现下载。
kubeadm config images list --kubernetes-version=v1.28.2 
  
如果已提前下载导出为镜像文件,可复制后直接导入本地镜像库:
  
docker load -i k8s-1.28.2.tar
  
3.6 集群初始化(注意 --cri-socket 部分)
[root@ k8s-1 ~]# kubeadm init --kubernetes-version=v1.28.2 --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.8.30   --cri-socket unix:///var/run/cri-dockerd.sock
  
正常输出内容如下:
。。。 。。。
Your Kubernetes control-plane has initialized successfully!
To start using your cluster, you need to run the following as a regular user:
   mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config
Alternatively, if you are the root user, you can run:
   export KUBECONFIG=/etc/kubernetes/admin.conf
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
Then you can join any number of worker nodes by running the following on each as root:
kubeadm join 192.168.8.30:6443 --token r9txum.lnoce3pph3sutu5f \
        --discovery-token-ca-cert-hash sha256:fb010b6c37325dc3484216b16c0f06e404843bf060372e351bdfc9d75e7b3dfe
3.7  Worker节点加入群集:
  
3.7.1 在k8s-1节点上执行提示中的内容
   mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config
  export KUBECONFIG=/etc/kubernetes/admin.conf
3.7.2 所有worker节点 上执行加入群集命令:
# 复制提示中的内容,并在尾部添加cri-socket
kubeadm join 192.168.8.30:6443 --token r9txum.lnoce3pph3sutu5f \
        --discovery-token-ca-cert-hash sha256:fb010b6c37325dc3484216b16c0f06e404843bf060372e351bdfc9d75e7b3dfe --cri-socket unix:///var/run/cri-dockerd.sock
:如果出现错误,不能加入集群,可先停止kubelet,清除状态信息,重新加入即可
示例:
systemctl stop kubelet
kubeadm reset --cri-socket unix:///var/run/cri-dockerd.sock
重新配置群集即可
3.8  集群网络插件部署 calico
使用calico部署集群网络
3.8.1 应用operator资源清单文件:
如果提前已下载,执行如下命令:
kubectl create -f tigera-operator.yaml
3.8.2 通过自定义资源方式安装:
如果拖包已下载,直接修改pod对应的网段地址
修改文件第13行,修改为使用kubeadm init ----pod-network-cidr对应的IP地址段
[root@k8s-1 ~]# vim custom-resources.yaml
3.8.3 应用资源清单文件
可提前下载镜像并导入本地镜像库(只在k8s-1节点)
[root@k8s-1 ~]#  docker load < calico-typha.tar
[root@k8s-1 ~]#  docker load < calico_v3.25.1.tar
[root@k8s-1 ~]#  docker load < calico-apiserver.tar
[root@k8s-1 ~]# kubectl create -f custom-resources.yaml
如果没有提前准备的镜像,需vpn连接,等待较长时间。。。
[root@k8s-1 ~]#  watch kubectl get pods -n calico-system
  
直到全部运行,建议开启vpn连接,等待。。。
已经全部运行后,ctrl-C结束监控即可
[root@k8s-1 ~]#  kubectl get pods -n calico-system
  
  1. 验证集群可用性
4.1 查看所有的节点
[root@k8s-1 ~]# kubectl get nodes
注:如果出现如下状态,说明calico网络插件未装好
[root@k8s-1 ~]# kubectl get nodes
NAME       STATUS     ROLES           AGE    VERSION
k8s-1   NotReady   control-plane     3m4s   v1.28.2
k8s-2   NotReady             58s    v1.28.2
k8s-3   NotReady             4s     v1.28.2
4.2 查看集群健康情况
[root@k8s-1 ~]# kubectl get cs
4.3 查看kubernetes集群pod运行情况
[root@k8s-1 ~]# kubectl get pods -n kube-system
  
4.4 再次查看calico-system命名空间中pod运行情况
[root@k8s-1 ~]#  kubectl get pods -n calico-system
  
补充辅助操作:设置kubectl命令行工具自动补全功能
   
yum install -y bash-completion
source /usr/share/bash-completion/bash_completion
source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc
  
为了以后我们写yaml文件方便些,这里设置tab键空格个数
   
[root@master ~]# vim .vimrc
set tabstop=2
[root@master ~]# source .vimrc
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值