使用kubeadm搭建k8s集群

本文通过kudeadm方式在centos7上安装kubernetes集群:
一、k8s安装准备工作;
二、Docker安装;
三、Master节点安装;
四、Node节点安装;
五、集群测试。

一、k8s安装前的准备工作

1.1 kubeadm

Kubeadm是一个部署工具,提供kubeadm init和kubeadm join,用于快速部署Kubernetes集群。部署地址:https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm/

1.2 查看centos版本

这里使用centos7系统,查看centos版本:
rpm -q centos-release

1.3关闭防火墙、selinux、和swap

关闭防火墙
systemctl disable firewalld --now

临时关闭setlinux:
setenseforce 0
永久关闭的方法:
vim /etc/selinux/config
SELINUX=enforcing改为SELINUX=disabled,保存后退出

swapoff -a #临时关闭 # free 查看
永久关闭:
sed -i.bak '/swap/s/^/#/' /etc/fstab

1.4内核参数修改,内核调整,将桥接的IPv4流量传递到iptables的链

永久修改
[root@master ~]# cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward =1
EOF
[root@master ~]# sysctl -p /etc/sysctl.d/k8s.conf

二、Docker安装;

2.1 docker部署

vim /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes repo
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0 -- 设置0不做公钥检查
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
https://mirrors.aliyun.com/kubernetes/yum/doc/yum-package-key.gpg

--这里是设置docker的yum源
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

更新yum缓存
[root@master ~]# yum clean all
[root@master ~]# yum -y makecache

2.2安装docker ,每个节点都需要安装

yum list docker-ce --showduplicates | sort -r --该命令是查看仓库中所有的docker的版本并选择版本安装
yum -y install docker-ce-18.06.1.ce-3.el7 --指定下载该版本的docekr
或者下载最新的版本 yum install docker-ce

2.3 配置国内镜像加速器
登陆地址为:https://cr.console.aliyun.com ,未注册的可以先注册阿里云账户,选择容器镜像服务,配置镜像加速器

配置docekr的镜像地址命令
vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://wp6q9kkn.mirror.aliyuncs.com"]
}

重启服务验证
[root@centos7 ~]# systemctl restart docker
[root@centos7 ~]# docker --version
[root@centos7 ~]# docker run hello-world

1.19版之后k8s要求docker和k8s都使用systemd的cgroupDriver
修改daemon.json,新增
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"

2.4 安装k8s部署的相关工具,安装kubeadm,kubelet和kubectl

在部署kubernetes时,要求master node和worker node上的版本保持一致,否则会出现版本不同导致的奇怪问题。不指定版本会安装最新版的工具
yum install -y kubelet-<version> kubectl-<version> kubeadm-<version>
yum install -y kubelet-1.21.1 kubectl-1.21.1 kubeadm-1.21.1 kubernetes-cni

安装完成后开启kubelet
systemctl enable --now kubelet

以上操作是master节点和node节点上均需要执行的操作

三、Master节点安装

3.启动kubernetes集群(master节点上执行)
3.1 kubeadm init

通过kubeadm init [flags]命令可以启动一个master节点
kubeadm init \
--apiserver-advertise-address=192.168.100.10 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.21.1 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16

参数介绍

-kubernetes-version 后面的值通过 kubelet --version 查看
--apiserver-bind-port int32 Default: 6443 可以通过这个参数指定API-server的工作端口,默认是6443。
--config string 可以通过这个命令传入kubeadm的配置文件。
--dry-run 带了这个参数后,运行命令将会把kubeadm做的事情输出到标准输出,但是不会实际部署任何东西。强烈推荐!
-h, --help 输出帮助文档。
--node-name string 指定当前节点的名称。
--pod-network-cidr string 通过这个值来设定pod网络的IP地址网段;设置了这个值以后,控制平面会自动给每个节点设置CIDRs(无类别域间路由,Classless Inter-Domain Routing)。
--service-cidr string Default: “10.96.0.0/12” 设置service的CIDRs,默认为 10.96.0.0/12。
--service-dns-domain string Default: “cluster.local” 设置域名称后缀,默认为cluster.local。
其他参数。
建议至少2 cpu ,2G,非硬性要求,1cpu,1G也可以搭建起集群,但会有WARNING

将结果保存,后续添加节点时用得到
一定要导入环境变量才可以使用kubectl

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 node查看节点,会发现 节点状态是NotReady, 这是因为我们还没有部署容器网络,下面部署flannel容器网络 参考 https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/
执行 kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/c5d10c8/Documentation/kube-flannel.yml,计算云里可以先把文件下载下来,再执行

(或者使用calico及其他网络插件,可参考官方文档https://kubernetes.io/zh/docs/tasks/administer-cluster/network-policy-provider/
安装时替换文件image地址为aliyun地址)

四、Node节点安装

4.1 kubeadm join node节点加入集群:
使用kubeadm join命令使node节点加入集群
在两个 Node 节点执行
使用kubeadm join 注册Node节点到Matser
kubeadm join 的内容,在上面kubeadm init 已经生成好了

kubeadm join 192.168.100.10:6443 --token yhns57.4s3y2yll21ew8mta \
    --discovery-token-ca-cert-hash sha256:eeebf579f925b9a64b2fe1fde820bb1707496d8dbe6718759b93cb951c3fc651

生成一个新的token

kubeadm token create --print-join-command //默认有效期24小时,若想久一些可以结合--ttl参数,设为0则用不过期

查看token

kubeadm token list


export POD_NAME=(kubectl get pods -o go-template --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}') echo Name of the Pod:POD_NAME

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,056评论 5 474
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,842评论 2 378
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,938评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,296评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,292评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,413评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,824评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,493评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,686评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,502评论 2 318
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,553评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,281评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,820评论 3 305
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,873评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,109评论 1 258
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,699评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,257评论 2 341

推荐阅读更多精彩内容