Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >kubeadm一键部署Kubernetes(CentOS 7.5+)

kubeadm一键部署Kubernetes(CentOS 7.5+)

原创
作者头像
运维搬砖
修改于 2019-06-17 01:57:56
修改于 2019-06-17 01:57:56
1.8K00
代码可运行
举报
文章被收录于专栏:LeorizonLeorizon
运行总次数:0
代码可运行

一、操作系统环境初始化:

1、节点规划

准备部署一个 一主两从三节点 Kubernetes集群,整体节点规划如下表所示:

主机名

IP

角色

k8s-master

192.168.189.159

k8s主节点

k8s-node-1

192.168.189.151

k8s从节点

k8s-node-2

192.168.189.152

k8s从节点

下面介绍一下各个节点的软件版本:

  • 操作系统:CentOS-7.6-64Bit
  • Docker版本:1.13.1 +
  • Kubernetes版本:1.14.2 +

所有节点都需要安装以下组件:

  • Docker:不用多说了吧
  • kubelet:运行于所有 Node上,负责启动容器和 Pod
  • kubeadm:负责初始化集群
  • kubectl: k8s命令行工具,通过其可以部署/管理应用 以及CRUD各种资源

2、系统设置:

1)关闭防火墙

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
systemctl disable firewalld.service && systemctl stop firewalld.service 

2)禁用SELINUX

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
setenforce 0 
sed -i 's/^SELINUX=enforcing$/SELINUX= disabled/' /etc/selinux/config 

# 检查是否关闭 
cat /etc/selinux/config 

3)禁用swap分区(kubernetes不支持swap分区)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
swapoff -a  
vim /etc/fstab    
# 将swap分区删除或者注释掉,或者在安装操作系统时不创建swap分区 

4)设置各节点主机名

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
hostnamectl --static set-hostname  k8s-master 
hostnamectl --static set-hostname  k8s-node-1 
hostnamectl --static set-hostname  k8s-node-2 

5)所有节点 主机名/IP加入 hosts解析

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
vim /etc/hosts  
192.168.189.159 k8s-master
192.168.189.151 k8s-node-1
192.168.189.152 k8s-node-2

6)centos7的用户还需要:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cat <<EOF >  /etc/sysctl.d/k8s.conf 
net.bridge.bridge-nf-call-ip6tables = 1 
net.bridge.bridge-nf-call-iptables = 1 
EOF 

sysctl --system 

7)向系统添加docker和kubernetes软件依赖源

docker-ce.repo (使用阿里云镜像仓库

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/$basearch/stable
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-stable-debuginfo]
name=Docker CE Stable - Debuginfo $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/debug-$basearch/stable
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-stable-source]
name=Docker CE Stable - Sources
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/source/stable
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-edge]
name=Docker CE Edge - $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/$basearch/edge
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-edge-debuginfo]
name=Docker CE Edge - Debuginfo $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/debug-$basearch/edge
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-edge-source]
name=Docker CE Edge - Sources
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/source/edge
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-test]
name=Docker CE Test - $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/$basearch/test
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-test-debuginfo]
name=Docker CE Test - Debuginfo $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/debug-$basearch/test
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-test-source]
name=Docker CE Test - Sources
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/source/test
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-nightly]
name=Docker CE Nightly - $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/$basearch/nightly
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-nightly-debuginfo]
name=Docker CE Nightly - Debuginfo $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/debug-$basearch/nightly
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-nightly-source]
name=Docker CE Nightly - Sources
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/source/nightly
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

创建kubernetes.repo文件 (使用阿里云镜像仓库)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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 

8)安装docker-ce,每个节点都要安装

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
yum install docker-ce -y

docker version

#设置开机启动docker和启动docker服务
systemctl enable docker && systemctl start docker

9)安装kubernetes服务,每个节点都要安装

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
指定版本安装:
yum install kubelet-1.13.1 kubeadm-1.13.1 kubectl-1.13.1 kubernetes-cni-0.6.0

安装最新版:
yum install kubelet kubeadm kubectl -y

查看kubelet的版本:
kubeadm version
kubectl version

设置开机启动kubel、启动kubelet
systemctl enable kubelet 
systemctl start kubelet
systemctl restart kubelet

10)初始化Master主节点:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 可以在初始话master之前下载镜像
kubeadm config images pull

kubeadm init \
--apiserver-advertise-address=192.168.189.159 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version=v1.14.2 \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.244.0.0/16
  • --kubernetes-version: 用于指定 k8s版本
  • --apiserver-advertise-address:用于指定使用 Master的哪个network interface进行通信,若不指定,则 kubeadm会自动选择具有默认网关的 interface
  • --pod-network-cidr:用于指定Pod的网络范围。该参数使用依赖于使用的网络方案。
  • --service--cidr:负载均衡的IP地址段

11)Master节点加入Kubernetes集群

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

12)pod网络部署到集群中

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
wget https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/Documentation/kube-flannel.yml

docker pull lizhenliang/flannel:v0.11.0-amd64
kubectl apply -f kube-flannel.yml

# 查看核心组件运行状态
kubectl get pods -n kube-system
kubectl get pods --all-namespaces -o wide

13)Node节点加入Kubernetes集群当中

在初始化Master主节点成功后,控制台会有一串 kubeadm join 192.168.189.159:6443......的信息,将其保存下来,那是在node节点加入master节点时执行的语句。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 kubeadm join 192.168.189.159:6443 \
--token 9l4mpr.j3gj2beqxpa9dhzm \
--discovery-token-ca-cert-hash sha256:\
1d1eeb6347deef4132c6c3b570fea80345f42a2381795ed198afa60cdd0c1fe0

14)安装dashboard

代码语言:shell
AI代码解释
复制
wget https://raw.githubusercontent.com/kubernetes/dashboard/master\
/aio/deploy/recommended/kubernetes-dashboard.yaml

vim kubernetes-dashboard.yaml
1、修改Dashboard Deployment 的 dashboard的镜像地址
 spec:
      containers:
      - name: kubernetes-dashboard
        image: mirrorgooglecontainers/kubernetes-dashboard-amd64:v1.10.0
2、修改 Dashboard Service 网络类型
spec:
  type: NodePort
  ports:
    - port: 443
      targetPort: 8443
      nodePort: 30000
      
创建dashboard
kubectl apply -f kubernetes-dashboard.yaml

15)创建dashboard-serviceaccount的账号,用于kubernetes-dashboard来操作访问

代码语言:shell
AI代码解释
复制
kubectl create serviceaccount dashboard-serviceaccount -n kube-system
kubectl create clusterrolebinding dashboard-cluster-admin \
--clusterrole=cluster-admin \
--serviceaccount=kube-system:dashboard-serviceaccount

kubectl get secret -n kube-system |grep dashboard-serviceaccount-token
kubectl describe secret -n kube-system dashboard-serviceaccount-token-5c7v2 

16)小技巧:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
小技巧,由于后面的操作都是在 kube-system 名称空间中进行,
可以设置个别名:ksys=kubectl -n kube-system 
这样就可以使用ksys操作该名称空间了
命令参考:alias ksys='kubectl -n kube-system'

比如查看k8s系统服务外网暴露端口:
可以这样:kubectl get service --namespace=kube-system
也可以简写为这样:ksys get svc

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Kubernetes/K8S部署之kubeadm
修改镜像地址:(有可能默认不能拉取,确保能够访问到quay.io这个registery,否则修改如下内容)
码客说
2021/03/04
1.2K0
CentOS 7.6 使用kubeadm安装Kubernetes 13
装系统的时候就已经设置为静态IP了,语言为英语,时区是上海。另外因为kubernetes默认不支持swap分区,所以在硬盘分区的时候直接把swap分区拿掉了。这里可以先忽略这些。
星哥玩云
2022/07/27
2780
kubernetes项目部署
上面设置好以后,配置会自动通过连接api server最终存储到etcd中去。但是上面的配置过程十分的复杂,除非你对网络十分的属性
曲奇小点点
2024/08/26
1390
kubernetes项目部署
kubeadm安装Kubernetes 1.14.2
Kubernetes(简称K8S)是开源的容器集群管理系统,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。它既是一款容器编排工具,也是全新的基于容器技术的分布式架构领先方案。在Docker技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等功能,提高了大规模容器集群管理的便捷性。
子润先生
2021/07/08
6740
使用kubeadm部署Kubernetes v1.13.3
Kubernetes默认CRI(容器运行时)为Docker,因此先安装Docker
仙人技术
2020/04/29
5670
Kubeadm快速部署Kubernetes1.13版本
kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具 ,这个工具能通过两条指令完成一个kubernetes集群的部署,比纯手工安装方便。
kubernetes中文社区
2019/06/24
6340
Kubeadm快速部署Kubernetes1.13版本
使用Kubeadm安装V1.15.3集群
参考文档:https://mp.weixin.qq.com/s/vnriX2bTtnkv8i2UpLeNnA
DevOps云学堂
2019/10/18
3630
使用Kubeadm安装V1.15.3集群
如何快速搭建kubernetes实验环境?
很多小伙伴电脑配置比较高,可以直接用虚拟机开两台机器,至少得确保自己的电脑16G内存以上
李俊鹏
2022/09/21
7970
CentOS7环境下快速部署Kubernetes(k8s)集群
Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效,Kubernetes提供了应用部署,规划,更新,维护的一种机制
yuanfan2012
2020/03/26
5.2K0
CentOS7环境下快速部署Kubernetes(k8s)集群
使用 kubeadm 部署 kubernetes 1.13.1
最近有时间重新学习 k8s。k8s 的安装比之前简单了许多,本文介绍如何使用 kubeadm 部署 kubernetns 1.13.1
tanmx
2019/01/03
2.8K0
部署k8s集群(k8s集群搭建详细实践版)
Kubeadm是一个K8s部署工具,提供kubeadm init和kubeadm join,用于快速部署Kubernetes集群。
zjiekou
2022/11/12
22.4K5
基于Containerd部署Kubernetes
当Kubernetes 1.20开始准备弃用Docker,相信很多人在k8s 1.20版本出现的时候,都听说了即将弃用docker,不过还没有完全弃用,但这也是未来的趋势了。k8s的底层还是容器。
互联网-小阿宇
2022/11/21
8430
K8s集群v1.26.1版本的简单部署实践
使用cri-dockerd+calico+kubernetes-dashboard
yuanfan2012
2023/02/23
2.5K0
K8s集群v1.26.1版本的简单部署实践
17 Dec 2021 centos7安装kubernetes
将节点加入集群,若忘记了该命令,在master节点执行kubeadm token create --print-join-command获取。
俊采
2023/10/17
2010
安装kubernetes
1.1 环境准备介绍 角色 IP地址 操作系统 配置 kubernetes docker master 192.168.199.100 centos7.x 2核/2G/50G 1.18.0 18.06.3 node1 192.168.199.101 centos7.x 2核/2G/50G 1.18.0 18.06.3 node2 192.168.199.102 centos7.x 2核/2G/50G 1.18.0 18.06.3 1.2 准备工作 1.2.1 关闭防火墙 systemctl
ruochen
2021/12/05
1.7K0
腾讯云使用kubeadm安装k8s
k8s是现在最热门的技术之一。常混在技术圈的你,是否有种蠢蠢欲动的感觉,却因k8s环境的安装复杂性,却放弃。本篇文章将对k8s的安装进行展开。
暮雨
2018/11/15
7.1K1
腾讯云使用kubeadm安装k8s
kubeadm快速部署kubernetes(十九)
安装完成后配置启动时的命令,否则docker会将iptables FORWARD chain的默认策略设置为DROP
yuezhimi
2020/09/30
4710
kubeadm快速部署kubernetes(十九)
【Kubernetes】10分钟部署一套K8S集群(kubeadm)
TIPS:需要在所有集群机器上执行的命令,可以用XSHELL的发送命令到所有会话,提高部署效率
Hanzo
2020/08/05
16.4K4
【Kubernetes】10分钟部署一套K8S集群(kubeadm)
安装部署Kubernetes集群
其实本节的文章我在很久之前就已经发过了一次,但不够详细,层次不清。我今天部署的时候看的够呛(虽然也是部署成功了),也算是对以前的坑,做个忏悔吧。本文可能会比较boring,但请相信这并不是我的本意。这一定是最精简的笔记之一,相信我这绝对不是混水。
PayneWu
2021/06/10
5770
安装部署Kubernetes集群
10分钟搭建Kubernetes容器集群平台(kubeadm)
Minikube是一个工具,可以在本地快速运行一个单点的Kubernetes,尝试Kubernetes或日常开发的用户使用。不能用于生产环境。
星哥玩云
2022/07/28
4030
10分钟搭建Kubernetes容器集群平台(kubeadm)
相关推荐
Kubernetes/K8S部署之kubeadm
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验