准备

云原生的概念越来越火,忍不住去看了看kubernetes,初次接触,晕晕乎乎的,于是不管三七二十一,先搭建个单机版的再说(没钱买服务器,目前也懒得装虚拟机),跑起来也算是第一步吧。网上教程一顿搜,各种配置一顿配,这里正好做个记录。

步骤

关闭防火强和selinux

  • 关闭防火请
  1. systemctl stop firewalld
  2. systemctl disable firewalld
  • 关闭selinux
  1. setenforce 0
  • 修改文件/etc/selinux/config
  1. [root@zhangpeilei ~]# cat /etc/selinux/config
  2. SELINUX=disabled
  3. SELINUXTYPE=targeted

禁用swap

  1. swapoff -a

修改内核参数和模块

  • 修改文件/etc/sysctl.d/k8s.conf
  1. net.bridge.bridge-nf-call-ip6tables = 1
  2. net.bridge.bridge-nf-call-iptables = 1
  • 执行命令
  1. sysctl --system
  2. modprobe br_netfilter

安装docker,网上方法很多

  1. yum -y install yum-utils device-mapper-persistent-data lvm2
  2. yum-config-manager -y --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  3. yum -y install docker-ce-18.06.3.ce-3.el7 docker-ce-cli-18.06.3.ce-3.el7 containerd.io
  4. systemctl start docker
  5. systemctl enable docker

安装完执行下

  1. docker version
  2. [root@zhangpeilei ~]# docker version
  3. Client:
  4. Version: 18.06.3-ce
  5. API version: 1.38
  6. Go version: go1.10.3
  7. Git commit: d7080c1
  8. Built: Wed Feb 20 02:26:51 2019
  9. OS/Arch: linux/amd64
  10. Experimental: false
  11. Server:
  12. Engine:
  13. Version: 18.06.3-ce
  14. API version: 1.38 (minimum version 1.12)
  15. Go version: go1.10.3
  16. Git commit: d7080c1
  17. Built: Wed Feb 20 02:28:17 2019
  18. OS/Arch: linux/amd64
  19. Experimental: false

安装kubernates组件

  • 修改文件/etc/yum.repos.d/kubernetes.repo
  1. [kubernetes]
  2. name=Kubernetes
  3. baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
  4. enabled=1
  5. gpgcheck=1
  6. repo_gpgcheck=1
  7. gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
  • 执行命令
  1. yum -y install kubelet-1.13* kubeadm-1.13* kubectl-1.13*
  2. systemctl start kubelet
  3. systemctl enable kubelet

下载kubernetes镜像,并且打标签

  1. docker pull mirrorgooglecontainers/kube-apiserver:v1.13.3
  2. docker pull mirrorgooglecontainers/kube-controller-manager:v1.13.3
  3. docker pull mirrorgooglecontainers/kube-scheduler:v1.13.3
  4. docker pull mirrorgooglecontainers/kube-proxy:v1.13.3
  5. docker pull mirrorgooglecontainers/pause:3.1
  6. docker pull mirrorgooglecontainers/etcd:3.2.24
  7. docker pull coredns/coredns:1.2.6
  8. # 打标签
  9. docker tag mirrorgooglecontainers/kube-apiserver:v1.13.3 k8s.gcr.io/kube-apiserver:v1.13.3
  10. docker tag mirrorgooglecontainers/kube-controller-manager:v1.13.3 k8s.gcr.io/kube-controller-manager:v1.13.3
  11. docker tag mirrorgooglecontainers/kube-scheduler:v1.13.3 k8s.gcr.io/kube-scheduler:v1.13.3
  12. docker tag mirrorgooglecontainers/kube-proxy:v1.13.3 k8s.gcr.io/kube-proxy:v1.13.3
  13. docker tag mirrorgooglecontainers/pause:3.1 k8s.gcr.io/pause:3.1
  14. docker tag mirrorgooglecontainers/etcd:3.2.24 k8s.gcr.io/etcd:3.2.24
  15. docker tag coredns/coredns:1.2.6 k8s.gcr.io/coredns:1.2.6

初始化

  1. kubeadm init --kubernetes-version=v1.13.3

接下来根据提示做如下操作

  1. mkdir -p $HOME/.kube
  2. sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  3. sudo chown $(id -u):$(id -g) $HOME/.kube/config
  4. kubectl apply -f https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')
  • 成功后执行如下命令看是否成功
  1. [root@zhangpeilei ~]# kubectl get pods --all-namespaces
  2. NAMESPACE NAME READY STATUS RESTARTS AGE
  3. kube-system coredns-86c58d9df4-7b8vr 0/1 Pending 0 76s
  4. kube-system coredns-86c58d9df4-z8lrf 0/1 Pending 0 76s
  5. kube-system etcd-zhangpeilei 1/1 Running 0 22s
  6. kube-system kube-apiserver-zhangpeilei 1/1 Running 0 13s
  7. kube-system kube-controller-manager-zhangpeilei 1/1 Running 0 20s
  8. kube-system kube-proxy-qlmpp 1/1 Running 0 76s
  9. kube-system kube-scheduler-zhangpeilei 1/1 Running 0 31s
  10. kube-system weave-net-2ph7d 2/2 Running 0 9s

至此我们安装应该成功了.

master加入节点

  1. kubeadm join <ip>:<port> --token <token> --discovery-token-ca-cert-hash <hash>

查看节点

  1. [root@zhangpeilei ~]# kubectl get nodes
  2. NAME STATUS ROLES AGE VERSION
  3. zhangpeilei Ready master 3h40m v1.13.12

但安装的时候哪有一帆风顺的,下面是我碰到的一些问题。

问题一

  1. root@zhangpeilei ~]# kubectl get pods --all-namespaces
  2. Unable to connect to the server: x509: certificate signed by unknown authority (possibly because of "crypto/rsa: verification error" while trying to verify candidate authority certificate "kubernetes")

解决方式:如果执行完

  1. kubeadm reset

命令后,需要先

  1. rm -rf $HOME/.kube

然后再执行如下命令:

  1. mkdir -p $HOME/.kube
  2. sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  3. sudo chown $(id -u):$(id -g) $HOME/.kube/config

问题二

查看节点

  1. [root@zhangpeilei ~]# kubectl get nodes
  2. NAME STATUS ROLES AGE VERSION
  3. zhangpeilei NotReady master 3h40m v1.13.12

发现节点状态是NotReady,首先通过命令查看日志

  1. journalctl -f -u kubelet.service

修改文件/etc/cni/net.d/10-flannel.conflist

  1. {
  2. "name": "cbr0",
  3. "cniVersion": "0.2.0",
  4. "plugins": [
  5. {
  6. "type": "flannel",
  7. "delegate": {
  8. "hairpinMode": true,
  9. "isDefaultGateway": true
  10. }
  11. },
  12. {
  13. "type": "portmap",
  14. "capabilities": {
  15. "portMappings": true
  16. }
  17. }
  18. ]
  19. }

修改后运行

  1. systemctl daemon-reload

单机版搭建kubernetes(K8s)的更多相关文章

  1. 微服务探索之路03篇-docker私有仓库Harbor搭建+Kubernetes(k8s)部署私有仓库的镜像

    ❝ 目录: 微服务探索之路01篇.net6.0项目本地win10系统docker到服务器liunx系统docker的贯通 微服务探索之路02篇liunx ubuntu服务器部署k8s(kubernet ...

  2. mac上利用minikube搭建kubernetes(k8s)环境

    友情提示:对于初次接触k8s的同学,强烈建议先看看本文最后的参考文章. 环境: mac os(Mojave) 前提:先安装好kubectl (brew install kubectl) .docker ...

  3. Centos7 安装部署Kubernetes(k8s)集群

    目录 一.系统环境 二.前言 三.Kubernetes 3.1 概述 3.2 Kubernetes 组件 3.2.1 控制平面组件 3.2.2 Node组件 四.安装部署Kubernetes集群 4. ...

  4. 二进制搭建kubernetes多master集群【四、配置k8s node】

    上一篇我们部署了kubernetes的master集群,参考:二进制搭建kubernetes多master集群[三.配置k8s master及高可用] 本文在以下主机上操作部署k8s node k8s ...

  5. 二进制搭建kubernetes多master集群【三、配置k8s master及高可用】

    前面两篇文章已经配置好了etcd和flannel的网络,现在开始配置k8s master集群. etcd集群配置参考:二进制搭建kubernetes多master集群[一.使用TLS证书搭建etcd集 ...

  6. 使用国内的镜像源搭建 kubernetes(k8s)集群

    1. 概述 老话说的好:努力学习,提高自己,让自己知道的比别人多,了解的别人多. 言归正传,之前我们聊了 Docker,随着业务的不断扩大,Docker 容器不断增多,物理机也不断增多,此时我们会发现 ...

  7. K8S 使用Kubeadm搭建高可用Kubernetes(K8S)集群 - 证书有效期100年

    1.概述 Kubenetes集群的控制平面节点(即Master节点)由数据库服务(Etcd)+其他组件服务(Apiserver.Controller-manager.Scheduler...)组成. ...

  8. Kubernetes(k8s) docker集群搭建

    原文地址:https://blog.csdn.net/real_myth/article/details/78719244 一.Kubernetes系列之介绍篇   •Kubernetes介绍 1.背 ...

  9. 使用kubeadm搭建Kubernetes(1.10.2)集群(国内环境)

    目录 目标 准备 主机 软件 步骤 (1/4)安装 kubeadm, kubelet and kubectl (2/4)初始化master节点 (3/4) 安装网络插件 (4/4)加入其他节点 (可选 ...

随机推荐

  1. Layui 关闭自己刷新父页面

    var index = parent.layer.getFrameIndex(window.name); parent.layer.close(index); window.parent.locati ...

  2. AcWing 1290. 越狱

    监狱有连续编号为1~n的n个房间,每个房间关押一个犯人.有 M种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人信仰的宗教相同,就可能发生越狱.求有多少种状态可能发生越狱. #include< ...

  3. 万字长文肝Git--全流程知识点包您满意【建议收藏】

    您好,我是码农飞哥,感谢您阅读本文,欢迎一键三连哦. 本文将首先介绍在本地搭建GitLab服务,然后重点介绍Git的常用命令,Git的核心概念以及冲突处理,最后介绍Git与SVN的区别 干货满满,建议 ...

  4. shell运维习题训练

    注:初学shell,以下为本人自己写的答案,如果有更好的,请指教! 1. 求2个数之和: 2. 计算1-100的和 3. 将一目录下所有的文件的扩展名改为bak 4.编译并执行当前目录下的所有.c文件 ...

  5. IDA,IDA PRO 产品介绍

    IDA理念这是我们在开发产品时竭尽全力遵循的理念--在此过程中,我们相信我们将开发出能够为您带来所需的可靠性.便利性和易用性的软件.没有什么能打败人脑因为我们知道一秒钟的洞察力仍然胜过百年的处理时间, ...

  6. asp.net core 视图组件(转)

    介绍视图组件 视图组件是 ASP.NET Core MVC 中的新特性,与局部视图相似,但是它们更加的强大.视图组件不使用模型绑定,只取决于调用它时所提供的数据.视图组件有以下特点: 渲染一个块,而不 ...

  7. ARTS第十周

     之前忘了发布 1.Algorithm:每周至少做一个 leetcode 的算法题2.Review:阅读并点评至少一篇英文技术文章3.Tip:学习至少一个技术技巧4.Share:分享一篇有观点和思考的 ...

  8. 如何处理RabbitMQ 消息堆积和消息丢失问题

    消息堆积 解决方案: 增加消费者或后台相关组件的吞吐能力 增加消费的多线程处理 根据不同的业务实现不同的丢弃任务,选择不同的策略淘汰任务 默认情况下,RabbitMQ消费者为单线程串行消费,设置并行消 ...

  9. Linux安装Tomcat-Nginx-FastDFS-Redis-Solr-集群——【第十一集补充:修改fastdfs的http.conf文件进行防盗链,重启nginx失败】

    1,进入fastdfs的安装目录: 2,修改http.conf文件,详情可参考: https://www.cnblogs.com/xiaolinstudy/p/9341779.html 3,重启ngi ...

  10. 正则表达式的模式匹配----V客学院技术分享

    正则表达式是由一个字符序列形成的搜索模式. 你在文本中搜索数据时,你可以用搜索模式来描述你要查询的内容. 正则表达式可以是一个简单的字符,或一个更复杂的模式. 正则表达式可用于所有文本搜索和文本替换的 ...