K8S部署(Kubeadm方式)

 1.环境准备

        1.1机器准备

需求机器

操作系统

配置

地址

Centos7.9

4G 2cpu

192.168.2.137(k8s-master)

Centos7.9

4G 2cpu

192.168.2.138(k8s-node1)

Centos7.9

4G 2cpu

192.168.2.139(k8s-node2)

       修改主机名

hostnamectl set-hostname master # master节点操作
hostnamectl set-hostname node1  # node1节点操作
hostnamectl set-hostname node2  # node2节点操作

        1.2环境准备——关闭firewalld和selinux(在k8s集群master和node上都进行操作)

1.关闭防火墙:
# systemctl stop firewalld
# systemctl disable firewalld
2.禁用SELinux:
# setenforce 0
3.编辑文件/etc/selinux/config,将SELINUX修改为disabled,如下:
# sed -i 's/SELINUX=permissive/SELINUX=disabled/' /etc/sysconfig/selinux
SELINUX=disabled

关闭系统Swap:1.5之后的新规定

Kubernetes 1.8开始要求关闭系统的Swap,如果不关闭,默认配置下kubelet将无法启动。方法一,通过kubelet的启动参数–fail-swap-on=false更改这个限制。方法二,关闭系统的Swap。

[root@localhost /]# swapoff -a
修改/etc/fstab文件,注释掉SWAP的自动挂载,使用free -m确认swap已经关闭。
2.注释掉swap分区:
[root@localhost /]# sed -i 's/.*swap.*/#&/' /etc/fstab
# free -m
             total        used        free      shared  buff/cache   available
Mem:           3935         144        3415           8         375        3518
Swap:             0           0           0

时间同步

#安装时间同步工具
yum install ntpdate -y
#同步时间服务器
ntpdate time.windows.com

2.安装docker服务

yum install -y yum-utils device-mapper-persistent-data lvm2 git     #安装常用工具

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo      #添加docker源

yum install docker-ce -y     #此命令会安装最新版本docker

systemctl start docker.service &&  systemctl enable docker.service    #启动并设置开机启动

3.使用kubeadm部署Kubernetes

所有节点安装kubeadm和kubelet:

配置源
cat < /etc/yum.repos.d/kubernetes.repo
[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

提醒:如果下载失败,关闭认证,再次下载

所有节点安装

所有节点:
1.安装
# yum makecache fast    #构建yum缓存
# yum install -y kubelet kubeadm kubectl ipvsadm    #注意此命令会安装最新版本,我们安装旧版本看下面操作
======================================================================
[root@k8s-master ~]# yum install -y kubelet-1.19.1-0.x86_64 kubeadm-1.19.1-0.x86_64 kubectl-1.19.1-0.x86_64 ipvsadm

2.加载ipvs相关内核模块
如果重新开机,需要重新加载(可以写在 /etc/rc.local 中开机自动加载)
# modprobe ip_vs
# modprobe ip_vs_rr
# modprobe ip_vs_wrr
# modprobe ip_vs_sh
# modprobe nf_conntrack_ipv4
# modprobe br_netfilter

3.编辑文件添加开机启动
# vim /etc/rc.local 
# chmod +x /etc/rc.local
# sysctl -p /etc/sysctl.d/k8s.conf

4.配置:
配置转发相关参数,否则可能会出错
# cat <  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
vm.swappiness=0
EOF

5.使配置生效
# sysctl --system

6.查看是否加载成功
# lsmod | grep ip_vs

因为通过kubeadm部署k8s时候会默认从google拉取需要的镜像,国内服务器拉取可能会失败

这里提前拉取kubeadm所需要的镜像(可以编辑一个脚本执行)

通过kubeadm config images list查看需要下载的image及其版本

        #images
        docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.19.1
        docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.19.1
        docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.19.1
        docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.19.1
        docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.8.4
        docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.5.0-0
        docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.5
        #Tag
        docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.19.1 k8s.gcr.io/kube-controller-manager:v1.19.1
        docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.19.1 k8s.gcr.io/kube-proxy:v1.19.1
        docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.19.1 k8s.gcr.io/kube-apiserver:v1.19.1
        docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.19.1 k8s.gcr.io/kube-scheduler:v1.19.1
        docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.8.4 k8s.gcr.io/coredns/coredns:v1.8.4
        docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.5.0-0 k8s.gcr.io/etcd:3.5.0-0
        docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.5 k8s.gcr.io/pause:3.5

配置启动kubelet

1.配置kubelet使用pause镜像
获取docker的驱动cgroups
# DOCKER_CGROUPS=`docker info|grep "Cgroup Driver"|awk '{print $3}'`

这个是使用国内的源。-###注意我们使用谷歌的镜像--操作下面的第3标题
2.配置kubelet的cgroups
# cat >/etc/sysconfig/kubelet</etc/sysconfig/kubelet</etc/sysconfig/kubelet<

启动

# systemctl daemon-reload
# systemctl enable kubelet && systemctl restart kubelet

master节点初始化

[root@master ~]# kubeadm init --kubernetes-version=v1.19.1 --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.246.166 --ignore-preflight-errors=Swap

说明
apiserver-advertise-address=192.168.246.166    ---master的ip地址。
--kubernetes-version=v1.19.1   --更具具体版本进行修改
如果前面没有提前拉取镜像,也可以在这里加选项--image-repository registry.aliyuncs.com/google_containers指定从阿里拉取所需要镜像,或者配置docker加速

 初始化

K8S部署(Kubeadm方式)_第1张图片

 记录下来内容

kubeadm join 192.168.91.151:6443 --token mtw6bh.x0k51vyvlpy8nz6w \
    --discovery-token-ca-cert-hash sha256:041e713abfd4d8d4242c4bf60e8cd2f9af4cd8694b5cd6cdd95def14c0a3f593

 使用kubectl工具:

[root@k8s-master ~]# mkdir -p $HOME/.kube
[root@k8s-master ~]# cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@k8s-master ~]# chown $(id -u):$(id -g) $HOME/.kube/config

node节点初始化 

在node节点上执行

向集群添加新节点,执行kubeadm init输出的kubeadm join命令:

kubeadm join 192.168.91.151:6443 --token mtw6bh.x0k51vyvlpy8nz6w \
    --discovery-token-ca-cert-hash sha256:041e713abfd4d8d4242c4bf60e8cd2f9af4cd8694b5cd6cdd95def14c0a3f593

 默认token有效期为24显示,当过期之后,该token就不可用了。这时候需要重新创建token,操作如下:

kubeadm token create --print-join-command

 安装网络插件

curl -O https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
[root@k8s-master ~]# vim kube-flannelv1.19.1.yaml
:% s/namespace: kube-flannel/namespace: kube-system/g

 创建命名空间

K8S部署(Kubeadm方式)_第2张图片

 与master节点初始化时的ip保持一致

K8S部署(Kubeadm方式)_第3张图片

 与网卡名保持一致

K8S部署(Kubeadm方式)_第4张图片

K8S部署(Kubeadm方式)_第5张图片

[root@k8s-master ~]# kubectl apply -f kube-flannelv1.19.1.yaml
[root@k8s-master ~]# kubectl get pod -n kube-system

K8S部署(Kubeadm方式)_第6张图片

 安装Dashboard可视化管理

kubectl apply -f https://addons.kuboard.cn/kuboard/kuboard-v3.yaml
# 您也可以使用下面的指令,唯一的区别是,该指令使用华为云的镜像仓库替代 docker hub 分发 Kuboard 所需要的镜像
# kubectl apply -f https://addons.kuboard.cn/kuboard/kuboard-v3-swr.yaml

 浏览器访问ip即可

你可能感兴趣的:(kubernetes,docker,容器)