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

posted @   zpchcbd  阅读(112)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2019-11-17 学习:C++中的头文件和源文件详解
2019-11-17 学习:文件操作
2019-11-17 java接口的成员变量的修饰符
2019-11-17 实战钓鱼思路
点击右上角即可分享
微信分享提示