Kubernetes Cluster 快速搭建

网友投稿 917 2022-10-12

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。

Kubernetes Cluster 快速搭建

Kubernetes Cluster 快速搭建

跟着我的笔记一步一步操作成功搭建 kubernetes cluster吧

目录

一、背景描述1.1 机器准备1.2 软件版本1.3 部署架构1.4 环境说明二、前期准备2.1 一键优化三、实施部署3.1 容器运行时3.2 初始kubeadm环境3.3 初始cluster环境3.4 join节点3.5 验收集群

一、背景描述

采用kubeadm方式安装[1]

kubeadm

1.1 机器准备

主机名称主机IP操作系统角色分配
K-KUBE-LAB-0110.101.11.240Ubuntu 20.04.2 LTScontrol-plane,master
K-KUBE-LAB-0210.101.11.146Ubuntu 20.04.2 LTScontrol-plane,master
K-KUBE-LAB-0310.101.11.154Ubuntu 20.04.2 LTScontrol-plane,master
K-KUBE-LAB-0410.101.11.234Ubuntu 20.04.2 LTSnode
K-KUBE-LAB-0510.101.11.171Ubuntu 20.04.2 LTSnode

机器参考官方最小配置指导,采用2核CPU/8G内存/100G磁盘,私有化虚拟机部署。

1.2 软件版本

截止目前的最新匹配版本

软件名称版本
kubeadmv1.21.3
kubeletv1.21.3
kubernetesv1.21.3
etcd3.4.13-0
flannelv0.14.0
coredns1.8.4
containerd.io1.4.9-1

•kubeadm[2]•kubernetes[3]•cni[4]•containerd[5]•flannel[6]•coredns[7]•dashboard[8]

1.3 部署架构

部署拓扑

部署组件

1.4 环境说明

•国内私有云网络环境•镜像提前下载到私有环境harbor(可以从阿里云镜像中转下载)

二、前期准备

进行必要的操作让每个节点符合kubernetes安装的要求

2.1 一键优化

优化内容包括

•优化文件打开数•关闭swap•启动必要模块•优化内核•优化软件源•安装必要软件•kubectl命令bash补全

curl -s https://m.8ops.top/attachment/kubernetes/01-init.sh | bash

三、实施部署

3.1 容器运行时

在所有节点需要执行的操作

使用containerd做为容器运行时

apt install -y containerd.io=1.4.9-1 apt-mark hold containerd.ioapt-mark showhold

更多容器运行时[9]

默认配置

containerd config default

curl -s https://m.8ops.top/attachment/kubernetes/containerd-config-usage.toml \ -o /etc/containerd/config.toml

3.2 初始kubeadm环境

在所有节点需要执行的操作

安装kubeadm必要软件包

apt install -y kubelet=1.21.3-00 kubeadm=1.21.3-00 kubectl=1.21.3-00apt-mark hold kubelet kubeadm kubectlapt-mark showhold

完善crictl执行配置

cat > /etc/systemd/system/kubelet.service.d/0-containerd.conf < /etc/crictl.yaml <

不配置指定时会默认依次按顺序使用:docker->containerd->cri-o

WARN[0000] image connect using default endpoints: [unix:///var/run/dockershim.sock unix:///run/containerd/containerd.sock unix:///run/crio/crio.sock]

若docker没有则报错,如下

FATA[0010] failed to connect: failed to connect: context deadline exceeded

3.3 初始化集群

选择其中一台 control-plane,master 节点,这里选择 10.101.11.240

默认配置

kubeadm config print init-defaults

curl -s https://m.8ops.top/attachment/kubernetes/kubeadmin-init-usage.yaml \ -o kubeadm-init.yaml#OR#curl -s https://m.8ops.top/attachment/kubernetes/kubeadmin-init-usage-v2.yaml \# -o kubeadm-init.yaml

操作镜像

# 默认镜像kubeadm config images list -v 5# 打印镜像kubeadm config images list --config kubeadm-init.yaml -v 5# 预取镜像kubeadm config images pull --config kubeadm-init.yaml -v 5

操作镜像

初始化集群

kubeadm init --config kubeadm-init.yaml --upload-certs -v 5

初始化集群

配置缺省时kubeconfig文件

mkdir -p ~/.kube && ln -s etc/kubernetes/admin.conf ~/.kube/config

查看节点

kubectl get no

查看节点

3.4 Join 节点

获取Join信息

方式一

在初始化集群成功时输出的信息中有打印出来,参考上面Output内容

方式二

上传certs

# 上传 certkubeadm init phase upload-certs --upload-certs# 生成 tokenkubeadm token generate# 打印 join control-plane,masterkubeadm token create n1em3c.bc2bvyp7rrka399e --print-join-command -v 5 \ --certificate-key 8b0c2a63ff252e88f0a87a82e9b4ff6059984b2ed3c7bc60523ceb001ebcfb64# 打印 join nodekubeadm token create 3gn6g3.53pxqq890sjxuzjh --print-join-command -v 5

查看 token list

kubeadm token list

查看 token list

join control-plane,master

kubeadm join 10.101.10.11:6443 --token abcdef.0123456789abcdef \ --discovery-token-ca-cert-hash sha256:ae1d593bbadecf245c30f4c1cfe9250faa0aaa9e4c27b7f34bcb10142d0dd0c8 \ --control-plane --certificate-key 811e33703005a1df116201ae6469d86746274c3579e62b7c924cc4c13a804bca -v 5in the cluster.

join node

kubeadm join 10.101.10.11:6443 --token abcdef.0123456789abcdef \ --discovery-token-ca-cert-hash sha256:ae1d593bbadecf245c30f4c1cfe9250faa0aaa9e4c27b7f34bcb10142d0dd0c8

3.5 验收集群

查看cluster-info

kubectl cluster-info

cluster-info

OR

kubectl get cs

cs

controller-manager和scheduler未健康就位,修复此问题

sed -i '/--port/d' /etc/kubernetes/manifests/kube-controller-manager.yamlsed -i '/--port/d' /etc/kubernetes/manifests/kube-scheduler.yaml

即时自动生效

cs

部署flannel

kubectl apply -f https://m.8ops.top/attachment/kubernetes/kube-flannel.yaml

查看应用

kubectl get all -A

all

coredns未就位,修复此问题

kubectl edit clusterrole system:coredns

append

- apiGroups: - discovery.k8s.io resources: - endpointslices verbs: - list - watch

删除原有pod/coredns-xx

kubectl -n kube-system delete pod/coredns-55866688ff-hwp4m pod/coredns-55866688ff-tn8sj

查看节点

kubectl get no

Success

至此 kubernetes cluster 搭建完成了。

上一篇:Kubernetes - 使用kubeadm部署kubernetes集群
下一篇:kubernetes 安装 Prometheus + Grafana
相关文章

 发表评论

暂时没有评论,来抢沙发吧~