kubernetes部署(kubeadm和rancher)

1. 环境与介质

操作系统:centos7 Minimal install (CentOS-7-x86_64-DVD-2003.iso)
内核版本:3.10.0-1127.el7.x86_64
kubernetes版本:1.20.2
docker版本:20.10.7
安装用户:root
网络状态:联网
机器:master(主节点) node01(从节点)

2. 环境准备

2.1 配置host文件(全部节点,可跳过)

vi /etc/hosts 添加host与ip映射相关配置

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
10.101.40.201 master
10.101.40.202 node01

2.2 关闭防火墙(全部节点)

不关闭防火墙的情况下就需要对kubernetes节点间通信的端口比较清楚,然后根据端口来配置网络开放策略,通常情况下内网环境关闭防火墙即可

systemctl stop firewalld
systemctl disable firewalld

2.3 禁止selinux(全部节点)

#临时关闭,重启失效
setenforce 0
#永久禁用
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
#验证
getenforce
#输出Permissive即可

2.4 禁止交换分区(全部节点)

#临时禁用,重启失效
swapoff -a
#永久禁用
vi /etc/fstab
#将下面这行用#号注释
#/dev/mapper/centos-swap swap                    swap    defaults        0 0

执行mount命令检查防止编辑fstab文件出错导致机器无法重启,该命令无输出即表示正常

[root@master ~]# mount -a
[root@master ~]# 

验证,以下命令无输出表示交换分区已关闭

[root@master ~]# swapon -s
[root@master ~]# 

2.5 安装docker(全部节点)

安装相关依赖

yum remove docker docker-client docker-client-latest docker-common docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
yum install -y yum-utils
yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce docker-ce-cli containerd.io

修改docker配置文件

mkdir /etc/docker
#修改docker配置文件(没有则创建),添加如下内容  vi /etc/docker/daemon.json
{
   
    "exec-opts":["native-cgroupdriver=systemd"],
     "registry-mirrors": ["https://alzgoonw.mirror.aliyuncs.com"]
}

启用docker服务

#启用docker
systemctl enable docker
systemctl restart docker

通过docker ps命令验证docker安装情况,无报错即可

[root@node01 ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

2.6 配置阿里yum源(所有节点)

创建yum仓库文件,添加如下内容 vi /etc/yum.repos.d/k8s.repo

[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0

2.7 同步服务器时间

这里也可以选择使用ntp时间服务来做时间同步,如果服务器时差过大,容易导致章节4.6.1出现的问题

date -s 17:23:10
hwclock -w

3. 通过kubeadmin安装kubernetes(官方推荐)

3.1 安装kubernetes相关依赖

这里默认拉取的是最新版本,也可以指定版本

yum install -y kubectl  kubeadmn  kubelet
systemctl enable kubelet

3.2 配置kubernetes集群配置文件(主节点执行)

在主节点生成一份默认配置文件

kubeadm config print init-defaults >> init.yaml

修改配置文件 vi init.yaml ,注意修改注释说明的配置
advertiseAddress :填写主节点的ip
imageRepository: 用阿里的镜像仓库代替默认的国外的仓库
podSubnet :pod网段设置
其他配置项可以根据需要进行修改

apiVersion: kubeadm.k8s.io/v1beta2
bootstrapTokens:
- groups:
  - system:bootstrappers:kubeadm:default-node-token
  token: abcdef.0123456789abcdef
  ttl: 24h0m0s
  usages:
  - signing
  - authentication
kind: InitConfiguration
localAPIEndpoint:
  advertiseAddress: 10.101.40.201   #这里填写主节点的ip
  bindPort: 6443
nodeRegistration:
  criSocket: /var/run/dockershim.sock
  name: node
  taints: null
---
apiServer:
  timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta2
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {
   }
dns:
  type: CoreDNS
etcd:
  local:
    dataDir: /var/lib/etcd
imageRepository: registry.aliyuncs.com/google_containers  #这里使用阿里的镜像仓库,默认的仓库是国外的
kind: ClusterConfiguration
kubernetesVersion: 1.21.0
networking:
  dnsDomain: cluster.local
  serviceSubnet: 10.96.0.0/12
  podSubnet: 10.244.0.0/16  #新增项,设置pod的网络
scheduler: {
   }

3.3 拉取kubernetes所需镜像

列出本次安装需要用到的镜像

[root@master ~]# kubeadm config images list --config init.yaml 
registry.aliyuncs.com/google_containers/kube-apiserver:v1.21.0
registry.aliyuncs.com/google_containers/kube-controller-manager:v1.21.0
registry.aliyuncs.com/google_containers/kube-scheduler:v1.21.0
registry.aliyuncs.com/google_containers/kube-proxy:v1.21.0
registry.aliyuncs.com/google_containers/pause:3.4.1
registry.aliyuncs.com/google_containers/etcd:3.4.13-0
registry.aliyuncs.com/google_containers/coredns:v1.8.0

拉取镜像

[root@master ~]# kubeadm config images pull --config init.yaml     
[config/images] Pulled registry.aliyuncs.com/google_containers/kube-apiserver:v1.21.0
[config/images] Pulled registry.aliyuncs.com/google_containers/kube-controller-manager:v1.21.0
[config/images] Pulled registry.aliyuncs.com/google_containers/kube-scheduler:v1.21.0
[config/images] Pulled registry.aliyuncs.com/google_containers/kube-proxy:v1.21.0
[config/images] Pulled registry.aliyuncs.com/google_containers/pause:3.4.1
[config/images] Pulled registry.aliyuncs.com/google_containers/etcd:3.4.13-0
failed to pull image "registry.aliyuncs.com/google_containers/coredns:v1.8.0": output: Error response from daemon: manifest for registry.aliyuncs.com/google_containers/coredns:v1.8.0 not found: manifest unknown: manifest unknown
, error: exit status 1
To see the stack trace of this error execute with --v=5 or higher

这里可以看到 "registry.aliyuncs.com/google_containers/coredns:v1.8.0"镜像没有找到,可能是阿里镜像仓库还没有收录该镜像,可以去docker hub上拉取一个重新打tag,其他类似情况都可以这样处理

docker pull coredns/coredns:1.8.0
docker tag  coredns/coredns:1.8.0 registry.aliyuncs.com/google_containers/coredns:v1.8.0

这样本地镜像就齐全了,最好在其他机器上也预先准备好镜像,其他机器可以通过如下命令拉取,如果存在镜像找不到的情况也可以使用上文的方式打tag,注意kubernetes-version版本保持一致,这里用的1.21.0

[root@node01 ~]#  kubeadm config images pull --image-repository registry.aliyuncs.com/google_containers --kubernetes-version 1.21.0

3.4 通过配置文件初始化集群(主节点执行)

kubeadm  init --config init.yaml 
[root@master ~]# kubeadm  init --config init.yaml 
[init] Using Kubernetes version: v1.21.0
[preflight] Running pre-flight checks
        [WARNING Service-Docker]: docker service is not enabled, please run 'systemctl enable docker.service'
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值