前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CentOS7环境下快速部署Kubernetes(k8s)集群

CentOS7环境下快速部署Kubernetes(k8s)集群

作者头像
yuanfan2012
发布2020-03-26 15:59:20
1.7K0
发布2020-03-26 15:59:20
举报
文章被收录于专栏:WalkingCloudWalkingCloud

Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效,Kubernetes提供了应用部署,规划,更新,维护的一种机制

k8s的概念可以参考如下链接

小孩子也能看懂的kubernetes教程

图文 | 任何人都能看懂的 Kubernetes 教程!

图文:你女朋友也能看懂的 Kubernetes !

下面介绍CentOS7环境下快速部署一套Kubernetes(k8s)集群

三台CentOS7.6.1810版本的Linux虚拟机 内存大小均为4GB

1、k8s-master 10.20.10.235

2、k8s-node1 10.20.10.237

3、k8s-node2 10.20.10.238

具体操作步骤如下

1、环境准备

1)三台主机分别修改主机名

k8s-master 10.20.10.235: hostnamectl set-hostname k8s-master

k8s-node1 10.20.10.237:hostnamectl set-hostname k8s-node1

k8s-node2 10.20.10.238:hostnamectl set-hostname k8s-node2

三台都修改vi /etc/hosts文件,加入主机名解析

10.20.10.235 k8s-master

10.20.10.237 k8s-node1

10.20.10.238 k8s-node2

以node1为例,并测试解析是否OK

2)三台主机均关闭防火墙,selinux,并关闭swap分区

swapoff -a

并永久关闭,/etc/fstab中注释掉swap分区一行

systemctl stop firewalld

systemctl disable firewalld

sed -i 's/enforcing/disabled/' /etc/selinux/config

setenforce 0

echo "net.bridge.bridge-nf-call-iptables = 1 ">>/etc/sysctl.d/k8s.conf

echo "net.bridge.bridge-nf-call-ip6tables = 1 ">>/etc/sysctl.d/k8s.conf

sysctl --system

开启net.bridge.bridge-nf-call-iptables=1,也就意味着二层的网桥在转发包时也会被iptables的FORWARD规则所过滤

具体原理可以参考如下文章

https://blog.csdn.net/qq_44910432/article/details/89292974

2、所有节点安装docker并启用docker

wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo

yum install docker-ce

systemctl enable docker

systemctl start docker

docker version

3、所有节点均安装并启用kubelet kubeadm kubectl

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

yum install -y kubelet kubeadm kubectl

systemctl enable kubelet

systemctl start kubelet

4、主节点进行初始化kubeadm init

1) kubeadm init --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.17.0 --apiserver-advertise-address 10.20.10.235 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.1.0.0/16

2)根据上一步的提示执行如下

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可以看到master还是处于NotReady状态

5、安装网络flannel组件

wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

kubectl apply -f kube-flannel.yml

kubectl get pods -n kube-system

kubectl get nodes

这时可以看到状态为Ready状态了

6、k8s-node1和k8s-node2加入集群

kubeadm join 10.20.10.235:6443 --token h5oegb.ops4pu6ynhmixhwh \

--discovery-token-ca-cert-hash sha256:c058feb51154138d0783cb8403970e5463aa2301f791217b8c3a1e658cfbebbf

(token是主节点初始化kubeadm init完成时的提示)加入集群

这时再等待一段时间再看节点状态可以看到集群建立成功

kubectl get pods,svc -n kube-system

7、当然你也可以安装kubernetes-dashboard等UI工具去管理集群

下面使用安装cockpit的方式查看kubernetes集群

关于cockpit 的安装可以参考之前的文章CentOS7环境下使用Cockpit创建KVM虚拟机

yum install cockpit

yum install cockpit-docker.x86_64

yum install cockpit-kubernetes.x86_64

systemctl enable cockpit.socket

systemctl start cockpit.socket

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-03-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 WalkingCloud 微信公众号,前往查看

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

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档