kubernetes 1.27.1 最新版集群部署国内环境

官方安装部署文档:https://kubernetes.io/zh-cn/docs/setup/production-environment/tools/kubeadm/install-kubeadm/

准备云服务器

首先买三台服务器。我用的阿里云服务器。

三台服务器如下,然后我用的Tabby连接三台服务器。

我以 i-bp12igqv5c7kdligslo2 私网地址为:172.16.146.249 这个实例为master节点。

主节点和从节点都需要做的

关闭SELinux,禁用SELinux的目的是让容器可以读取主机文件系统

sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

关闭swap,如果内存不够用,直接起新节点,而不是让节点hang住

swapoff -a
sed -ri 's/.*swap.*/#&/' /etc/fstab

允许 iptables 检查桥接流量

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
sudo sysctl --system

添加hosts

vim /etc/hosts
172.16.146.249 k8s-master
172.16.146.248 k8s-node1
172.16.146.247 k8s-node2

安装docker。

安装kubelet、kubeadm、kubectl。

安装docker

Alibaba Cloud Linux 3 (Soaring Falcon) 此系统兼容centos和RHEL

我们用centos安装方式安装docker, https://docs.docker.com/engine/install/centos/

sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo systemctl start docker
sudo docker run hello-world

三台服务器都需要安装docker。接着我们配置docker镜像加速

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://qkmogfd4.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

可以使用docker info 查看Registry Mirrors 是否成功配置了阿里云镜像。

安装cri-dockerd

安装go:https://go.dev/doc/install

cd /usr/local
# 下载 go1.20.3.linux-amd64.tar.gz 好像需要FQ,那么现在本地下载完后,上传到服务器/usr/local目录下
rm -rf /usr/local/go && tar -C /usr/local -xzf go1.20.3.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin # 可以把他放到类似/etc/profile文件中
go version

接着安装cri-dockerd,我将cri-dockerd安装在 /opt 目录下。

项目地址:https://github.com/Mirantis/cri-dockerd

安装git :yum install git ,服务器访问github慢的,网上说的改hosts对我来说有用

git clone https://github.com/Mirantis/cri-dockerd.git
cd cri-dockerd
mkdir bin
go build -o bin/cri-dockerd # 这一步比较耗时,耐心等待
mkdir -p /usr/local/bin
install -o root -g root -m 0755 bin/cri-dockerd /usr/local/bin/cri-dockerd
cp -a packaging/systemd/* /etc/systemd/system
sed -i -e 's,/usr/bin/cri-dockerd,/usr/local/bin/cri-dockerd,' /etc/systemd/system/cri-docker.service
systemctl daemon-reload
systemctl enable cri-docker.service
systemctl enable --now cri-docker.socket

安装kubelet、kubeadm、kubectl

https://developer.aliyun.com/mirror/kubernetes/

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
setenforce 0
yum install -y kubelet kubeadm kubectl
systemctl enable kubelet && systemctl start kubelet

主节点部署

国内访问不了registry.k8s.io,我们用阿里云的镜像,我们使用命令:

kubeadm config images pull --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers --cri-socket=unix:///var/run/cri-dockerd.sock

接着k8s会获取registry.k8s.io前缀的镜像,那么我们:

docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.27.1 \
registry.k8s.io/kube-apiserver:v1.27.1 docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.27.1 \
registry.k8s.io/kube-scheduler:v1.27.1 docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.27.1 \
registry.k8s.io/kube-controller-manager:v1.27.1 docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.27.1 \
registry.k8s.io/kube-controller-manager:v1.27.1 docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:v1.10.1 \
registry.k8s.io/coredns:v1.10.1 docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.5.7-0 \
registry.k8s.io/etcd:3.5.7-0 docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.6 \
registry.k8s.io/pause:3.6 -------------------------- 这个pause3.6和3.9建议都下载,我部署的时候总出问题
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.9 \
registry.k8s.io/pause:3.9
kubeadm init \
--apiserver-advertise-address=172.16.146.249 \
--control-plane-endpoint=k8s-master \
--image-repository registry.cn-hangzhou.aliyuncs.com/google_containers \
--cri-socket=unix:///var/run/cri-dockerd.sock \
--pod-network-cidr=192.168.0.0/16 \
--v=5

生成kubeconfig文件

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

安装网络插件Calico

https://docs.tigera.io/calico/latest/getting-started/kubernetes/quickstart

按照文档一步步安装即可,要注意的是 kubeadm init 时 pod-network-cidr网络地址。

如果你设置的不是192.168.0.0/16,那么需要在creating custom resource时,修改相应的值。

最终执行完后,我的主节点pod状态:

加入节点

进入到我的 172.16.146.248 k8s-node1172.16.146.247 k8s-node2。将它们加入主节点

我的token过期了,因此我执行kubeadm token create拿到一个新的token。

discovery-token-ca-cert-hash可以通过如下命令获取:

openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null |\
openssl dgst -sha256 -hex | sed 's/^.* //'
kubeadm join k8s-master:6443 --token ik594p.9jxv0yaohe9piqlj \
--discovery-token-ca-cert-hash sha256:c6f792668e27516e1425bac6e489503cd483c054793e08675e4b8109b9644058 \
--cri-socket=unix:///var/run/cri-dockerd.sock

等了很长时间,这些 pod还是没有running,使用命令查看日志:

kubectl describe pods kube-proxy-x75bt -n kube-system

看到是因为registry.k8s.io/pause:3.6拉取失败,我试了在新加的两个node机器上执行:

docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.6

docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.6 registry.k8s.io/pause:3.6

接着回主节点查看pod状态,发现最终能够成功。

好了,部署过程还是有不少坑的,因为国内网络的问题。如果大家部署过程中有其他问题 ,欢迎评论区讨论。

kubernetes 1.27.1最新版集群部署的更多相关文章

  1. kubernetes云平台管理实战: 集群部署(一)

    一.环境规划 1.架构拓扑图 2.主机规划 3.软件版本 [root@k8s-master ~]# cat /etc/redhat-release CentOS Linux release 7.4.1 ...

  2. [转贴]CentOS7.5 Kubernetes V1.13(最新版)二进制部署集群

    CentOS7.5 Kubernetes V1.13(最新版)二进制部署集群 http://blog.51cto.com/10880347/2326146   一.概述 kubernetes 1.13 ...

  3. Kubernetes 企业级集群部署方式

    一.Kubernetes介绍与特性 1.1.kubernetes是什么 官方网站:http://www.kubernetes.io • Kubernetes是Google在2014年开源的一个容器集群 ...

  4. kubernetes 1.3 的安装和集群环境部署

    简介: Docker:是一个开源的应用容器引擎,可以为应用创建一个轻量级的.可移植的.自给自足的容器. Kubernetes:由Google开源的Docker容器集群管理系统,为容器化的应用提供资源调 ...

  5. Gitlab CI 集成 Kubernetes 集群部署 Spring Boot 项目

    在上一篇博客中,我们成功将 Gitlab CI 部署到了 Docker 中去,成功创建了 Gitlab CI Pipline 来执行 CI/CD 任务.那么这篇文章我们更进一步,将它集成到 K8s 集 ...

  6. Docker学习-Kubernetes - 集群部署

    Docker学习 Docker学习-VMware Workstation 本地多台虚拟机互通,主机网络互通搭建 Docker学习-Docker搭建Consul集群 Docker学习-简单的私有Dock ...

  7. kubeSphere v3.3.0+kubernetes v1.22.10 集群部署

    概述 KubeSphere 是 GitHub 上的一个开源项目,是成千上万名社区用户的聚集地.很多用户都在使用 KubeSphere 运行工作负载.对于在 Linux 上的安装,KubeSphere ...

  8. kubernetes集群部署

    鉴于Docker如此火爆,Google推出kubernetes管理docker集群,不少人估计会进行尝试.kubernetes得到了很多大公司的支持,kubernetes集群部署工具也集成了gce,c ...

  9. Docker&Kubernetes沙龙干货集锦:容器集群管理利器kubernetes详谈-CSDN.NET

    Docker&Kubernetes沙龙干货集锦:容器集群管理利器kubernetes详谈-CSDN.NET undefined Package - crawler undefined 科学网- ...

  10. Kubernetes集群部署关键知识总结

    Kubernetes集群部署需要安装的组件东西很多,过程复杂,对服务器环境要求很苛刻,最好是能连外网的环境下安装,有些组件还需要连google服务器下载,这一点一般很难满足,因此最好是能提前下载好准备 ...

随机推荐

  1. Leetcode 42题 接雨水(Trapping Rain Water) Java语言求解

    题目链接 https://leetcode-cn.com/problems/trapping-rain-water/ 题目内容 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱 ...

  2. 深入浅出Java多线程(二):Java多线程类和接口

    引言 大家好,我是你们的老伙计秀才!今天带来的是[深入浅出Java多线程]系列的第二篇内容:Java多线程类和接口.大家觉得有用请点赞,喜欢请关注!秀才在此谢过大家了!!! 在现代计算机系统中,多线程 ...

  3. 3.1 C++ STL 双向队列容器

    双向队列容器(Deque)是C++ STL中的一种数据结构,是一种双端队列,允许在容器的两端进行快速插入和删除操作,可以看作是一种动态数组的扩展,支持随机访问,同时提供了高效的在队列头尾插入和删除元素 ...

  4. Flask 框架:运用WTForms实现用户注册

    WTForms 是用于web开发的灵活的表单验证和呈现库,它可以与您选择的任何web框架和模板引擎一起工作,并支持数据验证.CSRF保护.国际化等,运用WTForms框架并配合Flask可实现一个带有 ...

  5. Python 代码推送百度链接

    通过代码实现抓取个人博客中某一页指定文章链接,并批量将该链接推送到百度站长平台,起到快速收录的目的. import sys import requests from bs4 import Beauti ...

  6. 线程锁(Python)

    一.多个线程对同一个数据进行修改 from threading import Thread,Lock n = 0 def add(lock): for i in range(500000): glob ...

  7. Qt信号槽原理

    1.说明 使用Qt已经好几年了,一直以为自己懂Qt,熟悉Qt,使用起来很是熟练,无论什么项目,都喜欢用Qt编写.但真正去看Qt的源码,去理解Qt的思想也就近两年的事. 本次就着重介绍一下Qt的核心功能 ...

  8. Linux-Shell变量的算术运算

    一.算术运算符 1.+.- 求和. a+b   a-b 2. *./.% 求乘积,商,余数    a*b   a/b    a/b 3.** 幂运算,例如 3**3 是求 3 的立方,即 27 4. ...

  9. Net5 WorkService 继承 Quarzt 以及 Net5处理文件上传

    Net5 版本以Core为底层非framework框架的windowservice 服务. 在VS里叫WorkService 可以以CMD方式运行也可以以Windowservice方式运行,部署简单. ...

  10. 【译】发布 .NET Aspire 预览版 2(二)

    原文 | Damian Edwards 翻译 | 郑子铭 组件更新 组件包现在有单独的图标 大多数 Aspire 组件的 NuGet 包现在都具有代表性图标,以便在 NuGet 包管理器对话框中更轻松 ...