kubernetes部署(kubeadm和rancher)

kubernetes部署

    • 1. 环境与介质
    • 2. 环境准备
      • 2.1 配置host文件(全部节点,可跳过)
      • 2.2 关闭防火墙(全部节点)
      • 2.3 禁止selinux(全部节点)
      • 2.4 禁止交换分区(全部节点)
      • 2.5 安装docker(全部节点)
      • 2.6 配置阿里yum源(所有节点)
      • 2.7 同步服务器时间
    • 3. 通过kubeadmin安装kubernetes(官方推荐)
      • 3.1 安装kubernetes相关依赖
      • 3.2 配置kubernetes集群配置文件(主节点执行)
      • 3.3 拉取kubernetes所需镜像
      • 3.4 通过配置文件初始化集群(主节点执行)
      • 3.5 将其他节点加入集群
      • 3.6 安装网络插件
      • 3.7 如何清理kubeadm安装的集群
    • 4. 通过rancher安装kubernetes(最快安装)
      • 4.1 环境与介质
      • 4.2 环境准备
      • 4.3 安装rancher(主节点)
      • 4.3 增加kubernetes节点
      • 4.4 验证
      • 4.5 使用kubectl操作集群
      • 4.6 异常处理
        • 4.6.1 etcd证书异常
        • 4.6.2 ingress服务异常
      • 4.7 清理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-tokentoken: abcdef.0123456789abcdefttl: 24h0m0susages:- signing- authentication
kind: InitConfiguration
localAPIEndpoint:advertiseAddress: 10.101.40.201   #这里填写主节点的ipbindPort: 6443
nodeRegistration:criSocket: /var/run/dockershim.sockname: nodetaints: 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.localserviceSubnet: 10.96.0.0/12podSubnet: 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
do


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部