Kubernetes入门(一)——Kubernetes v1.18.5 安装部署
Kubernetes的安装有两种方式:一是使用各个厂商封装的Kubernetes发行版,优点是可以一键安装部署,操作简单,缺点也很明显,若安装过程中某一步骤出现问题,很难定位处理;二是使用官方提供的kubeadm安装,优点是在安装过程中能熟悉各个组件的基本功能和命令,便于之后深入理解Kubernetes,缺点是安装步骤相对复杂。本文采用第二种,使用kubeadm安装目前最新版本v1.18.5,考虑到做为入门的学习调研,搭建了单Master的Kubernates集群,若要应用于生产环境,则需要安装多Master的高可用集群。
网上有很多关于Kubernetes的安装文档,这些文档大部分需要安装特别多的组件,而其中有些组件不是必须的,不利于初学者的学习和理解。Kubernetes官方的安装文档比较精简,但是安装步骤比较零散,且有些Docker容器需要科学*上网才能下载。本文档主要参考官网的安装步骤,力求只安装必要组件的同时,也补全官网安装步骤中介绍的比较粗略的部分,希望能给Kubernetes初学者提供一些参考,少走弯路。下面开始安装~~~
1. 环境准备 (master和work节点均需操作)
关闭swap分区
- 临时关闭swap
swapoff -a
- 永久关闭swap
vim /etc/fstab 注释掉自动挂载swap分区那行
禁用防火墙和selinux [1]
- 禁用防火墙
systemctl stop firewalld && systemctl disable firewalld
- 禁用selinux
#临时修改 setenforce 0 #永久修改,重启服务器后生效 sed -i 's/enforcing/disabled/' /etc/selinux/config
设置CRI 运行时的必要参数(docker运行会依赖这些参数)
- 设置必需的sysctl参数,这些参数在重新启动后仍然存在
cat > /etc/sysctl.d/k8s.conf <<EOF net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 net.bridge.bridge-nf-call-ip6tables = 1 EOF sysctl --system
安装Docker [2]
- 安装必要的包
yum -y install yum-utils device-mapper-persistent-data lvm2
- 添加阿里云yum源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- 查看可用版本
yum list docker-ce --showduplicates | sort -r
- 安装Docker CE
yum -y install docker-ce-19.03.4-3.el7 docker-ce-cli-19.03.4
- 创建 /etc/docker 目录
mkdir /etc/docker
- 设置deamon 并配置阿里云镜像加速
cat > /etc/docker/daemon.json <<EOF { "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2", "storage-opts": [ "overlay2.override_kernel_check=true" ], "registry-mirrors": ["https://gqk8w9va.mirror.aliyuncs.com"] } EOF mkdir -p /etc/systemd/system/docker.service.d
- 软链docker数据目录(考虑到/var挂载的磁盘存储空间一般比较小,存储docker镜像容易把磁盘打满)
mkdir /data0/docker ln -s /data0/docker /var/lib/docker
- 启动docker并设置开机自启动
systemctl daemon-reload systemctl start docker systemctl enable docker
- 查看阿里云镜像加速和版本
docker info docker version
安装kubeadm [3]
- 配置kubernetes仓库,使用阿里云yum源(官网配置的仓库地址,需科学*上网才能下载)
cat >/etc/yum.repos.d/kubernetes.repo <<EOF [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
- 安装v1.18.5版本的kubeadm、kubelet、kubectl
yum -y install kubelet-1.18.5-0 kubeadm-1.18.5-0 kubectl-1.18.5-0 kubeadm version
- 设置kubelet开机自启动
systemctl enable kubelet
2. 使用kubeadm创建单master集群
初始化master节点
- 配置kubeadm配置文件,针对不同版本的k8s注意修改相应版本号
cat <./kubeadm-config.yaml apiVersion: kubeadm.k8s.io/v1beta2 kind: ClusterConfiguration kubernetesVersion: v1.18.5 imageRepository: k8s.gcr.io #master地址 controlPlaneEndpoint: "10.13.1.2:6443" networking: serviceSubnet: "10.96.0.0/16" #k8s容器组所在的网段 podSubnet: "10.20.0.1/16" dnsDomain: "cluster.local" EOF
- 下载k8s所需镜像,由于国内连不上https://k8s.gcr.io/v2/, 因此需要先在dockerhub下载相关镜像,在修改对应tag [4]
cat <pull_k8s_images.sh set -o errexit set -o nounset set -o pipefail ##这里定义版本 KUBE_VERSION=v1.18.5 KUBE_PAUSE_VERSION=3.2 ETCD_VERSION=3.4.3-0 DNS_VERSION=1.6.7 GCR_URL=k8s.gcr.io ##这里就是写你要使用的仓库 DOCKERHUB_URL=gotok8s ##这里是镜像列表 images=( kube-proxy:${KUBE_VERSION} kube-scheduler:${KUBE_VERSION} kube-controller-manager:${KUBE_VERSION} kube-apiserver:${KUBE_VERSION} pause:${KUBE_PAUSE_VERSION} etcd:${ETCD_VERSION} coredns:${DNS_VERSION} ) ##这里是拉取和改名的循环语句 for imageName in ${images[@]} ; do docker pull $DOCKERHUB_URL/$imageName docker tag $DOCKERHUB_URL/$imageName $GCR_URL/$imageName docker rmi $DOCKERHUB_URL/$imageName done EOF chmod +x ./pull_k8s_images.sh sh pull_k8s_images.sh
- 执行初始化操作
kubeadm init --config=kubeadm-config.yaml
- 初始化完成后的控制台输出
Your Kubernetes control-plane has initialized successfully! To start using your cluster, you need to run the following as a regular user: mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config You should now deploy a pod network to the cluster. Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at: https://kubernetes.io/docs/concepts/cluster-administration/addons/ You can now join any number of control-plane nodes by copying certificate authorities and service account keys on each node and then running the following as root: kubeadm join 10.13.1.2:6443 --token e9j0mj.l7vmkwisjk8kwuno \ --discovery-token-ca-cert-hash sha256:a594e62b65f41eb4e3e92238b9c6cd8451c411a57efecf6d192be8c649a96606 \ --control-plane Then you can join any number of worker nodes by running the following on each as root: kubeadm join 10.13.1.2:6443 --token e9j0mj.l7vmkwisjk8kwuno \ --discovery-token-ca-cert-hash sha256:a594e62b65f41eb4e3e92238b9c6cd8451c411a57efecf6d192be8c649a96606
- 拷贝kubeconfig文件
mkdir -p /root/.kube cp -i /etc/kubernetes/admin.conf /root/.kube/config
- 安装网络插件calio
//下载文件 wget https://docs.projectcalico.org/v3.8/manifests/calico.yaml //安装calico网络插件 kubectl apply -f calico.yaml
worker节点加入集群
下载k8s所需镜像,参考master节点下载k8s镜像步骤
worker节点加入集群
kubeadm join 10.13.1.2:6443 --token e9j0mj.l7vmkwisjk8kwuno \ --discovery-token-ca-cert-hash sha256:a594e62b65f41eb4e3e92238b9c6cd8451c411a57efecf6d192be8c649a96606
验证集群状态(master节点)
//安装完成后稍等一会查看pods状态 kubectl get pods -n kube-system //查看node状态 kubectl get nodes #output NAME STATUS ROLES AGE VERSION 10.13.1.3 Ready3m12s v1.18.5 10.13.1.2 Ready master 27m v1.18.5 若发现master和worker节点状态均为Ready,说明安装完成啦!
故障排查
- 若观察到某一个pod状态不正常,可通过查看该pod的详细信息进行问题定位
kubectl describe pod
删除集群
// 删除deployment kubectl get deployment -o wide kubectl delete deployment deployment_name // 删除pod kubectl get pods kubectl delete pods --all // 删除节点 kubectl drainkubectl delete node// 重置集群 kubeadm reset
3. 参考资料
1. https://kubesphere.com.cn/forum/d/1272-kubeadm-k8s-kubesphere-2-1-1 手把手教程:Kubeadm 安装 k8s 后安装 kubesphere 2.1.1 2. https://kubernetes.io/zh/docs/setup/production-environment/container-runtimes/ 官网文档——容器运行时 3. https://kubernetes.io/zh/docs/setup/production-environment/tools/kubeadm/install-kubeadm/#k8s-install-1 官网文档——安装 kubeadm 4. https://blog.csdn.net/weixin_43168190/article/details/107227626 k8s拉取镜像失败最简单最快最完美解决方法 [ERROR ImagePull]: failed to pull image k8s.gcr.io/kube-apiserver 5. https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/ Creating a single control-plane cluster with kubeadm

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
【4.26-5.2】上周精彩回顾
优秀文章推荐 1、蚂蚁金服SOFARegistry之消息总线异步处理 2、tep环境变量、fixtures、用例三者之间的关系 3、进阶的决策树,从ID3升级到C4.5,模型大升级 4、Celery 异步任务队列高级用法 以及 3种调用任务的方法详解5、数据结构——30行代码实现栈和模拟递归 6、MongoDB副本集oplog设置过小问题7、 DenyHosts的安装与配置Centos7/6 8、Linux 驱动开发 | 驱动世界里的宏伟建筑9、 生产环境自动化变更全纪录10、UT之最后一测 专题推荐 1、死磕JVM2、机器学习基础3、MongoDB学习 活动及优化 1、2021年度51CTO技术博客大赛已经进入激动人心的投票阶段!欢迎各位投出宝贵一票: 【投票入口】 2、企业博客首页入口已经开放啦!!免费获得博客优质认证、首页超强曝光、内容优先推荐、审核快速通道等福利! 具体开通方式请参考:https://blog.51cto.com/51ctoblog/2633600 51CTO期待各位的入驻~
- 下一篇
SAAS 平台多租户多端开发框架 bwsaasV1.3.0 重磅发布-更新太多功能
新增 1 应用模块的更新功能 2 应用开发组合数据和框架独立开来 3 插件系统addons架构重构,增加基础继承类PluginBaseController 4 bwmall增加商城用户,财务,订单等相关统计 5 重写框架安装方法,更新框架sql 6 本地和oss文件同步删除功能 7 重大更新租户应用小程序的单独第三方平台上架程序模板控制 8 增加同步第三方小程序模板代码库功能 9 增加诸多功能操作介绍说明 10 应用安装,购买,更新,配置逻辑更改 11 增加发布并引用布网云官方发布的bwsaas-addons包 12 bwmall布网云商城 完美支持安卓,IOS,公众号,H5,微信小程序5端打包发布接入 13 增加服务商模式的微信APP支付功能 14 bwsaas框架增加smslog短信租户调用记录 15 增加完善bwsaas框架运营官网home应用【给力哦】 16 bwsaas框架官网CDN加速 JS CSS等,加版本号控制,为后续在线升级功能做准备 17 bwmall商城:常见问题从文章接口独立出来(后台独立管理菜单),零散图片统一配置接口,协议独立管理菜单,核销员核销记录 修复...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- 设置Eclipse缩进为4个空格,增强代码规范
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Hadoop3单机部署,实现最简伪集群
- Docker使用Oracle官方镜像安装(12C,18C,19C)