K8S集群安装

安装Docker

复制代码
sudo yum remove docker*
sudo yum install -yum-utils
​
#配置docker的yum镜像仓库
sudo yum-config-manager \
--add-rep \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
​
#安装指定版本docker...
sudo yum install -y docker-ce-19.03.9 docker-ce-cli-19.03.9 containerd.io-1.4.6
​
#设置开机自启
systemctl enable docker --now
​
#换阿里云镜像加速一下从阿里云拷贝出来的(扫码登陆阿里云->控制台->容器镜像服务)
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://hglujpd5.mirror.aliyuncs.com"],
  "exec-opts":["native.cgroupdriver=systemd"]
}
EOF
​
sudo systemctl daemon-reload
sudo systemctl enable --now docker

安装Kubernetes集群

1. 基本环境 CentOS7.9

复制代码
#分别修改每个机器的hostname,并且能保证内外相互ping通
hostnamectl set-hostname k8s-master
hostnamectl set-hostname k8s-worker1
hostnamectl set-hostname k8s-worker2
​
#分别对3个节点配置本地域名解析,这是能根据域名ping通的关键
vi /etc/host
172.31.0.2 k8s-master
172.31.0.3 k8s-worker1
172.31.0.4 k8s-worker2
​
#将SELinux设置为permissive模式(相当禁用)
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
​
#关闭swap 检查:free -m  Swap:列表要全部为0
swapoff -a
sed -ri 's/.*swap.*/#&/' /etc/fstab 
​
#允许iptables检查桥接流量
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfiler
EOF
​
sudo modprobe overlay
sudo modprobe br_netfilter
​
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf 
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables  = 1
net.ipv4.ip_forward                 = 1
EOF
​
#保存设置
sudo sysctl --system 

2. 安装kubelet、kubeadm、kubectl

复制代码
#配置k8s镜像地址
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https:https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
​
#---------------------上下两部分,分开执行-----------------
​
#安装kubelet(K8S组件下载)、kubeadm(K8S安装工具)、kubectl(程序员命令控制)
sudo yum install -y kubelet-1.20.15 kubeadm-1.20.15 kubectl-1.20.15 --disableexcludes=kubernetes
​
# 在每个节点执行,意思告知每个节点的主节点是会谁(很重要!很重要!很重要!这个跟kubeadm init --control-plane-endpoint=k8s-master 要保持一致
# 其实这句我在上面的本地域名解析配置过来了 (可以执行或者不执行)
echo "172.31.0.2 k8s-master >> /etc/hosts
​
#设置开机自启
sudo systemctl enable --now kubelet
​
#检查是否正常启动kubelet,注意kubelet如果是 “闪开、闪停” 说明正常  (它必须准备好,要不然kubeadm 执行初始化时,无法下载对映的K8S组件)
systemctl status kubelet

3.初始化master节点

复制代码
# 1.查看kubeadm所需镜像,一般出现版本不兼容报错时,对比检查用的 (可忽略)
kubeadm config images list
​
# 根据 config images list 下载所需要的组件镜像
#docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.20.15
#docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.20.15
#docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.20.15
#docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.20.15
#docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2
#docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.13-0
#docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns/coredns:v1.7.0
​
# 2.因为第四步会有这那问题,所以镜像先下载到阿里云镜像仓库,版本参考第一步(很关键,要不然K8S安装没法继续进行了)在master节点执行下面脚本进行下载
# 至于其它节点只需要kube-proxy,可以将脚本其它组件镜像删除后执行,或者不删除直接执行
# registry.cn-hangzhou.aliyuncs.com/ldj_containers 阿里云镜像地址,其中ldj_containers是我自定义的目录
# 网上的registry.cn-hangzhou.aliyuncs.com/google_containers中的google_containers 我试过一直超时,本人怀疑压根没有K8S相关组件的镜像
​
sudo tee ./images.sh <<-'EOF'
#!/bin/bash
images=(
kube-apiserver:v1.20.15
kube-controller-manager:v1.20.15
kube-scheduler:v1.20.15
kube-proxy:v1.20.15
pause:3.2
etcd:3.4.13-0
coredns:v1.7.0
)
for imageName in ${images[@]}; do
docker pull registry.cn-hangzhou.aliyuncs.com/ldj_containers/$imageName
done
EOF
​
# 3.ls上面脚本执行会生成一个images.sh 文件,下面这句授权执行下载
chmod +x ./images.sh && ./images.sh
​
# 4.这里很容易出错,版本不匹配、自己master节点没写对、镜像找不到又会使用国外默认镜像导致超时等,所以要留意错误日志或者警告日志,根据日志一一解决
# 其它ip地址需要保证网络范围不重叠,简单点ip开头不一样能保证不重叠,只修改apiserver-advertise-address和control-plane-endpoint就行
# 如果修改其它ip,那么后面下载的calico.yaml也要修改成一致的
​
kubeadm init \
--apiserver-advertise-address=172.31.0.2 \
--control-plane-endpoint=k8s-master
--images-repository registry.cn-hangzhou.aliyuncs.com/ldj_containers \
--kubernetes-version v1.20.15 \
--service-cidr=10.96.0.0/16 \
--pod-network-cidr=192.168.0.0/16

控制台打印出控制面板初始化成功后,复制关键信息并记录到记事本,安装提示执行

复制代码
#在主节点执行
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
复制代码
# 在主节点执行
# 下载k8s的资源文件 (网络插件)
curl https://docs.projectcalico.org/manifests/calico.yaml -O
​
#下载网络插件
kubectl apply -f calico.yaml
复制代码
#子节点加入主节点 (在子节点执行)
kubeadm join k8s-master:6443 --token xxxxxxxxxxxxxxxx --discovery-token-ca-cert-hash yyyyyyyyyyyyyyyy
​
#如果令牌过期重新生成新的令牌
kubectl token create --print-joint-command
相关推荐
阿里云云原生5 小时前
不改代码也能监控 AI Agent?揭秘 OBI 如何在内核层精准解析 GenAI 语义流量
云原生·agent
众人皆醒我独醉5 小时前
Pod 一直 Terminating,死活删不掉?三个凶手,每一个你都意想不到
面试·kubernetes
飞翔沫沫情7 小时前
K8s Alloy 采集 Pod 控制台日志
云原生·容器·kubernetes
潮起鲸落入海12 小时前
Kubernetes Metric Server, Quota and Limits
容器·kubernetes
梦想的颜色12 小时前
Docker 容器化本地部署 Claude Code 完整硬核教程|隔离沙盒 + 国产模型直连 + 持久化 Skill
运维·容器·ai 工程化·沙盒隔离·docker 本地部署·claude code硬核实战·国内国产模型接入
摇滚侠13 小时前
云原生 Java 架构师的第一课 K8s+Docker+KubeSphere+DevOps 19-25
java·云原生·kubernetes
渣渣盟13 小时前
Docker 运维常用命令手册(含扩容与实战)
运维·docker·容器
我叫张小白。14 小时前
一个微服务电商+社区项目(瓷韵app)的技术深度复盘
docker·微服务·云原生·架构
咕噜咕噜的猪大侠15 小时前
《K8s 核心知识梳理:Deployment 滚动更新、JobCronJob、DaemonSet 和 Service》
云原生·容器·kubernetes
虚心的百褶裙15 小时前
远程调用服务架构设计及zookeeper技术详解(下篇)
分布式·zookeeper·云原生