kubeadm搭建K8s集群
前言:项目中碰到了,之前对k8s相关的操作都不是很了解,这篇笔记搭建一个简单小型的K8s集群并且进行简单操作学习
参考文章:https://kubernetes.io/zh-cn/docs/concepts/overview/
参考文章:https://kubernetes.io/zh-cn/docs/reference/setup-tools/kubeadm/
关于Kubernetes
Kubernetes 是一个可移植、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化。 Kubernetes 拥有一个庞大且快速增长的生态,其服务、支持和工具的使用范围相当广泛。
Kubernetes 这个名字源于希腊语,意为"舵手"或"飞行员"。k8s 这个缩写是因为k和s之间有八个字符的关系。Google在2014年开源了Kubernetes项目。Kubernetes建立在Google大规模运行生产工作负载十几年经验的基础上,结合了社区中最优秀的想法和实践。
k8s集群搭建
172.17.0.9 k8s-master-172-17-0-5
172.17.0.14 k8s-node1-172-17-0-14
172.17.0.5 k8s-node2-172-17-0-9
环境初始化
关闭防火墙和selinux
systemctl stop firewalld systemctl disable firewalld setenforce 0 sed -i 's/enforcing/disabled/' /etc/selinux/config
关闭swap
swapoff -a sed -ri 's/.*swap.*/#&/' /etc/fstab
master节点配置hosts
这边配置hosts只需要在master节点中进行配置,我这边master节点是172.17.0.9,所以在172.17.0.9上面进行配置如下内容
172.17.0.5 k8s-master-172-17-0-5 172.17.0.14 k8s-node1-172-17-0-14 172.17.0.9 k8s-node2-172-17-0-9
将桥接的IPv4流量传递到iptables的链
将三台机器都把桥接的IPv4和IPv6的流量传递到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
在三台机器上都进行添加docker的yum源,并且安装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 docker --version
三台服务器上面都配置镜像加速阿里源,如下图所示
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://p4e9di9t.mirror.aliyuncs.com"] } EOF systemctl daemon-reload systemctl restart docker
安装k8s
三台服务器都执行,添加k8s的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=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.18.0 kubeadm-1.18.0 kubectl-1.18.0 systemctl enable kubelet
部署K8s Master
kubeadm初始化并下载镜像
在master节点上执行下面的命令,进行初始化kubeadm,service-cidr和pod-network-cidr只要是和当前网段不冲突的ip就可以,我这边的话主机master内网ip为172.17.0.5,不跟172.17.0.5/20所在的网段冲突就可以了
kubeadm init \ --apiserver-advertise-address=172.17.0.5 \ --image-repository registry.aliyuncs.com/google_containers \ --kubernetes-version v1.18.0 \ --service-cidr=10.96.0.0/12 \ --pod-network-cidr=10.244.0.0/16
安装结束,如下图所示
复制配置文件并授权
在master节点上执行下面的命令,把Kubernetes集群的管理员kubeconfig文件复制到当前用户目录下并设置正确的权限,这样当前用户就能通过kubectl命令来管理集群了。
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
查看节点
在master节点上执行下面命令,发现只有master一个节点,并且状态是"未准备"
kubectl get nodes
部署K8s Slave
把从节点加入到master当中去,从而组成一个集群,所以接下来的操作基本都是在141/142 从节点上面执行的。
kubeadm token create --print-join-command
将节点node加入master集群中
复制master上面生成的kubeadm命令,在从节点node1和node2上面分别执行
kubeadm join 172.17.0.5:6443 --token zi4lq3.m34hwwgj4h1uuhyi --discovery-token-ca-cert-hash sha256:4ff053659aedec45ce201c1d465fa7c8494ef9f4975e70441b4563b21ecc7bfd
将上面两个节点加入到了master集群之后,再次在master上面执行该命令kubectl get nodes
,会发现节点数量增加了2个
部署CNI网络插件
在master上面执行该命令,需要等待5-10分钟,若失败,多执行几次
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
执行下面的命令来查看详细系统状态,需要每个pod都是Running的状态,此时nodes节点都已经处于Ready状态,如下图所示
kubectl get pods -n kube-system
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2019-11-17 学习:C++中的头文件和源文件详解
2019-11-17 学习:文件操作
2019-11-17 java接口的成员变量的修饰符
2019-11-17 实战钓鱼思路