zoukankan      html  css  js  c++  java
  • 容器编排服务Kubernetes(一)

    很好地一个Kubernetes教程,雅俗共赏。

    https://kubernetes.io/zh/docs/tutorials/kubernetes-basics/

    Kubernetes 帮助您确保这些容器化的应用程序在您想要的时间和地点运行,并帮助应用程序找到它们需要的资源和工具。 Kubernetes 是一个可用于生产的开源平台,根据 Google 容器集群方面积累的经验,以及来自社区的最佳实践而设计。

    一、创建一个集群。

    定义:Kubernetes 用于协调高度可用的计算机集群,这些计算机群集被连接作为单个单元工作。 Kubernetes 的抽象性允许您将容器化的应用程序部署到集群,而不必专门将其绑定到单个计算机。为了利用这种新的部署模型,应用程序需要以将它们与各个主机分离的方式打包: 它们需要被容器化。容器化应用程序比过去的部署模型更灵活和可用,其中应用程序直接安装到特定机器上,作为深入集成到主机中的软件包。 Kubernetes 在一个集群上以更有效的方式自动分发和调度容器应用程序。 Kubernetes 是一个 开源 平台,可满足生产环境的需要。

    组成:

    Kubernetes 集群由两种类型的资源组成:

    • 一个 Master 是集群的调度节点
    • Nodes 是应用程序实际运行的工作节点
    节点 是 Kubernetes 集群中的工作机器,可以是物理机或虚拟机。 每个工作节点都有一个 Kubelet,它是管理 节点 并与 Kubernetes Master 节点进行通信的代理。节点 上还应具有处理容器操作的工作,例如 Docker 或 rkt。一个 Kubernetes 工作集群至少有三个节点。
     
    启动互动教程。
    ---------------------------------------------------------------------实战篇--------------------------------------------------------------------------------------------------------------------------
    各个节点分开安装步骤:https://blog.csdn.net/weixin_44455125/article/details/90702058
    https://www.jianshu.com/p/e31fb1c469f7
    https://blog.csdn.net/qq_35904833/article/details/78190257
    --------------------------------------------------------------------------------------------------------------------
    迄今为止看到的最详细的安装文档,打算按照这个文档来安装。
    http://idc.wanyunshuju.com/K8S/583.html(主要参考文档)
     
    一、已在电脑上安装好了Docker 18.09.2
    1、需要确认能安装的K8S版本信息,(注意Kubernetes 1.13.4版本已经支持最新的Docker 18.09.3;)
         安装k8s(kubectl,kubelet,kubeadm,master与node都要装)
    2、配置kubernetes仓库
    3、使用命令下载rpm-package-key.gpg 这个包、wget https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
    4、rpm --import rpm-package-key.gpg(不知道此命令要干嘛)
    5、安装kubelet
                 yum -y install kubelet kubeadm kubectl

    6、环境变量配置。

    [root@master ~]# vim /usr/lib/systemd/system/docker.service

    手动添加两行:

    手动添加一行
      Environment="HTTPS_PROXY=http://www.ik8s.io:10080"
      Environment="NO_PROXY=127.0.0.0/8,172.0.0.0/16"

     

     7、开始一系列命令行操作,

    当输入docker info时,输出为:

     保证输出的都是1
    [root@master ~]# cat /proc/sys/net/bridge/bridge-nf-call-ip6tables
    1
    [root@master ~]# cat /proc/sys/net/bridge/bridge-nf-call-iptables
    1
     
    [root@master ~]# rpm -ql kubelet
    /etc/kubernetes/manifests  #清单目录
    /etc/sysconfig/kubelet   #配置文件
    /etc/systemd/system/kubelet.service  
    /usr/bin/kubelet   #主程序

    8、设置开机启动
    [root@master ~]# systemctl enable kubelet

    9、初始化

    [root@master ~]# kubeadm init --kubernetes-version=v1.11.1 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 开始报错

     初始化这一步各种报错!!!!添加了以下几种步骤:

    改错1:

    [root@master ~]# vim /etc/sysconfig/kubelet
    KUBELET_EXTRA_ARGS="--fail-swap-on=false"

    改错2:禁用swap

    执行 swapoff -a
    无输出(这个命令无法永久禁用,永久禁用看下文,master与node都要禁用)

    改错3:修改初始化命令中的版本号以及添加了--ignore-preflight-errors=Swap

    [root@master ~]# kubeadm init --kubernetes-version=v1.16.2 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --ignore-preflight-errors=Swap

    于是又报错:

     然后查询资料https://blog.csdn.net/h952520296/article/details/86981343,是因为无法FQ的原因,解决如下:

    用命令行下载:

    docker pull mirrorgooglecontainers/kube-apiserver-amd64:v1.16.2

    docker pull mirrorgooglecontainers/kube-controller-amd64:v1.16.2(若显示找不到)用docker pull bluersw/kube-controller-manager:v1.16.2

    docker pull mirrorgooglecontainers/kube-scheduler-amd64:v1.16.2(若显示找不到)用docker pull bluersw/kube-scheduler:v1.16.2

    docker pull bluersw/kube-proxy:v1.16.2

    docker pull bluersw/pause:3.1

    docker pull bluersw/etcd:3.3.15-0

    docker pull bluersw/coredns:1.6.2

     下载完以后,需要打标签,否则系统仍然无法识别。

    docker tag bluersw/kube-apiserver:v1.16.2 k8s.gcr.io/kube-apiserver:v1.16.2

    docker tag bluersw/kube-controller-manager:v1.16.2 k8s.gcr.io/kube-controller-manager:v1.16.2

    docker tag bluersw/kube-scheduler:v1.16.2 k8s.gcr.io/kube-scheduler:v1.16.2

    docker tag bluersw/kube-proxy:v1.16.2 k8s.gcr.io/kube-proxy:v1.16.2

    docker tag bluersw/pause:3.1 k8s.gcr.io/pause:3.1

    docker tag bluersw/etcd:3.3.15-0 k8s.gcr.io/etcd:3.3.15-0

    docker tag bluersw/coredns:1.6.2 k8s.gcr.io/coredns:1.6.2

    然后再次输入初始化命令:红色部分需要修改为自己的IP。

    kubeadm init --kubernetes-version=v1.16.2 --apiserver-advertise-address=192.168.0.4 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.1.0.0/16

    10、貌似安装成功了 ,输出以下界面:需要保存一条命令,作为后续添加工作结点用

    kubeadm join 172.16.12.217:6443 --token ayykxh.fdsnw6dnai6k1rh1
        --discovery-token-ca-cert-hash sha256:bc39b2e7139f573d397c3c031680e76a22d28a916e928d30c83d8f4f8fda8d61

     

    11、查看一下当前的安装信息

    [root@master ~]# mkdir -p $HOME/.kube
    [root@master ~]# cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
     
    12、检测组件运行是否正常
    [root@master ~]# kubectl get cs

    13、查看并验证节点信息是否成功
    [root@master ~]# kubectl get nodes

     14、安装flannel,工作结点Node之间通信使用。(又报错!)

    [root@master ~]# kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

    替换成以下两个命令后成功:

    kubectl create -f  https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
    kubectl apply -f  https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

     

     



  • 相关阅读:
    如何快速定位到DBGrid的某一行!!!急...
    说说设计模式~单件模式(Singleton)
    EF架构~终于自己架构了一个相对完整的EF方案
    .Net——实现IConfigurationSectionHandler接口定义处理程序处理自定义节点
    在LINQ中实现多条件联合主键LEFT JOIN
    从LINQ开始之LINQ to Objects(上)
    WPF控件模板和数据模板
    WPF的ListView控件自定义布局用法实例
    初步探讨WPF的ListView控件(涉及模板、查找子控件)
    LINQ技巧:如何通过多次调用GroupBy实现分组嵌套
  • 原文地址:https://www.cnblogs.com/maowuyu-xb/p/11759530.html
Copyright © 2011-2022 走看看