使用Kubeadm搭建kubernetes1.16.1集群

最近一直在学习kubernetes,最近想要尝试自己搭建一个k8s集群,期间查看了各种博客,文档, 终于把集群搭建成功,写个博客记录一下.

准备环境

准备四台虚拟机,配置如下:

  1. OS:Centos 8
  2. CPU: 1核
  3. 内存:4GB
  4. 主机名分别为:k8s-master, k8s-n1, k8s-n2, k8s-n2
  5. 网络:在同一子网,ip分别为192.168.1.125,192.168.1.114,192.168.1.127,192.168.1.140
  6. 用户:root

Master 节点和Node 节点都需要执行的步骤

  1. 分别修改主机名
hostnamectl set-hostname k8s-master  
  1. 修改host文件
    在 /etc/hosts文件中添加如下配置:
192.168.1.114 k8s-n1
192.168.1.125 k8s-master
192.168.1.127 k8s-n2
192.168.1.140 k8s-n3
  1. 指定DNS服务器
    (这步骤理论可以省略,主要是我发现我的虚拟机如果不指定DNS服务器,下载程序包时就经常性失败.)
    在 /etc/resolv.conf 文件中加入:
nameserver 114.114.114.114
nameserver 8.8.8.8
  1. 安装Docker
    这里我选择了较新的18.09.1版本,安装命令如下(参考官网):
yum install -y -q yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo  
sudo yum install docker-ce-18.09.1 docker-ce-cli-18.09.1 containerd.io 
systemctl enable docker 
systemctl start docker  
  1. 禁用Linux的selinux
setenforce 0  
sed -i --follow-symlinks 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/sysconfig/selinux  
  1. 关闭防火墙
    集群通信需要用到许多端口,防火墙的设置也很麻烦,所以这里偷懒,就直接关闭掉了.
systemctl disable firewalld 
systemctl stop firewalld  
  1. 禁用swap
    禁用swap的原因,我个人理解是目前kubelet 还不能很好支持不同pod对swap的不同需求,为了保证分配的内存都是真实可靠的,所以干脆禁用了swap。
    禁用命令:
sed -i '/swap/d' /etc/fstab  
swapoff -a 
  1. 配置网络参数
cat >>/etc/sysctl.d/kubernetes.conf<<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system 
  1. 配置kubernetes的国内镜像
    由于国内长城的原因,需要配置kubernetes的国内镜像
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  
  1. 安装kubeadm,kubelet,kubectl
yum install -y kubeadm kubelet kubectl  
systemctl enable kubelet
systemctl start kubelet

Master节点单独执行的步骤

  1. 查看安装所需要的Docker镜像,这里我们装较新的1.16.1版本的Kubernetes
kubeadm config images list --kubernetes-version=1.16.1

在这里插入图片描述

  1. 使用国内镜像库拉取镜像
    因为国内无法访问" k8s.gcr.io"镜像库,需要先从"registry.cn-hangzhou.aliyuncs.com"拉取镜像.
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.16.1

给拉取后的镜像,打上”k8s.gcr.io”的tag

docker tag  registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.16.1 k8s.gcr.io/kube-apiserver:v1.16.1  
  1. 使用Kubeadm开始安装Kubernetes集群
kubeadm init --kubernetes-version=v1.16.1 --apiserver-advertise-address=192.168.1.125 --pod-network-cidr 10.244.0.0/16  
  1. 给当前用户(root)配置Kube Config File
    此步骤目的是使当前用户可以通过kubectl 来访问集群
mkdir -p $HOME/.kube  
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config  
chown $(id -u):$(id -g) $HOME/.kube/config 
  1. 安装网络插件(flannel)
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml  
  1. 设置Forward Policy
sudo iptables -P FORWARD ACCEPT
  1. 修改pod coredns的configmap
kubectl edit configmap coredns -n kube-system

添加hosts,如图
在这里插入图片描述

Node节点上的操作

  1. 设置Forward Policy
sudo iptables -P FORWARD ACCEPT
  1. 生成join command
    Master节点上执行下边命令
kubeadm token create --print-join-command

在这里插入图片描述

  1. Node节点通过Kubeadm连接Master节点
    复制上步生成的命令,执行就可.

  2. 手动下载Node节点需要的相关镜像
    由于Node节点也会用到一些"k8s.gcr.io"中的镜像,例如"k8s.gcr.io/kube-proxy “,所以也需要手动下载相关的包,并打上"k8s.gcr.io” tag.
    先获取所有的pod:

kubectl get pods --all-namespaces -o wide

找到状态不是running的pod,通过"kubectl describe pod"命令可以查看是不是pull image 失败.

到此,kubernetes集群就搭建成功了!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值