千家信息网

kubeadm快速部署k8s集群

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具。这个工具能通过两条指令完成一个kubernetes集群的部署:创建一个 Master 节点$ kubeadm init将一
千家信息网最后更新 2026年11月01日kubeadm快速部署k8s集群

kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具。

这个工具能通过两条指令完成一个kubernetes集群的部署:

创建一个 Master 节点
$ kubeadm init

将一个 Node 节点加入到当前集群中
$ kubeadm join

1. 安装要求

在开始之前,部署Kubernetes集群机器需要满足以下几个条件:

  • 一台或多台机器,操作系统 CentOS7.x-86_x64
  • 硬件配置:2GB或更多RAM,2个CPU或更多CPU,硬盘30GB或更多
  • 集群中所有机器之间网络互通
  • 可以访问互联网,需要下载镜像
  • 禁止swap分区

2. 学习目标

  1. 在所有节点上安装Docker和kubeadm
  2. 部署Kubernetes Master
  3. 部署容器网络插件
  4. 部署 Kubernetes Node,将节点加入Kubernetes集群中
  5. 部署Dashboard Web页面,可视化查看Kubernetes资源

3. 准备环境

关闭防火墙:
$ systemctl stop firewalld
$ systemctl disable firewalld

关闭selinux:
$ sed -i 's/enforcing/disabled/' /etc/selinux/config
$ setenforce 0

关闭swap:
$ swapoff -a $ 临时
$ vim /etc/fstab $ 永久
cd /etc/yum.repos.d/
mv CentOS-Base.repo CentOS-Base.repo.ori
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

添加主机名与IP对应关系(记得设置主机名):
如hostnamectl set-hostname k8s-master01
cat /etc/hosts
192.168.56.135 k8s-master01
192.168.56.136 k8s-node01
192.168.56.137 k8s-node02

将桥接的IPv4流量传递到iptables的链:
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system

4. 所有节点安装Docker/kubeadm/kubelet

Kubernetes默认CRI(容器运行时)为Docker,因此先安装Docker。

4.1 安装Docker
为了防止k8s不兼容最新版docker,这里安装18版本的
yum install -y yum-utils device-mapper-persistent-data lvm2
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

4.2 添加阿里云YUM软件源

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

4.3 安装kubeadm,kubelet和kubectl

由于版本更新频繁,这里指定版本号部署:

yum install -y kubelet-1.15.0 kubeadm-1.15.0 kubectl-1.15.0
systemctl enable kubelet

5. 部署Kubernetes Master

在192.168.56.135(Master)执行。

$ kubeadm init \
--apiserver-advertise-address=192.168.56.135 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.15.0 \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.244.0.0/16

由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址。

使用kubectl工具:

上一步完成后执行如下(master端会有提示)
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

$ kubectl get nodes

6. 安装Pod网络插件(CNI)

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/Documentation/kube-flannel.yml

确保能够访问到quay.io这个registery。

如果下载失败,可以改成这个镜像地址:lizhenliang/flannel:v0.11.0-amd64

7. 加入Kubernetes Node

在192.168.56.136/137(Node)执行。

向集群添加新节点,执行在kubeadm init输出的kubeadm join命令:

$ kubeadm join 192.168.56.135:6443 --token 8dbunt.xmqng5i4tk1nrta7 \
--discovery-token-ca-cert-hash sha256:8ce8d089b11a7eaff9d18405cdfa052d3e4f5e09f50bc88e06a8884de634b68c
稍等片刻,在master查看节点信息。
[root@k8s-master01 ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s-master01 Ready master 38m v1.15.0
k8s-node01 Ready 26m v1.15.0
k8s-node02 Ready 26m v1.15.0

8.测试kubernetes集群

在Kubernetes集群中创建一个pod,验证是否正常运行:

kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort

[root@k8s-master01 ~]# kubectl get pod,svc
NAME READY STATUS RESTARTS AGE
pod/nginx-554b9c67f9-4bcw5 0/1 ContainerCreating 0 20s

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.1.0.1 443/TCP 16m
service/nginx NodePort 10.1.232.178 80:30778/TCP 9s

访问地址:http://192.168.56.136:30778

9. 部署 Dashboard

wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml

默认镜像国内无法访问,修改镜像地址为: lizhenliang/kubernetes-dashboard-amd64:v1.10.1

默认Dashboard只能集群内部访问,还需要修改Service为NodePort类型,暴露到外部:
kind: Service
apiVersion: v1
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kube-system
spec:
type: NodePort
ports:

  • port: 443
    targetPort: 8443
    nodePort: 30001
    selector:
    k8s-app: kubernetes-dashboard

$ kubectl apply -f kubernetes-dashboard.yaml

访问地址:https://192.168.56.136:30001

创建service account并绑定默认cluster-admin管理员集群角色:

$ kubectl create serviceaccount dashboard-admin -n kube-system
$ kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
$ kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')

使用输出的token登录Dashboard。

10. k8s 命令自动补全

yum install -y bash-completion
source /usr/share/bash-completion/bash_completion
source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc

集群 节点 地址 镜像 工具 更多 机器 版本 网络 主机 命令 容器 插件 阿里 输出 运行 频繁 操作系统 之间 互联网 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技公司排名 鑫亿盛互联网科技 九亚互联网科技 狮子座互联网科技有限公司 易通互联网络科技有限公司 天下捷融互联网科技 中国的互联网科技企业的崛起 互联网金融中的现代科技 互联网软件和科技 武汉健翔互联网络科技有限公司 威龙国际互联网科技公司 华中科技大学互联网的牛人 广东工业互联网大赛深圳学泰科技 四川互联网展示科技馆设计 上海互联网科技公司ppt 广州有谷有贝互联网科技有限公司 南京一网一红互联网科技有限公司 第三届互联网大会安防黑科技 北京瑞云互联网科技有限公司 互联网科技自媒体灵感 湖南永感互联网科技有限公司 互联网品科技 深圳齐家互联网科技 丰台科技园 互联网公司 宁夏众和广鑫互联网科技有限公司 湖南一路畅行互联网科技 健康食品互联网创新科技园项目 朱啸虎曾投资哪些互联网科技企业 上海科技产业互联网平台 新氧科技和美国互联网有关系吗
0