kubernetes 1.27.1 最新版集群部署

简介: k8s最新版国内环境部署

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

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

准备云服务器

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

https://pic-keboom.oss-cn-hangzhou.aliyuncs.com/20230424111614.png

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

https://pic-keboom.oss-cn-hangzhou.aliyuncs.com/20230424112135.png

我以 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

https://pic-keboom.oss-cn-hangzhou.aliyuncs.com/20230424113016.png

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镜像加速

https://pic-keboom.oss-cn-hangzhou.aliyuncs.com/20230424113818.png

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 好像需要翻墙,那么现在本地下载完后,上传到服务器/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

主节点部署

https://pic-keboom.oss-cn-hangzhou.aliyuncs.com/20230424133146.png

国内访问不了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/](http://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状态:

https://pic-keboom.oss-cn-hangzhou.aliyuncs.com/20230425163300.png

加入节点

进入到我的 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

https://pic-keboom.oss-cn-hangzhou.aliyuncs.com/20230425164240.png

https://pic-keboom.oss-cn-hangzhou.aliyuncs.com/20230425165201.png

等了很长时间,这些 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状态,发现最终能够成功。

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

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
2月前
|
Kubernetes 持续交付 Docker
利用 Docker 和 Kubernetes 实现微服务部署
【10月更文挑战第2天】利用 Docker 和 Kubernetes 实现微服务部署
|
6天前
|
存储 Kubernetes 容器
K8S部署nexus
该配置文件定义了Nexus 3的Kubernetes部署,包括PersistentVolumeClaim、Deployment和服务。PVC请求20Gi存储,使用NFS存储类。Deployment配置了一个Nexus 3容器,内存限制为6G,CPU为1000m,并挂载数据卷。Service类型为NodePort,通过30520端口对外提供服务。所有资源位于`nexus`命名空间中。
|
2月前
|
Prometheus Kubernetes 监控
k8s部署针对外部服务器的prometheus服务
通过上述步骤,您不仅成功地在Kubernetes集群内部署了Prometheus,还实现了对集群外服务器的有效监控。理解并实施网络配置是关键,确保监控数据的准确无误传输。随着监控需求的增长,您还可以进一步探索Prometheus生态中的其他组件,如Alertmanager、Grafana等,以构建完整的监控与报警体系。
141 60
|
2月前
|
Prometheus Kubernetes 监控
k8s部署针对外部服务器的prometheus服务
通过上述步骤,您不仅成功地在Kubernetes集群内部署了Prometheus,还实现了对集群外服务器的有效监控。理解并实施网络配置是关键,确保监控数据的准确无误传输。随着监控需求的增长,您还可以进一步探索Prometheus生态中的其他组件,如Alertmanager、Grafana等,以构建完整的监控与报警体系。
271 62
|
29天前
|
Kubernetes Cloud Native 微服务
云原生入门与实践:Kubernetes的简易部署
云原生技术正改变着现代应用的开发和部署方式。本文将引导你了解云原生的基础概念,并重点介绍如何使用Kubernetes进行容器编排。我们将通过一个简易的示例来展示如何快速启动一个Kubernetes集群,并在其上运行一个简单的应用。无论你是云原生新手还是希望扩展现有知识,本文都将为你提供实用的信息和启发性的见解。
|
1月前
|
Kubernetes 监控 负载均衡
深入云原生:Kubernetes 集群部署与管理实践
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术以其弹性、可扩展性成为企业IT架构的首选。本文将引导你了解如何部署和管理一个Kubernetes集群,包括环境准备、安装步骤和日常维护技巧。我们将通过实际代码示例,探索云原生世界的秘密,并分享如何高效运用这一技术以适应快速变化的业务需求。
67 1
|
1月前
|
存储 Kubernetes Devops
Kubernetes集群管理和服务部署实战
Kubernetes集群管理和服务部署实战
56 0
|
2月前
|
Kubernetes Cloud Native 流计算
Flink-12 Flink Java 3分钟上手 Kubernetes云原生下的Flink集群 Rancher Stateful Set yaml详细 扩容缩容部署 Docker容器编排
Flink-12 Flink Java 3分钟上手 Kubernetes云原生下的Flink集群 Rancher Stateful Set yaml详细 扩容缩容部署 Docker容器编排
93 3
|
2月前
|
Kubernetes Docker 微服务
微服务实践k8s&dapr开发部署实验(1)服务调用(一)
微服务实践k8s&dapr开发部署实验(1)服务调用(一)
54 2
|
2月前
|
Kubernetes 网络安全 容器
基于Ubuntu-22.04安装K8s-v1.28.2实验(一)部署K8s
基于Ubuntu-22.04安装K8s-v1.28.2实验(一)部署K8s
340 2