K8S V1.23 安装--Kubeadm+contained+公网 IP 多节点部署

本文档详细介绍了如何在两台公网服务器上,通过Kubeadm和containd安装Kubernetes集群。涉及内容包括系统设置、containd和crictl的安装、错误处理、K8S安装、主节点和工作节点的集群加入、Dashboard安装访问。在公网环境下,需注意IP配置、端口开放以及网络插件选择。
摘要由CSDN通过智能技术生成

简介

基于两台公网的服务器节点,两个服务器不再局域网内,只能通过公网 IP 相互访问,搭建 K8S 集群,并且按照 Dashboard,通过网页查看 K8S 相关的东西

环境及机器说明

两台机器,其中一台作为主节点,一台作为工作节点

操作系统都是centos7,centos8配置虚拟网卡有点麻烦

  • crio-master(主节点):121.4.190.84
  • vm-20-11-centos(工作节点):106.55.227.160

系统设置准备

同时在两台机器上执行

根据官方的文档,配置下一些系统属性

cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF

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

sysctl --system

# 修改Hosts文件,添加相关的配置,示例如下:
[root@crio-master k8s]# cat /etc/hosts
121.4.190.84 crio-master
106.55.227.160 VM-20-11-centos

由于我们使用的是公网 ip,但是在云服务器中是没有对应的网卡的,这导致在 kubeadm 部署时使用公网 IP 有问题

所以我们在两台机器中新建对应各自公网 ip 的虚拟网卡(下面方式建立的重启后,会被删除,但目前也够用了)

# 安装软件包
modprobe tun
lsmod | grep tun

# 编辑文件
vim /etc/yum.repos.d/nux-misc.repo
# 填入下面的内容
[nux-misc]
name=Nux Misc
baseurl=http://li.nux.ro/download/nux/misc/el7/x86_64/
enabled=0
gpgcheck=1
gpgkey=http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro

# 安装
yum --enablerepo=nux-misc install tunctl

# 新建虚拟网卡
tunctl -t publick -u root
# 配置网卡的IP,注意替换ip成自己机器对应的公网IP
ifconfig publick 121.37.246.218 netmask 255.255.255.0 promisc

注:K8S 部署需要开通 6443 端口,在服务器的安全规则配置中,将 6443 端口开启

containd 安装

两个机器上都安装

docker 作为我们日常经常使用的,但感觉比较重了,我们尝试不使用 docker,使用推荐的,较底层的 contained(cri-o 也行,目前尝试下来,没有想象中那么难用)

# 将机器人上的docker清理下,不然会有影响
yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
yum remove docker-ce

# 我们单独安装contained即可
yum install -y yum-utils
yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
yum install containerd.io

# 加载
systemctl daemon-reload

# 启动服务
systemctl enable containerd
systemctl start containerd
systemctl status containerd

crictl 安装

两个机器上都安装

容器运行时的命令行操作工具,和 docker 命令很像,可以类比 docker,如下命令:

  • docker ps == crictl ps
  • docker logs == crictl logs
# 下载安装,下载不了,到github上找个版本:https://github.com/kubernetes-sigs/cri-tools/releases?q=v1.23.1&expanded=true,把下面的version改改就行了
VERSION="v1.24.1"
wget https://github.com/kubernetes-sigs/cri-tools/releases/download/$VERSION/crictl-$VERSION-linux-amd64.tar.gz
sudo tar zxvf crictl-$VERSION-linux-amd64.tar.gz -C /usr/local/bin
rm -f crictl-$VERSION-linux-amd64.tar.gz

# 编辑配置文件
vim /etc/crictl.yaml
# 填入下面的内容
runtime-endpoint: unix:///var/run/containerd/containerd.sock
image-endpoint: unix:///var/run/containerd/containerd.sock
timeout: 2
debug: false
pull-image-on-create: false

这样就 OK 了,可以运行命令尝试下:

crictl ps
crictl images

错误处理记录

FATA[0000] listing containers: rpc error: code = Unimplemented desc = unknown service runtime.v1alpha2.RuntimeService
➜  ~ crictl ps
FATA[0000] listing containers: rpc error: code = Unimplemented desc = unknown service runtime.v1alpha2.RuntimeService

删除下配置文件

rm /etc/containerd/config.toml
$ systemctl restart containerd

k8s 安装

两个机器都需要执行

# 增加软件源
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

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

# 清理以前的版本,如果有的话
yum remove kubelet kubeadm kubectl
yum install -y kubelet-1.23.1 kubeadm-1.23.1 kubectl-1.23.1

# 启动
systemctl enable --now kubelet

# 编辑下配置文件
mkdir -p /etc/systemd/system/kubelet.service.d/
vi /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
# 填入下面的内容
[Service]
Environment="KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf"
Environment="KUBELET_CONFIG_ARGS=--config=/var/lib/kubelet/config.yaml"
# 这是 "kubeadm init" 和 "kubeadm join" 运行时生成的文件,动态地填充 KUBELET_KUBEADM_ARGS 变量
EnvironmentFile=-/var/lib/kubelet/kubeadm-flags.env
# 这是一个文件,用户在不得已下可以将其用作替代 kubelet args。
# 用户最好使用 .NodeRegistration.KubeletExtraArgs 对象在配置文件中替代。
# KUBELET_EXTRA_ARGS 应该从此文件中获取。
Enviro
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值