【k8s单机版】centos安装k8s单机版
这里写自定义目录标题
- 简介
- 一、机器环境初始化
-
- 1.关闭防火墙、swap等
- 2.内核参数修改
- 二. 安装docker
- 三.配置containerd
- 四.下载阿里云的kubernetes
- 五.k8s初始化
- 六.部署网络插件flannel
- 七.安装kubelet 命令补全 【可选】
- 八.安装metrics-server 【可选】
- 九.安装ingress 【可选】
简介
最近为了部署xkube这个多集群k8s管理平台的演示环境,需要搭建一套k8s环境用于演示,但是由于搭建一套完整的k8s比较耗费资源成本,所以打算购买了一台阿里云的ECS搭建一个单机版的k8s用于演示。
演示地址:https://xkube.eeenet.net
git地址:https://gitee.com/eeenet/xkub
一、机器环境初始化
1.关闭防火墙、swap等
systemctl stop firewalldsetenforce 0swapoff -asystemctl disable firewalldsed -i \'/^SELINUX=/ c\\SELINUX=disabled\' /etc/selinux/configsed -i \'/swap/ s/^/#/g\' /etc/fstab#ipvs模块cat >> /etc/sysconfig/modules/k8s.modules << EOF#! /bin/bashmodprobe br_netfiltermodprobe ip_vsmodprobe ip_vs_rrmodprobe ip_vs_wrrmodprobe ip_vs_shmodprobe nf_conntrackEOF
执行命令:
chmod +x /etc/sysconfig/modules/k8s.modules && cat /etc/sysconfig/modules/k8s.modules | bash
2.内核参数修改
cat >> /etc/sysctl.d/k8s.conf << EOFnet.ipv4.ip_forward=1net.bridge.bridge-nf-call-ip6tables=1net.bridge.bridge-nf-call-iptables=1net.netfilter.nf_conntrack_max=1048576vm.overcommit_memory=1vm.swappiness=0fs.file-max=52706963fs.nr_open=52706963EOF
执行命令:
sysctl -p /etc/sysctl.d/k8s.conf
二. 安装docker
yum install -y yum-utilsyum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repoyum install -y docker-ce-20.10.24 docker-ce-cli-20.10.24 containerd.io
修改docker的配置文件/etc/docker/daemon.json:
{ \"data-root\": \"/mnt/docker-image\", \"exec-opts\": [\"native.cgroupdriver=systemd\"], \"bip\":\"10.0.0.1/24\", \"registry-mirrors\": [\"https://xxxxx.mirror.aliyuncs.com\"] ##此处配置自己的加速地址,可以阿里云申请}
重启 docker:
systemctl daemon-reload && systemctl start docker && systemctl enable docker
三.配置containerd
生成配置文件:
containerd config default > /etc/containerd/config.toml
修改配置文件:
1.修改 sandbox_image 镜像配置,改为阿里镜像。
sandbox_image = \" registry.aliyuncs.com/google_containers/pause:3.6\"
2.注释掉 cri 插件,否则 kubelet 无法启动。
disabled_plugins = [\"cri\"]
更改为: disabled_plugins = [\"\"]
3.重启containerd:systemctl restart containerd
四.下载阿里云的kubernetes
编辑repo文件:
vim /etc/yum.repos.d/kube.repo
[kubernetes]name=kubernetesenabled=1baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/gpgcheck=1gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
然后执行如下命令:
wget https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpgrpm --import rpm-package-key.gpgyum repolistyum -y install kubectl kubeadm kubelet
五.k8s初始化
导出配置并拉取镜像:
kubeadm config print init-defaults > init.default.yaml
拉取配置中的镜像:
kubeadm config images pull --config=init.default.yaml
查看配置中的镜像:
kubeadm config images list --config init.default.yaml
初始化前执行命令:
systemctl enable docker && systemctl start kubelet && systemctl enable kubelet
执行初始化命令:
kubeadm init --apiserver-advertise-address=172.25.30.45 --apiserver-bind-port=6443 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --kubernetes-version=1.28.2 --image-repository registry.aliyuncs.com/google_containers
注:–apiserver-advertise-address 配置机器的IP地址
–kubernetes-version 配置正确的版本
其余的可以直接用命令中的参数
如果初始化失败,执行kubeadm reset 然后根据错误调试后,继续执行初始化命令。
成功以后会看到如下图:
六.部署网络插件flannel
下载配置:
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
如果下载不了配置中的镜像,可以先下载好镜像,推送到自己的镜像仓库,然后修改镜像到正确的地址,镜像地址如下:
image: ghcr.io/flannel-io/flannel:v0.27.2
image: ghcr.io/flannel-io/flannel-cni-plugin:v1.7.1-flannel1
镜像下载好,修改好配置以后执行命令:
kubectl apply -f kube-flannel.yml
最后一个关键配置,在 master 节点上布署服务时(启动pod),则需要修改master 节点污点配置
查看污点信息:kubectl describe node master |grep Taints
结果显示:Taints: node-role.kubernetes.io/control-plane:NoSchedule
去除污点命令: kubectl taint nodes master node-role.kubernetes.io/control-plane:NoSchedule-
最后一个\"-\"代表删除
备注:
NoSchedule : 一定不被调度 但是不会驱逐已有的 这个部署 ingress-controller 的时候 有用
PreferNoSchedule : 尽量不被调度
NoExecute : 不会调度,并且还会驱逐Node已有Pod 这个很坏
到此,单机版基本安装成功,可以执行命令:kubectl get node
查看状态
七.安装kubelet 命令补全 【可选】
命令如下:
yum -y install bash-completionsource /usr/share/bash-completion/bash_completionsource <(kubectl completion bash)echo \"source <(kubectl completion bash)\" >> ~/.bashrc
八.安装metrics-server 【可选】
由于 xkube 的功能中需要显示k8s的节点和pod的内存和cpu资源,所以进行安装。
下载配置:https://github.com/kubernetes-sigs/metrics-server/releases
修改配置components.yaml
增加一行–kubelet-insecure-tls ,然后将镜像的地址更改成阿里云的镜像地址:
参考下图:
执行安装:kubectl apply -f components.yaml
验证命令:kubectl top node
或者 kubectl top pod
九.安装ingress 【可选】
由于 xkube 的功能中展示需要设计ingress相关的配置和功能所以安装
官方安装文档:https://kubernetes.github.io/ingress-nginx/deploy/#quick-start
下载配置:
https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.10.1/deploy/static/provider/cloud/deploy.yaml
修改配置,主要就是将镜像地址改成阿里云的镜像地址:
image: registry.k8s.io/ingress-nginx/controller:v1.10.1@sha256:d1707ca76d3b044ab8a28277a2466a02100ee9f58a86af1535a3edf9323ea1b5改成:registry.registry.cn-hangzhou.aliyuncs.com/google_containers/nginx-ingress-controller:v1.10.1registry.k8s.io/ingress-nginx/kube-webhook-certgen:v1.4.1改成registry.cn-hangzhou.aliyuncs.com/google_containers/kube-webhook-certgen:v1.4.1
安装命令:
kubectl apply -f deploy.yaml
验证安装:kubectl get secret,job,svc,pod,deploy -A |grep ingress