使用kubeadm快速部署K8S V1.18
1、基础环境,至少1个Master和1个Worker;
2、基本配置
1) 服务器开启硬件虚拟化支持; 2) 操作系统版本大于CentOS7.5,Minimal模式,可update到最新版本; 3) 关闭SElinux和Firewalld服务; #sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux #setenforce 0 #systemctl disable firewalld #systemctl stop firewalld 4) 设置hostname并在/etc/hosts配置本地解析; #hostnamectl set-hostname master1.lab.com 5) 关闭Swap服务 #swapoff -a #sed -i '/swap/d' /etc/fstab 6) 修改sysctl.conf #echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf #echo "net.bridge.bridge-nf-call-ip6tables = 1" >> /etc/sysctl.conf #echo "net.bridge.bridge-nf-call-iptables = 1" >> /etc/sysctl.conf #sysctl -p 若提示cannot stat /proc/sys/net/bridge/bridge-nf-call-ip6tables: No such file or directory #modprobe net_brfilter #sysctl -p
3、所有节点安装Docker服务
1) 如果已安装过旧版本需要删除: #yum -y remove docker-client docker-client-latest docker-common docker-latest docker-logrotate docker-latest-logrotate \ docker-selinux docker-engine-selinux docker-engine 2) 设置阿里云docker仓库,并安装Docker服务; #yum -y install yum-utils lvm2 device-mapper-persistent-data nfs-utils xfsprogs wget #yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo #yum -y install docker-ce docker-ce-cli containerd.io #systemctl enable docker #systemctl start docker
4、所有节点安装K8S服务
1) 如果已安装过旧版本,需要删除: #yum -y remove kubelet kubadm kubctl 2) 设置阿里云的仓库,并安装新版本 #cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=0 repo_gpgcheck=0 gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF #yum -y install kubelet kubeadm kubectl Node节点不需要按照kubectl 3) 修改Docker Cgroup Driver为systemd,如果不修改则在后续添加Worker节点时可能会遇到“detected cgroupfs as ths Docker driver.xx”的报错信息,并配置Docker本地镜像库; cat > /etc/docker/daemon.json <<EOF { "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2", "registry-mirrors":[ "https://kfwkfulq.mirror.aliyuncs.com", "https://2lqq34jg.mirror.aliyuncs.com", "https://pee6w651.mirror.aliyuncs.com", "http://hub-mirror.c.163.com", "https://docker.mirrors.ustc.edu.cn", "https://registry.docker-cn.com" ] } 4) 重启Docker,并启动Kubelet #systemctl daemon-reload #systemctl restart docker #systemctl enable kubelet #systemctl start kubelet
5、Master节点部署
1) 如果需要初始化Master节点,请执行#kubeadm reset; 2) 配置环境变量: #echo export MASTER_IP=10.33.0.51 > k8s.env.sh #echo export APISERVER_NAME=master1.lab.com >> k8s.env.sh #sh k8s.env.sh 3) Master节点初始化: #kubeadm init \ --apiserver-advertise-address 0.0.0.0 \ --apiserver-bind-port 6443 \ --cert-dir /etc/kubernetes/pki \ --control-plane-endpoint master1.lab.com \ --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers \ --kubernetes-version 1.18.2 \ --pod-network-cidr 10.11.0.0/16 \ --service-cidr 10.20.0.0/16 \ --service-dns-domain cluster.local \ --upload-certs # 初始化 Control-plane/Master 节点,命名参数说明
kubeadm init \
--apiserver-advertise-address 0.0.0.0 \ # API 服务器所公布的其正在监听的 IP 地址,指定“0.0.0.0”以使用默认网络接口的地址 # 切记只可以是内网IP,不能是外网IP,如果有多网卡,可以使用此选项指定某个网卡 --apiserver-bind-port 6443 \ # API 服务器绑定的端口,默认 6443 --cert-dir /etc/kubernetes/pki \ # 保存和存储证书的路径,默认值:"/etc/kubernetes/pki" --control-plane-endpoint kuber4s.api \ # 为控制平面指定一个稳定的 IP 地址或 DNS 名称, # 这里指定的 kuber4s.api 已经在 /etc/hosts 配置解析为本机IP --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers \ # 选择用于拉取Control-plane的镜像的容器仓库,默认值:"k8s.gcr.io" # 因 Google被墙,这里选择国内仓库 --kubernetes-version 1.17.3 \ # 为Control-plane选择一个特定的 Kubernetes 版本, 默认值:"stable-1" --node-name master01 \ # 指定节点的名称,不指定的话为主机hostname,默认可以不指定 --pod-network-cidr 10.10.0.0/16 \ # 指定pod的IP地址范围 --service-cidr 10.20.0.0/16 \ # 指定Service的VIP地址范围 --service-dns-domain cluster.local \ # 为Service另外指定域名,默认"cluster.local" --upload-certs # 将 Control-plane 证书上传到 kubeadm-certs Secret 4) 配置kubectl: #rm -f .kube && mkdir .kube #cp -i /etc/kubernets/admin.conf .kube/config #chown $(id -u):$(id -g) $HOME/.kube/config //可用于为普通用户分配kubectl权限
6、安装Calico网络插件:
集群必须安装网络插件以实现Pod间通信,只需要在Master节点操作,其他Node节点会自动创建相关Pod; #wget https://docs.projectcalico.org/v3.8/manifests/calico.yaml 该配置文件默认采用的Pod的IP地址为192.168.0.0/16,需要修改为集群初始化参数中采用的值,本例中为10.10.0.0/16; #sed -i "s#192\.168\.0\.0/16#10\.10\.0\.0/16#" calico.yaml #kubectl apply -f calico.yaml 1) 等待所有容器状态处于Running状态: #watch -n 2 kubectl get pods -n kube-system -o wide #kubectl get nodes -o wide //查看所有node状态 2) 获取join命令参数,并保存输出结果: #kubeadm token create --print-join-command > node.join.sh
7、Worker节点部署
1) 如果需要初始化Worker节点,请执行#kubeadm reset; 2) 从Master复制环境变量和加入集群脚本: #scp master:/root/k8s.env.sh master:/root/mode.join.sh . #sh k8s.env.sh #sh node.join.sh 或直接执行 #kubeadm join master1.lab.com:6443 --token e1xszv.7fa46uw7intwcbwi \ --discovery-token-ca-cert-hash sha256:2637022ef0928d0b390bf10b246ccf20e00f73966667bc711d683a8d71492e5a 3) 在Master节点查看Worker状态: #kubectl get nodes -o wide 4) 移除Worker节点: 在Worker节点执行 #kubeadm reset -f 在Master节点执行 #kubectl delete node <worker节点主机名>
7、增加Master节点
1) 在待增加Master节点执行 #kubeadm join master1.lab.com:6443 --token e1xszv.7fa46uw7intwcbwi \ --discovery-token-ca-cert-hash sha256:2637022ef0928d0b390bf10b246ccf20e00f73966667bc711d683a8d71492e5a\ --control-plane --certificate-key 5253fc7e9a4e6204d0683ed2d60db336b3ff64ddad30ba59b4c0bf40d8ccadcd
8、安装Ingress Controller
1) 在Master节点执行,具体可以参考https://github.com/nginxinc/kubernetes-ingress/blob/v1.5.3/docs/installation.md #kubectl apply -f https://kuboard.cn/install-script/v1.16.0/nginx-ingress.yaml
9、安装Kuboard图形化管理界面
1) 在Master节点执行 #kubectl apply -f https://kuboard.cn/install-script/kuboard.yaml 查看运行状态,可能需要几分钟才能成为Running状态: #kubectl get pods -l k8s.eip.work/name=kuboard -n kube-system 2) 获取Token权限,用于界面登录 #kubectl -n kube-system get secret $(kubectl -n kube-system get secret | grep kuboard-user | awk '{print $1}') -o go-template='{{.data.token}}' | base64 -d > admin-token.txt #kubectl -n kube-system get secret $(kubectl -n kube-system get secret | grep kuboard-viewer | awk '{print $1}') -o go-template='{{.data.token}}' | base64 -d > read-only-token.txt 3) 管理节目访问 http://任意一个Worker节点的IP地址:32567
备注:本文部分内容参考 https://www.kubernetes.org.cn/7315.html,感谢原文作者!
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Serverless,会将工程师带入“不归路”!
云栖号资讯:【点击查看更多行业资讯】在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 别被标题吓到了。 技术的发展,从来不以个人的意志为主转移,程序员的某些分工也必将随着技术的演进而消失。 在开始之前,我们首先来看一下Serverless是个什么概念。 Serverless直译为“无服务器”,并不是说代码运行就不需要在服务器上跑了。它的意思是,未来的开发,无需关注服务器这种比较底层的设施,代码将会直接跑起来。这些资源将变得不可见。 危险了!基础运维人员们。 象一个Java应用的开发过程。你需要经过开发、测试、部署,才能正常上线。如果是一个高并发的应用,就需要预估一个峰值,比如,需要100台服务器,才能支撑用户的请求。有产品经理脑袋一热,加了秒杀的功能,那么你的峰值,就需要按照秒杀的峰值进行设计,即使这个峰值过程持续了不到10秒,一哆嗦之后所有的资源都会被闲置。也就是说,服务器放在那里即使不用,你也要为此付费。 老板捂着心口说痛,猝死了。 事情会更加的复杂,服务器的数量一多,你需要考虑怎么快速部署;每台机器的配置,都需要进行精细的计算,包括JVM要分配多大的内存,网络的安全...
- 下一篇
phoenix-5.0.0与CDH6.0.1兼容性导致二级索引不可用问题解决
今天在测试phoenix的二级索引功能时,创建完索引写入数据,出现以下异常: Caused by: org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException: Failed 1 action: org.apache.phoenix.hbase.index.builder.IndexBuildingFailureException: Failed to build index for unexpected reason! at org.apache.phoenix.hbase.index.util.IndexManagementUtil.rethrowIndexingException(IndexManagementUtil.java:206) at org.apache.phoenix.hbase.index.Indexer.preBatchMutate(Indexer.java:351) at org.apache.hadoop.hbase.regionserver.RegionCoprocessorHos...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS7,CentOS8安装Elasticsearch6.8.6
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS6,CentOS7官方镜像安装Oracle11G
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- 设置Eclipse缩进为4个空格,增强代码规范
- Mario游戏-低调大师作品
- MySQL8.0.19开启GTID主从同步CentOS8
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16