基于kubeadm方式的k8s集群搭建——单机版
第一:环境准备
1、检查操作系统的版本
[root@ ~]# cat /etc/system-release CentOS Linux release 7.9.2009 (Core)
2、关闭防火墙
[root@ ~]# systemctl stop firewalld [root@ ~]# systemctl disable firewalld [root@ ~]# systemctl status firewalld ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) Active: inactive (dead) Docs: man:firewalld(1)
3、关闭selinux
[root@ ~]# setenforce 0 #临时关闭 [root@ ~]# sed -i 's/enforcing/disabled/' /etc/selinux/config #永久关闭 [root@ ~]# getenforce Permissive
4、关闭分区
[root@ ~]# swapoff -a #临时关闭 [root@ ~]# sed -ri 's/.*swap.*/#&/' /etc/fstab #永久关闭 [root@ ~]# free -m total used free shared buff/cache available Mem: 15362 2283 11350 0 1728 12799 Swap: 0 0 0 #检查是否都已经关闭,swap一行都为0表示关闭
5、将桥接的IPv4流量传递到iptables的链
[root@ ~]# cat > /etc/sysctl.d/k8s.conf << EOF > net.bridge.bridge-nf-call-ip6tables = 1 > net.bridge.bridge-nf-call-iptables = 1 > EOF #创建文件并输入内容 [root@ ~]# sysctl --system #生效 举例:[root@haha ~]# cat << EOF > file 可以进行创建一个文件并且文本编辑 > this is 1 > this is 2 > EOF
6、时间同步
[root@ ~]# yum install ntpdate -y [root@ ~]# ntpdate time.windows.com 8 Oct 14:55:19 ntpdate[5130]: adjust time server 52.231.114.183 offset 0.016034 sec
第二步:安装
1、由于安装过docker,因此不进行安装。
[root@ ~]# systemctl start docker [root@ ~]# docker -v Docker version 20.10.18, build b40c2f6
安装步骤:
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo yum -y install docker-ce-18.06.1.ce-3.el7 systemctl enable docker && systemctl start docker docker --version Docker version 18.06.1-ce, build e68fc7a [root@ ~]# cat > /etc/docker/daemon.json << EOF > { > "registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"] > } > EOF #配置docker加速
2、添加Yum源
[root@ ~]# cat > /etc/yum.repos.d/kubernetes.repo << EOF > [kubernetes] > name=Kubernetes > baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 > enabled=1 > gpgcheck=0 > repo_gpgcheck=0 > gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg > EOF
3、安装kubeadm,kubelet和kubectl
安装kubectl、kubelet、kubeadm
kubectl:kubectl是Kubernetes命令行工具。通过运行kubectl可以部署和管理应用,查看各类资源,创建、删除和更新各种组件。 kublet:kublet运行在Cluster的所有节点上,负责启动Pod和容器。 kubeadm:kubeadm用于初始化Cluster。
[root@ ~]# yum install -y kubelet-1.20.0 kubeadm-1.20.0 kubectl-1.20.0 [root@ ~]# systemctl enable kubelet Created symlink from /etc/systemd/system/multi-user.target.wants/kubelet.service to /usr/lib/systemd/system/kubelet.service.
第三步:创建集群
1、初始化
[root@ ~]# kubeadm init \ > --apiserver-advertise-address=10.0.0.41 \ > --image-repository registry.aliyuncs.com/google_containers \ > --kubernetes-version v1.20.0 \ > --service-cidr=10.96.0.0/12 \ > --pod-network-cidr=10.244.0.0/16 [root@ ~]# docker ps #可以拿该命令检查是否创建
2、创建必要文件
[root@ ~]# mkdir -p $HOME/.kube [root@ ~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config [root@ ~]# sudo chown $(id -u):$(id -g) $HOME/.kube/config
3、检查
[root@ ~]# kubectl get nodes NAME STATUS ROLES AGE VERSION beijing-test-jmeter NotReady control-plane,master 4m31s v1.20.0
4、安装网络插件
kubernetes支持多种网络插件,比如flannel、 calico、 canal等等, 任选一种使用即可;本次选择flannel。
[root@ ~]# wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml #获取fanne1的配置文件 [root@ ~]# kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml namespace/kube-flannel created clusterrole.rbac.authorization.k8s.io/flannel created clusterrolebinding.rbac.authorization.k8s.io/flannel created serviceaccount/flannel created configmap/kube-flannel-cfg created daemonset.apps/kube-flannel-ds created [root@ ~]# kubectl get pods -n kube-system [root@ ~]# kubectl get nodes NAME STATUS ROLES AGE VERSION ~ Ready control-plane,master 30m v1.20.0 #此时网络配置已经做好
第四步:
因为是单机部署,这时候的master节点是有污点,不能作为部署节点部署使用的
[root@ ~]# kubectl get no -o yaml | grep taint -A 5 #查看是否有污点 kubectl taint nodes --all node-role.kubernetes.io/master- #去除所有的污点 kubectl taint nodes k8s-master(指定节点) node-role.kubernetes.io/master- #去除指定节点污点 [root@ ~]# kubectl get no -o yaml | grep taint -A 5 #再次查看,如果没有任何输出则污点去除成功 [root@ ~]# kubectl get pods --all-namespaces NAMESPACE NAME READY STATUS RESTARTS AGE kube-flannel kube-flannel-ds-chlhv 1/1 Running 0 42m kube-system coredns-7f89b7bc75-2ncll 1/1 Running 0 71m kube-system coredns-7f89b7bc75-998xq 1/1 Running 0 71m kube-system etcd-beijing-test-jmeter 1/1 Running 0 72m kube-system kube-apiserver-beijing-test-jmeter 1/1 Running 0 72m kube-system kube-controller-manager-beijing-test-jmeter 1/1 Running 0 72m kube-system kube-proxy-znjdq 1/1 Running 0 71m kube-system kube-scheduler-beijing-test-jmeter 1/1 Running 0 72m #查看pod节点是否成功启动,所有节点都是running
补充知识点:
# 将master节点设为可以调度——去污点 kubectl taint nodes --all node-role.kubernetes.io/master- # 如果需要设为不允许调度 # kubectl taint nodes master node-role.kubernetes.io/master=:NoSchedule # 污点可选参数 NoSchedule: 一定不能被调度 PreferNoSchedule: 尽量不要调度 NoExecute: 不仅不会调度, 还会驱逐Node上已有的Pod
第五步:
安装 Kuboard v3 - 内建用户库——部署计划
-
假设用户通过 http:// 外网IP:80 访问 Kuboard v3;
-
安装在 Kubernetes 中的 Kuboard Agent 通过 访问 Kuboard 的 Web 服务端口 80 和 Kuboard Agent Server 端口 10081。
内网IP
安装 Kuboard v3.x 版本的指令如下:
sudo docker run -d \ --restart=unless-stopped \ --name=kuboard \ -p 80:80/tcp \ -p 10081:10081/tcp \ -e KUBOARD_ENDPOINT="http://10.0.0.41:80" \ -e KUBOARD_AGENT_SERVER_TCP_PORT="10081" \ -v /root/kuboard-data:/data \ eipwork/kuboard:v3 # 也可以使用镜像 swr.cn-east-2.myhuaweicloud.com/kuboard/kuboard:v3 ,可以更快地完成镜像下载。 # 请不要使用 127.0.0.1 或者 localhost 作为内网 IP \ # Kuboard 不需要和 K8S 在同一个网段,Kuboard Agent 甚至可以通过代理访问 Kuboard Server \
登录账号:
在浏览器输入 http://your-host-ip:80
即可访问 Kuboard v3.x 的界面,登录方式:
-
用户名:
admin
-
密 码: Kuboard123
1、导入集群——如果你使用部署过服务,导入即可。
[root@ ~ etc]# kubectl get pods,svc NAME READY STATUS RESTARTS AGE pod/nginx-65c4bffcb6-vxfpr 1/1 Running 0 20h NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 22h service/nginx NodePort 10.99.1.86 <none> 80:31643/TCP 20h 注: 导入的是service/kubernetes行的IP地址————————10.96.0.1
2、导入集群——查看官网操作( Kuboard官网)