保姆及教程安装“一主两备”Kubernetes 集群

k8s快速部署一主两备集群环境

环境准备

在开始之前,部署Kubernetes 集群机器需要满足以下几个条件:
一台或多台机器,操作系统CentOS7.x-86_x64
硬件配置:2GB 或更多RAM,2 个CPU 或更多CPU,硬盘30GB 或更多
集群中所有机器之间网络互通
可以访问外网,需要拉取镜像
禁止swap 分区

10.0.0.110 master	#主节点
10.0.0.111 node1	#工作节点1
10.0.0.112 node2	#工作节点2

所有机器上面的操作

关闭防火墙

systemctl stop firewalld #关闭
systemctl disable firewalld #关闭开机自启

关闭selinux

sed -i 's/enforcing/disabled/' /etc/selinux/config # 永久关闭
setenforce 0 # 临时

关闭swap

swapoff -a # 先停止swap
vim /etc/fstab # 打开这个目录,永久删掉红框里面的,如下图
mount -a #重新挂载

版权所有

安装基础所需

yum install net-tools vim tree htop iftop gcc gcc-c++ glibc \
iotop lrzsz sl wget unzip telnet nmap nc psmisc \
dos2unix bash-completion bash-completion-extra sysstat \
rsync nfs-utils httpd-tools chrony ntpdate screen lsof -y

根据规划设置主机名

hostnamectl set-hostname master		#单独在10.0.0.110里面更改
hostnamectl set-hostname node1		#单独在10.0.0.111里面更改
hostnamectl set-hostname node2		#单独在10.0.0.112里面更改

配置hosts文件

cat >> /etc/hosts<<EOF
10.0.0.110 master
10.0.0.111 node1
10.0.0.112 node2
EOF

同步yum源

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup	#备份原有源
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
#同步阿里云源
yum makecache     #生成缓存

开启ipv4内核转发模块 br_netfilter 模块

modprobe br_netfilter					#将 br_netfilter 模块加载到内核中,从而使其生效

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

sysctl -p /etc/sysctl.d/k8s.conf

开启ipvs

cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
EOF

chmod 755 /etc/sysconfig/modules/ipvs.modules && \
bash /etc/sysconfig/modules/ipvs.modules && \
lsmod | grep -e ip_vs -e nf_conntrack_ipv4

安装管理ipvs规则的工具ipvsadm

yum install -y ipset ipvsadm

时间同步

rm -rf /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ntpdate cn.pool.ntp.org
crontab -e
	* */1 * * * /usr/sbin/ntpdate cn.pool.ntp.org &> /dev/null\

安装containerd

yum install -y yum-utils device-mapper-persistent-data lvm2
yum install -y bash-completion vim lrzsz wget expect net-tools nc nmap ee
dos2unix htop iftop iotop unzip telnet sl psmisc nethogs glances bc pdate
openldap-devel
yum-config-manager --add-repo https://mirrors.aliyun.com/dockerce/linux/centos/docker-ce.repo
yum install containerd.io-1.6.6 -y

修改containerd的配置文件

mkdir -p /etc/containerd
containerd config default > /etc/containerd/config.toml
vim /etc/containerd/config.toml
把SystemdCgroup = false修改成SystemdCgroup = true
把sandbox_image = "k8s.gcr.io/pause:3.6"修改成sandbox_image =
"registry.aliyuncs.com/google_containers/pause:3.9"
找到config_path = "",修改成:config_path = "/etc/containerd/certs.d"

配置contianerd加速器

mkdir /etc/containerd/certs.d/docker.io/ -p
cat > /etc/containerd/certs.d/docker.io/hosts.toml <<EOF
[host."https://vh3bm52y.mirror.aliyuncs.com",host."https://registry.dockerbacn.com"]
capabilities = ["pull"]
EOF

修改containerd的管理工具

cat > /etc/crictl.yaml <<EOF
runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
timeout: 10
debug: false
EOF

启动containerd

systemctl start containerd
systemctl enable containerd

配kubernetes.repo源

cat > /etc/yum.repos.d/kubernetes.repo <<EOF
[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

安装 kubeadm、kubelet、kubectl

yum install -y kubelet-1.26.0 kubeadm-1.26.0 kubectl-1.26.0

设置kubelet开机自启

systemctl enable --now kubelet

容器运行时 CNI

crictl config runtime-endpoint /run/containerd/containerd.sock

关机快照!关机快照!关机快照!关机快照!关机快照!关机快照!

接下来的操作在单台master上面

修改dns解析

vim /etc/resolv.conf
#追加
nameserver	223.5.5.5
nameserver	223.6.6.6
#为了加速拉取镜像而转发dns解析

在这里插入图片描述

生成初始化配置文件

kubeadm config print init-defaults > kubeadm.yaml

修改初始化配置文件

vim kubeadm.yaml

advertiseAddress: 10.0.0.0.81  # apiserver 节点内网IP
name: master # master的主机名
imageRepository: registry.aliyuncs.com/google_containers #修改成阿里云镜像源
podSubnet: 10.244.0.0/16  #Pod 网段,calico插件需要使用这个网段
#行尾加入如下配置 
#设置网络转发模式选择ipvs
---
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
mode: ipvs
#设置cgroup驱动 通过systemd进行一起管理
---
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
cgroupDriver: systemd

在这里插入图片描述

下载相关仓库镜像

kubeadm config images pull --config kubeadm.yaml
#这里需要耐心等待,这里的快慢取决于网络的速度,一直没反应属于正常状态
#error报错中有“timeout”证明网络不好,请更换网络环境后,重新拉取

在这里插入图片描述

下载用于容器间通信的网络插件

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
#一样,这里的快慢取决于网络环境

初始化一个 Kubernetes 集群

kubeadm init --config kubeadm.yaml
#运行完成之后会出现下图结果
#其中1、2、3、4在master上运行
#5复制完整后在node1和node2上运行

在这里插入图片描述

在node1和node2上操作

加入master

在这里插入图片描述

#如果node1和node2上面执行报错可尝试在三台机器上面执行以下命令#

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

在master机上查看当前集群中所有节点的状态和信息

kubectl get nodes
#如果三台机器的“STATUS”状态为"NotReady“,请耐心等待,这里也需要网络环境的支持

在这里插入图片描述

查看镜像状态

kubectl get pod -A	#Running这个状态是正常的

在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值