k8s+Docker部署方法🤠🤠🤠

您所在的位置:网站首页 k8s容器管理功能及流程 k8s+Docker部署方法🤠🤠🤠

k8s+Docker部署方法🤠🤠🤠

2023-05-12 14:35| 来源: 网络整理| 查看: 265

前言 k8s宣布弃用Docker?到底弃用了什么 时间事件2020k8s在v1.20版本发布时宣布将在未来弃用对Dockershim的支持2022k8s发布v1.24版本,正式剔除Dockershim

首先,并不是弃用Docker容器,想要部署k8s和Docker容器环境的小伙伴完全不用担心!Docker镜像容器依然可以正常被调用,唯一的区别就是最新版k8s会绕过Docker直接调用其内部的containerd

本文使用的部署环境

至少一个master,2个slave。你可以用虚拟机搞,也可以花钱买服务器,反正至少启三个来用。

环境参数值描述部署方式多虚拟机穷,我是学生,服务器什么的,不可能操作系统CentOS 7外置Win10,内置CentOS 7CPU2个1核每个虚拟机节点必须2个逻辑CPU起步,不然k8s部署不了内存4G真的4G起步,每台虚拟机2G只能保证将就运行 k8s+Docker,跑不了别的服务存储20G大点也行,其实如果还要部署Python等环境的话建议40G

image.png

环境配置的小tips

如果你也想只用虚拟机玩玩,那么我们可以去官网或一些学校镜像站下载iso文件来安装

指路!

wiki.centos.org/Download 官网的历史版本网页,提供iso下载 mirrors.bupt.edu.cn/centos/7/is… 打个广告,北京邮电大学镜像站的centos 7 本文使用的版本号 软件版本号Kubernetes(k8s)1.23.0Docker20.10.0.3 Docker安装及配置

以下配置需要在主节点和所有从节点执行!\color{red}\textbf {以下配置需要在主节点和所有从节点执行!}以下配置需要在主节点和所有从节点执行!

配置仓库

这一步是为了拉取docker时速度快点,用的是阿里云的centOS 7源。

需要注意的是,Docker版本务必和k8s支持的版本对应一下。本文用的是k8s 1.23.0,安装的时候如果Docker不是20以下的会报警告(虽然可能没什么事不用管,但还是选好版本再说吧)

我们输入如下指令,来配置阿里云yum仓库,并使其生效:

cd /etc/yum.repos.d mv CentOS-Base.repo CentOS-Base.repo.backup wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo yum clean all yum makecache image.png 为linux安装指定版本docker

我们可以使用如下指令查看我们的yum仓库有什么docker可装。我选择的是20.10.0.3这个版本。

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum list docker-ce --showduplicates | sort -r yum install -y docker-ce-20.10.0-3.el7 image.png docker配置

我们首先启动Docker:

systemctl start docker

这时/etc/docker会自动生成。我们需要进行一些自定义配置,设置阿里云源并且修改docker管理系统cgroup的方式为systemd(和k8s一致才能正常安装启动k8s)

vi /etc/docker/daemon.json ########## 以下是文件内的具体内容 ########### { "registry-mirrors": [""], "exec-opts": ["native.cgroupdriver=systemd"] } ########## 随后我们重启docker ########### systemctl restart docker

这里附上阿里云镜像服务网址:cr.console.aliyun.com/cn-hangzhou…

image.png

k8s配置及安装 安装前配置

以下配置需要在主节点和所有从节点执行!\color{red}\textbf {以下配置需要在主节点和所有从节点执行!}以下配置需要在主节点和所有从节点执行!

安装前的配置主要需要实现如下几件事:

关闭防火墙,设置网络允许接收任意来源的请求 关闭selinux,关闭swap,并设置开机自动关闭 在hosts文件配置主从节点ip 配置k8s的路由设置、镜像源

我们依次输入如下代码(具体多少个从节点视各位具体情况而定):

👆👆👆 点击 展开/收起 代码块 👆👆👆 iptables -P FORWARD ACCEPT swapoff -a sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab sed -ri 's#(SELINUX=).*#\1disabled#' /etc/selinux/config setenforce 0 systemctl disable firewalld && systemctl stop firewalld cat >>/etc/hosts /etc/sysctl.d/k8s.conf /etc/yum.repos.d/kubernetes.repo kubeadm.yaml

随后,分别进行如下改动

######### :11,修改 ######### localAPIEndpoint: advertiseAddress: ######### :30,修改 ######### imageRepository: registry.aliyuncs.com/google_containers ######### :33,新增podSubnet这一行 ######### networking: podSubnet: 10.244.0.0/16 主节点启动 kubeadm config images pull --config kubeadm.yaml echo "1" >/proc/sys/net/bridge/bridge-nf-call-iptables kubeadm init --config kubeadm.yaml

如果启动过程中报错

[ERROR FileContent--proc-sys-net-ipv4-ip_forward]: /proc/sys/net/ipv4/ip_forward contents are not set to 1

那就再多执行一句:

echo 1 > /proc/sys/net/ipv4/ip_forward

我记录了当时启动完后的结果,为了使用kubectl,此时我们需要遵循官方给的几行代码执行以下,此外,这里最后两行告知了如何让从节点加入集群,我们只需要将这个输入到从节点那就行:

mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config export KUBECONFIG=/etc/kubernetes/admin.conf kubectl get nodes

image.png

网络插件安装

这一步很重要,不安装网络插件的话k8s默认是无法跟从节点通信的。我选择的产品是calico。

首先进入calico官方文档查看calico支持的k8s版本。我查看的是calico 3.23,对应的软件要求可以在calico v3.23 System Reauirements里查看到。

image.png

输入如下命令部署calico,如果被墙了可以去gitee上搜一个calico,进入manifest目录下载calico.yaml:

wget https://docs.projectcalico.org/v3.23/manifests/calico.yaml --no-check-certificate kubectl apply -f calico.yaml # 查看以下部署情况,一般运行calico后要过一会儿,会发现所有节点都将处于Ready状态,现在可以正常进行集群的通信了! kubectl get pod -n kube-system | grep calico kubectl get nodes

image.png

新的从节点如何加入集群

假如我们未来创建了新的虚拟机,如何加入已经启动了的集群呢?

在master节点输入如下指令,将得到的结果输入新的从节点即可:

kubeadm token create --print-join-command 如何关闭并驱逐从节点

这个其实严格执行的话挺麻烦的,以slave1为例,我们需要依次输入如下指令:

# 把slave1的资源驱赶到其他节点 kubectl drain k8s-slave1 --ignore-daemonsets # 标记slave1为不可调度 kubectl uncordon k8s-slave1 # 从集群删除slave1 kubectl delete node k8s-slave1 主节点如何停止 kubectl drain node --ignore-daemonsets --delete-local-data --force 主节点如何删除服务?

比如我们部署了一个test-nginx服务,但是想把它删了,释放其容器资源

kubectl get pods | grep test-nginx | awk '{print $1}' | xargs kubectl delete pod


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3