k8s集群安装教程

环境centos7.9 安装地址:https://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/?spm=a2c6h.25603864.0.0.4a85f5adRRKnVY

服务器要求:
建议最小硬件配置:2核CPU、2G内存、20G硬盘。
服务器可以访问互联网,会联网下载镜像

初始化配置:

关闭Selinux

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

关闭Swap

swapoff -a  # 临时
sed -ri 's/.*swap.*/#&/' /etc/fstab    # 永久

根据规划设置主机名
hostnamectl set-hostname <hostname>

确保网络桥接的数据包经过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

安装Docker:

#配置yum源
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安装docker
sudo yum install -y docker-ce docker-ce-cli containerd.io
yum install -y docker-ce-20.10.7 docker-ce-cli-20.10.7  containerd.io-1.4.6
# 启动docker
systemctl enable docker --now

配置镜像下载加速器和设置Cgroup驱动:

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://82m9ar63.mirror.aliyuncs.com"],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

安装kubeadm,kubelet和kubectl

cat <<EOF | sudo tee /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
exclude=kubelet kubeadm kubectl
EOF

sudo yum install -y kubelet-1.20.9 kubeadm-1.20.9 kubectl-1.20.9 --disableexcludes=kubernetes

sudo systemctl enable --now kubelet

下载各个机器需要的镜像

sudo tee ./images.sh <<-'EOF'
#!/bin/bash
images=(
kube-apiserver:v1.20.9
kube-proxy:v1.20.9
kube-controller-manager:v1.20.9
kube-scheduler:v1.20.9
coredns:1.7.0
etcd:3.4.13-0
pause:3.2
)
for imageName in ${images[@]} ; do
docker pull registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images/$imageName
done
EOF
   
chmod +x ./images.sh && ./images.sh

所有机器添加master域名映射,以下需要修改为自己的

echo "172.31.0.4 cluster-endpoint" >> /etc/hosts

注意以上操作所有机器都执行

master机器:

kubeadm init \
--apiserver-advertise-address=172.31.0.4 \
--control-plane-endpoint=cluster-endpoint \
--image-repository registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images \
--kubernetes-version v1.20.9 \
--service-cidr=10.96.0.0/16 \
--pod-network-cidr=192.168.0.0/16

初始化完成后,根据提示信息,拷贝kubectl工具认证文件到默认路径

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

使用kubectl工具查看节点状态
kubectl get nodes

执行上述输出的“kubeadm join”命令,将本节点加入到Kubernetes集群中
注:由于网络插件还没有部署,节点会处于“NotReady”状态

node节点:

将Node节点加入集群
执行上述输出的“kubeadm join”命令,将本节点加入到Kubernetes集群中
kubeadm join 192.168.1.71:6443 --token 7gqt13.kncw9hg5085iwclx
--discovery-token-ca-cert-hash sha256:66fbfcf18649a5841474c2dc4b9ff90c02fc05de0798ed690e1754437be35a01

master节点:
安装网络组件
这里使用Calico作为Kubernetes的网络插件,负责集群中网络通信。
创建Calico网络组件的资源:

curl https://docs.projectcalico.org/manifests/calico.yaml -O
kubectl apply -f calico.yaml

安装Dashboard
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml

浏览器访问“https://<节点IP地址>:30001”,将看到Dashboard登录界面。
创建服务账号并授权管理员权限:

创建用户
kubectl create serviceaccount dashboard-admin -n kubernetes-dashboard

用户授权

kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kubernetes-dashboard:dashboard-admin

获取用户Token

kubectl create token dashboard-admin -n kubernetes-dashboard

部署过程常见问题:
问题一:hostname只能为小写字母数字字符、'-'或'.'组成

问题二:由于master节点防火墙没有关闭,导致node连接失败

解决方案:

关闭防火墙

systemctl disable firewalld --now

posted @ 2024-06-22 22:52  9912  阅读(17)  评论(0编辑  收藏  举报