Centos7.7使用kubeadm快速部署K8s集群(适合新手)

部署环境:

以下实验都是在VM虚拟机中进行部署的,仅供个人学习测试,不建议直接上生产环境.

PS:其中,master的CPU核数至少需要2核,还没有测试过1G内存是否可以正常安装

节点   系统   CPU核数   内存   磁盘   IP  
k8s-master   Centos7.7minimal   2核 2G   20G 192.168.2.130
k8s-node01 Centos7.7minimal 1核 1G 20G 192.168.2.134  
k8s-node02 Centos7.7minimal 1核 1G 20G 192.168.2.135

部署步骤:

三个节点分别执行以下命令
192.168.2.130执行该命令
hostnamectl set-hostname k8s-master
192.168.2.134执行该命令
hostnamectl set-hostname k8s-node01
192.168.2.135执行该命令
hostnamectl set-hostname k8s-node02

三个节点全部执行以下命令
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i ‘s/^SELINUX=.*/SELINUX=disabled/‘ /etc/selinux/config
swapoff -a                         #关闭swap交换分区
sed -i ‘/ swap / s/^\(.*\)$/#\1/g‘ /etc/fstab      #禁止swap交换分区开机自启

#配置hosts文件
cat >> /etc/hosts << EOF        
192.168.2.130 k8s-master
192.168.2.134 k8s-node01
192.168.2.135 k8s-node02
EOF

#内核调整,将桥接的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                        #使上一条命令的配置生效
yum install -y ntpdate                  #安装ntpdate用于校准时间,确保master和node时间同步
ntpdate time.windows.com            #校准时间
yum install wget -y

#如果以下安装docker的方式失败,可以参考我的博客https://www.cnblogs.com/biaopei/p/11937292.html
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
#以下命令用来配置镜像地址..
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
systemctl enable docker
systemctl start docker

#因为默认k8s镜像仓库需要翻出去,所以配置国内镜像地址
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

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

以下操作只需要在master中执行
#记得将192.168.2.130修改为master的ip地址,其余不变.需要等待几分钟才可执行完成.会提示[WARNING IsDockerSystemdCheck]: detected "cgroupfs" as the Docker cgroup driver.只是警告可忽略.(如果master的cpu核数只有1核,这里还会提示cpu核数达不到要求的2核)
kubeadm init \
--apiserver-advertise-address=192.168.2.130 \
--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

#执行完上一条语句后,会有类似如下命令的提示,根据提示执行即可.还有一条kubeadm join 192.168.2.130:6443 --token,这个是用来在node上执行,加入到k8s集群中的,我们稍后需要用到
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

以下操作在两个node中执行
#不要直接复制这里的,是kubeadm init执行完成后,后面提示的那条语句.就是我们刚才说的那个
kubeadm join 192.168.2.130:6443 --token c1qboh.pg159xmk61z5rbeg \
    --discovery-token-ca-cert-hash sha256:ff09b3a7b0989de094b73e811bf378d8ab1cf3c1e413e3753ebd5de826075931

以下操作在master执行
#配置flannel网络
wget https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/Documentation/kube-flannel.yml

vi kube-flannel.yml
#修改以下行对应内容,注意不能使用tab键,只能使用空格进行对启,注意格式要按照原来的,不能多一个空格,也不能少一个空格

106    image: lizhenliang/flannel:v0.11.0-amd64
120    image: lizhenliang/flannel:v0.11.0-amd64

kubectl apply -f kube-flannel.yml
ps -ef|grep flannel|grep -v grep                   #可能需要10分钟左右启动初始化完成,才有返回结果.然后再执行下一步
kubectl get nodes                               #可能需要等待十几分钟,状态才能全部转为ready.然后再执行下一步
kubectl get pod -n kube-system                       #可能需要等待十几分钟,直至所有状态才能全部转为ready 1/1.然后再执行下一步
kubectl create deployment nginx --image=nginx                #创建nginx服务
kubectl expose deployment nginx --port=80 --type=NodePort       #暴露nginx服务80端口
kubectl get pods,svc                               #查看运行中的服务80:31214/TCP.我们从宿主机访问masterip:31214即可访问到nginx服务.但是也需要等待几分钟,直到该端口可以telnet通..然后再执行下一步

访问nginx,效果:


#配置k8s UI界面
wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml

vi kubernetes-dashboard.yaml
#修改以下行对应内容,注意不能使用tab键,只能使用空格进行对启,注意格式要按照原来的,不能多一个空格,也不能少一个空格

......
111       - name: kubernetes-dashboard
112         image: lizhenliang/kubernetes-dashboard-amd64:v1.10.1   # 替换此行
......

157 spec:
158   type: NodePort     # 增加此行
159   ports:
160     - port: 443
161       targetPort: 8443
162       nodePort: 30001   # 增加此行
163   selector:
164     k8s-app: kubernetes-dashboard

kubectl apply -f kubernetes-dashboard.yaml                         #现在我们可以访问https://192.168.2.130:30001.当然也需要等一会.注意是https

访问K8S UI界面,效果:

会提示链接不安全,点击高级->接受风险并继续即可

kubectl create serviceaccount dashboard-admin -n kube-system                  #创建管理员帐号
kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin      #配置管理员帐号为集群管理员帐号?

#执行以下命令后,会生成对应的token,在https://192.168.2.130:30001中选择token,输入该token即可登陆k8s管理后台
kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk ‘/dashboard-admin/{print $1}‘)

输入Token,登陆K8S UI界面,效果:

最终效果

K8S部署完成.

本文参考自:

https://cloud.tencent.com/developer/article/1509412

一次成功,感谢原文作者的分享!

原文地址:https://www.cnblogs.com/biaopei/p/12545310.html

时间: 2024-11-06 07:44:16

Centos7.7使用kubeadm快速部署K8s集群(适合新手)的相关文章

kubeadm快速安装k8s集群(1master+2node)

```本文档参考阿良老师的文档, 结合自己的问题,做了部分修改,如有侵权,联系删除! kubeadm是官方推出的安装k8s集群方式中的一种,另外一种是二进制安装 主要通过master端的kubeadm init 和node端的kubeadm join 一. 环境准备 部署K8s集群机器需要满足以下几个条件:使用VMware创建三台主机,要求如下:1.系统CentOS7.52.停掉swap,关闭防火墙和selinux3.机器之间相互可以ping通,且可以连接外部网络4.硬件预计需要内存2G加硬盘2

kubernetes系列03—kubeadm安装部署K8S集群

1.kubernetes安装介绍 1.1 K8S架构图 1.2 K8S搭建安装示意图 1.3 安装kubernetes方法 1.3.1 方法1:使用kubeadm 安装kubernetes(本文演示的就是此方法) 优点:你只要安装kubeadm即可:kubeadm会帮你自动部署安装K8S集群:如:初始化K8S集群.配置各个插件的证书认证.部署集群网络等.安装简易. 缺点:不是自己一步一步安装,可能对K8S的理解不会那么深:并且有那一部分有问题,自己不好修正. 1.3.2 方法2:二进制安装部署k

使用minikube快速部署k8s集群

1. 安装kubectl curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl && chmod +x kubectl && sudo mv kubectl /usr/local/bin/

使用kubeadm部署k8s集群01-初始化

使用kubeadm部署k8s集群01-初始化 2018/1/3 节点配置 master x3 OS version: centos7 swapoff ### 阿里云默认:off hosts ### 每个节点上配置: [[email protected] ~]# cat /etc/hosts ### k8s master @envDev 10.10.9.67 tvm-00 10.10.9.68 tvm-01 10.10.9.69 tvm-02 Docker version: latest(17.0

使用kubeadm部署k8s集群00-缓存gcr.io镜像

使用kubeadm部署k8s集群00-缓存gcr.io镜像 2018/2/7 原因:kubeadm init 时,需要下载一些镜像,但国内网络原因,大家懂的,不容易下载,此时,只能去绕过它.备注:官方在 1.5 收到阿里一位童鞋的 PR 来允许指定一个第三方的 registry 来解决上述问题,但因为时间所限,并未找到具体的操作方法. [在国外节点上操作] 镜像来源 针对下述镜像: gcr.io/google_containers/kube-apiserver-amd64:v1.9.0 gcr.

Kubernetes/3.使用Kubeadm部署k8s集群

使用Kubeadm部署k8s集群 kubeadm是一个提供了"kubeadm init"和"kubeadm join"最佳实践命令,且用于快速构建一个kubernetes集群的工具,你可以使用此工具快速构建一个kubernetes学习环境.通过本章节的学习,你将能够使用kubeadm工具,成功构建出一个基础的kubernetes集群环境. 环境准备 Hosts文件准备 Docker环境配置 其他准备工作 使用Kubeadm部署k8s集群 参考文档 备注 环境准备 i

使用kubeadm部署k8s集群08-配置LB指向kube-apiserver

使用kubeadm部署k8s集群08-配置LB指向kube-apiserver 2018/1/4 配置 LB 指向 kube-apiserver 小目标:在 3 个 master 节点前,还需配置一个 LB 来作为 apiserver 的入口 LB -> master x3 直接使用阿里云内网 SLB L4 proxy 资源(本次实例是 4 层而不使用 7 层的原因是:跳过了处理证书的环节) 申请下来资源后,将得到一个 vip 指向上述 3 个 master 节点的 IP 作为后端真实服务器 注

使用kubeadm部署k8s集群05-配置kubectl访问kube-apiserver

使用kubeadm部署k8s集群05-配置kubectl访问kube-apiserver 2018/1/4 配置 kubectl 访问 kube-apiserver 切换 master 节点连接到本节点的 apiserver 确认集群信息 切换 master 节点连接到本节点的 apiserver ### 为了在这 2 个新的节点执行 kubectl 需要配置 admin.yaml [[email protected] ~]# mkdir -p ~/k8s_install/master/admi

使用kubeadm部署k8s集群07-扩容kube-scheduler到3节点

使用kubeadm部署k8s集群07-扩容kube-scheduler到3节点 2018/1/4 扩容 kube-scheduler 到 3 节点 连接到本节点的 apiserver [[email protected] kube-controller-manager]# cat /etc/kubernetes/manifests/kube-scheduler.yaml |grep '/etc/kubernetes' --kubeconfig=/etc/kubernetes/scheduler.