Kubernetes学习记录(二):使用kubeadm快速部署一个单master集群
1. 配置要求
至少三台虚拟机,一个master两个node
硬件配置:2GBRAM,2个CPU,30GB磁盘
操作系统:centos 7.x
禁止swap分区
可以访问外网,网络互通
角色 | IP |
k8s-master | 192.168.241.133 |
k8s-node1 | 192.168.241.132 |
k8s-node2 | 192.168.241.131 |
2. 配置步骤
########################在所有节点上执行#####################################
(1)关闭防火墙
systemctl stop firewalld systemctl disable firewalld #永久
(2)关闭selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config # 永久 setenforce 0 # 临时
(3)关闭swap
swapoff -a #临时 vim /etc/fstab # 永久,注释掉swap的开机启动
(4)设置主机名
hostnamectl set-hostname <hostname>
#####################################################################
(5)在master节点中添加hosts
cat >> etc/hosts << EOF 192.168.31.61 k8s-master 192.168.31.62 k8s-node1 192.168.31.63 k8s-node2 EOF
(6)修改master节点的网络配置
cat > /etc/sysctl.d/k8s.conf <<EOF net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF
(7)配置生效
sysctl --system
#################以下在所有节点上执行##########################
(8)同步时钟
ntpdate time.windows.com
(9)安装docker,并修改镜像源,然后重启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-18.06.1.ce-3.el7
systemctl enable docker && systemctl start docker
cat > /etc/docker/daemon.json << EOF {"registry-mirrors":["https://dr0fajwf.mirror.aliyuncs.com"]} EOF
systemctl restart docker
(10)修改yum源
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=1 repo_gpgcheck=1 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF
(11)安装kubelet kubeadm kubectl
yum install -y kubelet kubeadm kubectl
默认最新版,可以指定版本
##################################################################
(12)初始化k8s集群
kubeadm init > --apiserver-advertise-address=192.168.241.133 > --image-repository registry.aliyuncs.com/google_containers > --kubernetes-version v1.23.5 > --service-cidr=10.96.0.0/12 > --pod-network-cidr=10.244.0.0/16
(13)成功后看到提示信息,需要拷贝三个东西,还有提示如何让node加入集群中
(14)查看node状态,可能是NotReady,需要下载一个yml文件
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
(15)如果有需要的话可以安装bashboard
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.0/aio/deploy/recommended.yaml
下载完成后打开,修改Service,暴露端口
然后应用这个yaml文件就可以
kubectl apply -f recommended.yaml
(16)访问bashboard
访问方式见 安装Kubernetes Dashboard | Kuboard
(17)测试
最后通过以下几个指令查看一下集群的状态:
尝试部署一个nginx
kubectl create deployment nginx --image=nginx kubectl expose deployment nginx --port=80 --type=NodePort
查看nginx的信息,使用浏览器访问
kubectl进入pod的指令和docker进入容器的指令差不多,bash前面不用加 -- 也可以,不过会提示说将来版本会弃用完全像docker的这种写法
3. k8s集群初始化流程
- 检查系统环境是否满足,例如swap是否关闭、配置是否满足等
- 下载所需镜像,kubeadm config images pull
- 为kubelet创建配置文件并启动
- 为apiserver、etcd生成https证书
- 生成连接apiserver的kubeconfig文件
- 容器启动master组件
- 将涉及的配置文件存储到configmap
- 设置master节点不可调度pod
- 启用bootstrap自动为kubelet颁发证书
- 安装插件coreDNS、kube-proxy
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理