介绍使用 kubeadm 搭建 k8s 集群
部署方式
准备工作
节点
一主三从
关闭防火墙
# 暂时关闭
systemctl stop firewalld
# 永久关闭
systemctl disable firewalld
# 查看状态
systemctl status firewalld
关闭selinux
# 临时关闭
setenforce 0
# 永久关闭
sed -i 's/enforcing/disabled/' /etc/selinux/config
关闭swap
# 临时关闭
swapoff -a
# 永久关闭
sed -ri 's/.*swap.*/#&/' /etc/fstab
配置hostname
# 命令设置hostname
hostnamectl set-hostname <hostname>
# 编辑hostname
vim /etc/hostname
配置hosts
# 添加hosts
cat >> /etc/hosts << EOF
x.x.x.11 k8s-master
x.x.x.12 k8s-node1
x.x.x.13 k8s-node2
x.x.x.1 k8s-node3
EOF
将桥接的IPv4流量传递到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
时间同步
yum install ntpdate -y
ntpdate time.windows.com
安装docker
下载
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
安装
yum -y install docker-ce
启动
systemctl start docker
配置镜像加速
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"]
}
刷新配置
systemctl daemon-reload
重启
systemctl restart docker
查看配置是否生效
docker info
添加阿里云软件源
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
安装kubeadm、kubelet、kubectl
安装
yum install -y kubelet-1.23.0 kubeadm-1.23.0 kubectl-1.23.0
启动 start stop status
systemctl enable kubelet
初始化k8s集群
主节点执行 初始化命令
kubeadm init \
--apiserver-advertise-address=x.x.x.11 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.23.0 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16 \
--ignore-preflight-errors=all
apiserver-advertise-address 集群通告地址
image-repository 由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址
kubernetes-version K8s版本,与上面安装的一致
service-cidr 集群内部虚拟网络,Pod统一访问入口
pod-network-cidr Pod网络,与下面部署的CNI网络组件yaml中保持一致
初始化完成后复制打印的join命令
kubeadm join 10.1.4.11:6443 --token v9853j.tugfmmpxi6rtaxmx \
--discovery-token-ca-cert-hash sha256:60b93914e551e654853250b99a06c6c1293e6879cd4031f4c639294c5d8e1338
拷贝k8s认证文件
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
各个从节点执行join命令
kubeadm join 10.1.4.11:6443 --token v9853j.tugfmmpxi6rtaxmx \
--discovery-token-ca-cert-hash sha256:60b93914e551e654853250b99a06c6c1293e6879cd4031f4c639294c5d8e1338
若token失效则在主节点重新创建
kubeadm token create --print-join-command
在主节点查看节点
kubectl get nodes
此时网络插件没有部署,各个节点处于NotReady状态。
calico
calico是一个纯三层的数据中心网络方案,是目前Kubernetes主流的网络方案
- 主节点下载calico的yaml文件
wget https://docs.projectcalico.org/v3.14/manifests/calico.yaml
- 修改配置文件的CALICO_IPV4POOL_CIDR,与init的Pod网络保持一致
name: CALICO_IPV4POOL_CIDR
value: "10.244.0.0/16"
- 部署calico
kubectl apply -f calico.yaml
- 查看pod
kubectl get pods -n kube-system
所有calico的pod都running之后,所有节点也有准备就绪。
以上完成集群的搭建。
引用
https://blog.csdn.net/tiny_du/article/details/123823093