搭建k8s集群

 1.1搭建K8s集群

官网:https://kubernetes.io/

Kubernetes部署的三种方式

  • Minikube  是一个工具,可以在本地快速运行一个单点的Kubernetes,仅用于日常尝试或者开发
  • Kubeadm 也是一个工具,提供Kubeadm init和kubeadm join,用于快速部署Kubernetes。
  • 二级制 从官方下载发行的包,手动部署每个组件,组成Kubernetes组件

初学者建议使用Kubeadm ,有经验了使用二进制部署更好排查问题,本文采用Kubeadm 进行部署。

使用kubeadm搭建一个3台机器组成的k8s集群,1台master节点,2台worker节点
如果大家机器配置不够,也可以使用在线的,或者minikube的方式或者1个master和1个worker
配置要求(每台虚拟机的基本配置,官网要求的)
系统:CentOS 7  CPU: 至少两核   内存:最少2G

1.2 准备3台centos

大家根据自己的情况来准备centos7的虚拟机。

要保证彼此之间能够ping通,也就是处于同一个网络中,虚拟机的配置要求上面也描述咯。

1.3 安装Docker

参考官网地址:https://docs.docker.com/engine/install/centos/
01 移除之前的docker相关

 sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

 02 安装yum-util安装包,

sudo yum install -y yum-utils

 03 设置docker仓库

  sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

这里需要先设置阿里云镜像加速器,免费的

sudo mkdir -p /etc/docker 
sudo tee /etc/docker/daemon.json <<-'EOF'
{ 
"registry-mirrors": ["https://miulxnq3.mirror.aliyuncs.com"] 
} 
EOF 
sudo systemctl daemon-reload sudo systemctl restart docker


04安装docker
 

安装指定版本的语句为(推荐):
yum install -y docker-ce-20.10.1 docker-ce-cli-20.10.1 containerd.io

安装最新版本的语句为:
sudo yum install docker-ce docker-ce-cli containerd.io

05 启动docker

sudo systemctl start docker && sudo systemctl enable docker

 1.5 修改hosts文件

(1)master
 设置master的hostname,并且修改hosts文件

sudo hostnamectl set-hostname m

vi /etc/hosts
192.168.1.128 m
192.168.1.129 w1
192.168.1.130 w2

注:192.168.1.128 , 192.168.1.129, 192.168.1.130 是我自己虚拟机的IP,请自行对应自己的虚拟机ip

(2)两个worker
设置worker01/02的hostname,并且修改hosts文件

sudo hostnamectl set-hostname w1
sudo hostnamectl set-hostname w2

 vi /etc/hosts
192.168.1.128 m
192.168.1.129 w1
192.168.1.130 w2

(3)使用ping测试一下

  1.6 系统基础前提配置


(1)关闭防火墙

systemctl stop firewalld && systemctl disable firewalld

(2)关闭selinux

setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

(3)关闭swap

swapoff -a
sed -i '/swap/s/^\(.*\)$/#\1/g' /etc/fstab

(4)配置iptables的ACCEPT规则

iptables -F && iptables -X && iptables -F -t nat && iptables -X -t nat && iptables -P FORWARD ACCEPT

 (5)设置系统参数

cat <<EOF >  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

sysctl --system

 

 1.7 Installing kubeadm, kubelet and kubectl

(1)配置yum源 (使用阿里云镜像下载:https://developer.aliyun.com/mirror/kubernetes?spm=a2c6h.13651102.0.0.3e221b110MmjAj

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
       http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

 (2)安装kubeadm&kubelet&kubectl

安装指定版本(推荐使用,可根据情况自行替换版本):
yum install -y kubeadm-1.20.4-0 kubelet-1.20.4-0 kubectl-1.20.4-0

安装最新版本:
yum install -y kubelet kubeadm kubectl

 (3)docker和k8s设置同一个cgroup

 vi /etc/docker/daemon.json
 添加下面内容:
 "exec-opts": ["native.cgroupdriver=systemd"],

   如下图所示:


 重启docker  

systemctl restart docker

使用 kubelet命令,这边如果发现输出directory not exist,也说明是没问题的,大家继续往下进行即可

sed -i "s/cgroup-driver=systemd/cgroup-driver=cgroupfs/g" /etc/systemd/system/kubelet.service.d/10-kubeadm.conf

设置 kubelet开机自启和启动

systemctl enable kubelet && systemctl start kubelet

 

 1.8 拉取proxy/pause/scheduler等国内镜像

 (1)查看kubeadm使用的镜像

 kubeadm config images list

 如下图所示:(可以发现这里都是国外的镜像)

(2)解决国外镜像不能访问的问题

#创建kubeadm.sh脚本,用于拉取镜像/打tag/删除原有镜像

#!/bin/bash
set -e

KUBE_VERSION=v1.20.4
KUBE_PAUSE_VERSION=3.2
ETCD_VERSION=3.4.13-0
CORE_DNS_VERSION=1.7.0

GCR_URL=k8s.gcr.io
ALIYUN_URL=registry.cn-hangzhou.aliyuncs.com/google_containers

images=(kube-proxy:${KUBE_VERSION}
kube-scheduler:${KUBE_VERSION}
kube-controller-manager:${KUBE_VERSION}
kube-apiserver:${KUBE_VERSION}
pause:${KUBE_PAUSE_VERSION}
etcd:${ETCD_VERSION}
coredns:${CORE_DNS_VERSION})

for imageName in ${images[@]} ; do
  docker pull $ALIYUN_URL/$imageName
  docker tag  $ALIYUN_URL/$imageName $GCR_URL/$imageName
  docker rmi $ALIYUN_URL/$imageName
done

# 运行脚本

sh ./kubeadm.sh

# 查看镜像

docker images

 

1.9 kube init初始化master

 (1)初始化master节点
 注:**此操作是在主节点上进行**,如果已设置过集群,需要重新初始化集群状态:kubeadm reset,然后再进行上述操作
 注:kubernetes-version 为上面下载的 kubectl的版本, 

        apiserver-advertise-address:需要设置的主节点的ip

        pod-network-cidr:为k8s集群的内部网段

 注:记得保存好最后kubeadm join的信息,初始化命令执行之后,日志里面会有kubeadm join的信息

kubeadm init --kubernetes-version=1.20.4 --apiserver-advertise-address=192.168.1.128  --pod-network-cidr=10.244.0.0/16

(2)根据日志提示

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
使用kubectl cluster-info查看一下是否初始化成功

(4)查看pod验证一下
 等待一会儿,同时可以发现像etc,controller,scheduler等组件都以pod的方式安装成功了
 注:coredns没有启动,需要安装网络插件

kubectl get pods -n kube-system

(5)健康检查

curl -k https://localhost:6443/healthz

 

1.10 部署calico网络插件

选择网络插件:https://kubernetes.io/docs/concepts/cluster-administration/addons/
k8s提供了多种网络插件,可进入官网网址自行选择,并按照操作指南进行操作,本文使用calico。
在k8s中安装calico

kubectl apply -f https://docs.projectcalico.org/v3.9/manifests/calico.yaml

确认一下calico是否安装成功

kubectl get pods --all-namespaces -w

 

 1.11 kube join

记得保存初始化master节点的最后打印信息【注意这边大家要自己的,下面我的只是一个参考】**

kubeadm join 192.168.1.128:6443 --token qqjoan.k4i3b39ka7dqbgvb \
    --discovery-token-ca-cert-hash sha256:1b7337489a14024f842ad1051c25d6fec2998d80927e6218ebd3f4aa45a5e175

(1)在woker01和worker02上执行上述命令

(2)在master节点上检查集群信息

执行如下命令,查看集群信息:

kubectl get nodes

如下图所示: 等待status状态全部变为Ready代表集群部署成功。

注:版本统一(版本不统一会存在,无法支持的问题)

Docker       20.10.1
---
kubeadm-1.20.4-0
kubelet-1.20.4-0
kubectl-1.20.4-0
---
k8s.gcr.io/kube-apiserver:v1.20.4
k8s.gcr.io/kube-controller-manager:v1.20.4
k8s.gcr.io/kube-scheduler:v1.20.4
k8s.gcr.io/kube-proxy:v1.20.4
k8s.gcr.io/pause:3.2
k8s.gcr.io/etcd:3.4.13-0
k8s.gcr.io/coredns:1.7.0
---
calico:v3.9
```

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值