在线版
kubeadm
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
关闭selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config #永久
setenforce 0 #临时
关闭swap(k8s禁止虚拟内存以提高性能)
sed -ri 's/.*swap.*/#&/' /etc/fstab #永久
swapoff -a #临时
在master添加hosts
cat >> /etc/hosts << EOF
192.168.172.134 k8smaster
192.168.172.135 k8snode
EOF
设置网桥参数
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system #生效
时间同步
# 下载ntp插件
yum -y install ntp
# 启动ntpd服务
service ntpd start
# 查看服务状态
service ntpd status
# 设置同步地址
ntpdate 210.72.145.44 #国家授时中心SNTP校时服务
安装Docker
# 安装wget插件
yum install wget -y
# 更新本地源
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
# 安装docker
yum -y install docker-ce-19.03.13
# 创建文件夹
mkdir /etc/docker
# 配置加速器加速下载 (https://cr.console.aliyun.com/)
vi /etc/docker/daemon.json
# 添加以下内容
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
# 开启自动重启
systemctl enable docker.service
安装kubeadm,kubelet ,kubectl
# 安装 kubeadm,kubelet 和 kubectl
yum -y install kubelet-1.19.4 kubeadm-1.19.4 kubectl-1.19.4
# 设置开机启动
systemctl enable kubelet.service
# 查看有没有安装:
yum list installed | grep kubelet
yum list installed | grep kubeadm
yum list installed | grep kubectl
部署Kubernetes Master主节点
kubeadm init --apiserver-advertise-address=192.168.101.111 # 主机ip
--image-repository registry.aliyuncs.com/google_containers # 镜像地址
--kubernetes-version v1.19.4 # k8s版本
--service-cidr=192.168.101.210/12 # service ip
--pod-network-cidr=192.168.101.211/16 # pod ip
# 如果报错就试着重启下
kubeadm init所做的事:
01-进行一系列检查,以确定这台机器可以部署kubernetes
02-生成kubernetes对外提供服务所需要的各种证书可对应目录
/etc/kubernetes/pki/*
03-为其他组件生成访问kube-ApiServer所需的配置文件
ls /etc/kubernetes/
admin.conf controller-manager.conf kubelet.conf scheduler.conf
04-为 Master组件生成Pod配置文件。
ls /etc/kubernetes/manifests/.yaml
kube-apiserver.yaml
kube-controller-manager.yaml
kube-scheduler.yaml
05-生成etcd的Pod YAML文件。
ls /etc/kubernetes/manifests/.yaml
kube-apiserver.yaml
kube-controller-manager.yaml
kube-scheduler.yaml
etcd.yaml
06-一旦这些 YAML 文件出现在被 kubelet 监视的/etc/kubernetes/manifests/目录下,kubelet就会自动创建这些yaml文件定义的pod,即master组件的容器。master容器启动后,kubeadm会通过检查localhost:6443/healthz这个master组件的健康状态检查URL,等待master组件完全运行起来
07-为集群生成一个bootstrap token
08-将ca.crt等 Master节点的重要信息,通过ConfigMap的方式保存在etcd中,工后续部署node节点使用
09-最后一步是安装默认插件,kubernetes默认kube-proxy和DNS两个插件是必须安装的
执行安装后出现的3行命令
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rK9gtqct-1673247847065)(null)]
检查是否成功:kubectl cluster-info
查看现有节点状态:kubectl get nodes
健康检查:curl -k https://localhost:6443/healthz
部署Kubernetes Node节点
在node节点上执行master安装时出现的join命令
kubectl get nodes:
状态为notReady,需要安装通讯插件
添加 网络插件
# 在k8s中安装calico
kubectl apply -f https://docs.projectcalico.org/v3.9/manifests/calico.yaml
# 确认一下calico是否安装成功
kubectl get pods --all-namespaces -w
再查看节点状态:kubectl get nodes(多刷几次)
查看组件状态等待网络插件创建完成:kubectl get pods -n kube-system