资讯专栏INFORMATION COLUMN

Kubernetes集群的详细部署

Honwhy / 2709人阅读

摘要:部署为生成证书生成证书分发证书下载软件包复制到节点复制对应脚本到目录下。

一、集群机器

</>复制代码

  1. linux-node1:192.168.56.11 ---master
  2. 部署的服务:
  3. etcd
  4. kube-apiserver
  5. kube-controller-manager
  6. kube-scheduler
  7. docker
  8. linux-node2:192.168.56.12 ---node
  9. 部署的服务:
  10. etcd
  11. kubelet
  12. kube-proxy
  13. docker
  14. linux-node3:192.168.56.13 ---node
  15. 部署的服务:
  16. etcd
  17. kubelet
  18. kube-proxy
  19. docker
二、环境准备

</>复制代码

  1. 1、设置主机名
  2. hostnamectl set-hostname linux-node1
  3. hostnamectl set-hostname linux-node2
  4. hostnamectl set-hostname linux-node3
  5. ----------
  6. 2、设置部署节点到其它所有节点的SSH免密码登(包括本机)
  7. [root@linux-node1 ~]# ssh-keygen -t rsa
  8. [root@linux-node1 ~]# ssh-copy-id linux-node1
  9. [root@linux-node1 ~]# ssh-copy-id linux-node2
  10. [root@linux-node1 ~]# ssh-copy-id linux-node3
  11. ----------
  12. 3、绑定主机host
  13. cat > /etc/hosts </dev/null 2>&1
  14. #vim /etc/profile 高亮显示
  15. export PS1="[e]0;a]
  16. [e[1;32m][e[1;33m]H[e[1;35m]<$(date +"%Y-%m-%d %T")> [e[32m]w[e[0m]
  17. u>$ "
  18. #设置时区
  19. cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
  20. #SSH登录慢
  21. sed -i "s/#UseDNS yes/UseDNS no/" /etc/ssh/sshd_config
  22. sed -i "s/GSSAPIAuthentication yes/GSSAPIAuthentication no/" /etc/ssh/sshd_config
  23. systemctl restart sshd.service
三、正式安装 1.安装Docker(三台机器都要操作)

</>复制代码

  1. 第一步:使用国内Docker源
  2. cd /etc/yum.repos.d/
  3. wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  4. 第二步:Docker安装
  5. yum install -y docker-ce
  6. 第三步:启动后台进程
  7. [root@linux-node2 ~]# systemctl start docker
  8. [root@linux-node2 ~]# systemctl enable docker
  9. Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
2.安装k8s

</>复制代码

  1. 1.准备部署目录
  2. [root@linux-node1 ~]# mkdir -p /opt/kubernetes/{cfg,bin,ssl,log}
  3. #添加环境变量
  4. [root@linux-node1 ~]# echo "PATH=$PATH:/opt/kubernetes/bin" >> /etc/profile
  5. [root@linux-node1 ~]# source /etc/profile
  6. 或者
  7. [root@linux-node1 ~]# vim .bash_profile
  8. PATH=$PATH:$HOME/bin:/opt/kubernetes/bin
  9. [root@linux-node1 ~]# source .bash_profile
  10. 2.准备软件包
  11. #github下载链接
  12. https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.10.md#server-binaries
  13. wget https://storage.googleapis.com/kubernetes-release/release/v1.10.8/kubernetes-server-linux-amd64.tar.gz
  14. wget https://storage.googleapis.com/kubernetes-release/release/v1.10.8/kubernetes-client-linux-amd64.tar.gz
  15. wget https://storage.googleapis.com/kubernetes-release/release/v1.10.8/kubernetes-node-linux-amd64.tar.gz
  16. wget https://storage.googleapis.com/kubernetes-release/release/v1.10.8/kubernetes.tar.gz
  17. 3.解压软件包
  18. tar -zxvf kubernetes.tar.gz -C /usr/local/src/
  19. tar -zxvf kubernetes-server-linux-amd64.tar.gz -C /usr/local/src/
  20. tar -zxvf kubernetes-client-linux-amd64.tar.gz -C /usr/local/src/
  21. tar -zxvf kubernetes-node-linux-amd64.tar.gz -C /usr/local/src/
3.手动制作CA证书(只在master上进行即可)

</>复制代码

  1. 1.安装 CFSSL
  2. [root@linux-node1 ~]# cd /usr/local/src
  3. [root@linux-node1 src]# wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64
  4. [root@linux-node1 src]# wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64
  5. [root@linux-node1 src]# wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64
  6. [root@linux-node1 src]# chmod +x cfssl*
  7. [root@linux-node1 src]# mv cfssl-certinfo_linux-amd64 /opt/kubernetes/bin/cfssl-certinfo
  8. [root@linux-node1 src]# mv cfssljson_linux-amd64 /opt/kubernetes/bin/cfssljson
  9. [root@linux-node1 src]# mv cfssl_linux-amd64 /opt/kubernetes/bin/cfssl
  10. #复制cfssl命令文件到k8s-node1和k8s-node2节点。如果实际中多个节点,就都需要同步复制。
  11. [root@linux-node1 ~]# scp /opt/kubernetes/bin/cfssl* 192.168.56.12:/opt/kubernetes/bin
  12. [root@linux-node1 ~]# scp /opt/kubernetes/bin/cfssl* 192.168.56.13:/opt/kubernetes/bin
  13. 2.初始化cfssl
  14. [root@linux-node1 src]# mkdir ssl && cd ssl
  15. [root@linux-node1 ssl]# cfssl print-defaults config > config.json --生成ca-config.json的样例(可省略)
  16. [root@linux-node1 ssl]# cfssl print-defaults csr > csr.json --生成ca-csr.json的样例(可省略)
  17. 3.创建用来生成 CA 文件的 JSON 配置文件
  18. [root@linux-node1 ssl]#
  19. cat > ca-config.json < ca-csr.json <
  20. 4.手动部署ETCD集群
  21. </>复制代码

    1. 0.准备etcd软件包
    2. wget https://github.com/coreos/etcd/releases/download/v3.2.18/etcd-v3.2.18-linux-amd64.tar.gz
    3. [root@linux-node1 src]# tar zxf etcd-v3.2.18-linux-amd64.tar.gz
    4. [root@linux-node1 src]# cd etcd-v3.2.18-linux-amd64
    5. [root@linux-node1 etcd-v3.2.18-linux-amd64]# cp etcd etcdctl /opt/kubernetes/bin/
    6. [root@linux-node1 etcd-v3.2.18-linux-amd64]# scp etcd etcdctl 192.168.56.12:/opt/kubernetes/bin/
    7. [root@linux-node1 etcd-v3.2.18-linux-amd64]# scp etcd etcdctl 192.168.56.13:/opt/kubernetes/bin/
    8. 1.创建 etcd 证书签名请求:
    9. [root@linux-node1]# cd /usr/local/src/ssl
    10. cat > etcd-csr.json <
    11. 5.Master节点部署
    12. 部署Kubernetes API服务部署

    13. </>复制代码

      1. 0.准备软件包
      2. [root@linux-node1 ~]# cd /usr/local/src/kubernetes
      3. [root@linux-node1 kubernetes]# cp server/bin/kube-apiserver /opt/kubernetes/bin/
      4. [root@linux-node1 kubernetes]# cp server/bin/kube-controller-manager /opt/kubernetes/bin/
      5. [root@linux-node1 kubernetes]# cp server/bin/kube-scheduler /opt/kubernetes/bin/
      6. 1.创建生成CSR的 JSON 配置文件
      7. [root@linux-node1 ~]# cd /usr/local/src/ssl
      8. [root@linux-node1 src]# vim kubernetes-csr.json
      9. cat > kubernetes-csr.json <
      10. 部署Controller Manager服务

      11. </>复制代码

        1. [root@linux-node1 ~]# vim /usr/lib/systemd/system/kube-controller-manager.service
        2. [Unit]
        3. Description=Kubernetes Controller Manager
        4. Documentation=https://github.com/GoogleCloudPlatform/kubernetes
        5. [Service]
        6. ExecStart=/opt/kubernetes/bin/kube-controller-manager
        7. --address=127.0.0.1
        8. --master=http://127.0.0.1:8080
        9. --allocate-node-cidrs=true
        10. --service-cluster-ip-range=10.1.0.0/16
        11. --cluster-cidr=10.2.0.0/16
        12. --cluster-name=kubernetes
        13. --cluster-signing-cert-file=/opt/kubernetes/ssl/ca.pem
        14. --cluster-signing-key-file=/opt/kubernetes/ssl/ca-key.pem
        15. --service-account-private-key-file=/opt/kubernetes/ssl/ca-key.pem
        16. --root-ca-file=/opt/kubernetes/ssl/ca.pem
        17. --leader-elect=true
        18. --v=2
        19. --logtostderr=false
        20. --log-dir=/opt/kubernetes/log
        21. Restart=on-failure
        22. RestartSec=5
        23. [Install]
        24. WantedBy=multi-user.target
        25. 3.启动Controller Manager
        26. [root@linux-node1 ~]# systemctl daemon-reload
        27. [root@linux-node1 scripts]# systemctl enable kube-controller-manager
        28. [root@linux-node1 scripts]# systemctl start kube-controller-manager
        29. 4.查看服务状态
        30. [root@linux-node1 scripts]# systemctl status kube-controller-manager
      12. 部署Kubernetes Scheduler

      13. </>复制代码

        1. [root@linux-node1 ~]# vim /usr/lib/systemd/system/kube-scheduler.service
        2. [Unit]
        3. Description=Kubernetes Scheduler
        4. Documentation=https://github.com/GoogleCloudPlatform/kubernetes
        5. [Service]
        6. ExecStart=/opt/kubernetes/bin/kube-scheduler
        7. --address=127.0.0.1
        8. --master=http://127.0.0.1:8080
        9. --leader-elect=true
        10. --v=2
        11. --logtostderr=false
        12. --log-dir=/opt/kubernetes/log
        13. Restart=on-failure
        14. RestartSec=5
        15. [Install]
        16. WantedBy=multi-user.target
        17. 2.部署服务
        18. [root@linux-node1 ~]# systemctl daemon-reload
        19. [root@linux-node1 scripts]# systemctl enable kube-scheduler
        20. [root@linux-node1 scripts]# systemctl start kube-scheduler
        21. [root@linux-node1 scripts]# systemctl status kube-scheduler
      14. 部署kubectl 命令行工具

      15. </>复制代码

        1. 1.准备二进制命令包
        2. [root@linux-node1 ~]# cd /usr/local/src/kubernetes/client/bin
        3. [root@linux-node1 bin]# cp kubectl /opt/kubernetes/bin/
        4. #需要将kubectl复制到node节点
        5. [root@linux-node1 bin]# scp /opt/kubernetes/bin/kubectl linux-node2:/opt/kubernetes/bin/
        6. [root@linux-node1 bin]# scp /opt/kubernetes/bin/kubectl linux-node3:/opt/kubernetes/bin/
        7. 2.创建 admin 证书签名请求
        8. [root@linux-node1 ~]# cd /usr/local/src/ssl/
        9. [root@linux-node1 ssl]#
        10. cat > admin-csr.json <
        11. 6.Node节点部署
        12. 部署kubelet

        13. </>复制代码

          1. 1.二进制包准备 将软件包从linux-node1复制到linux-node2中去。
          2. [root@linux-node1 ~]# cd /usr/local/src/kubernetes/server/bin/
          3. [root@linux-node1 bin]# cp kubelet kube-proxy /opt/kubernetes/bin/
          4. [root@linux-node1 bin]# scp kubelet kube-proxy 192.168.56.12:/opt/kubernetes/bin/
          5. [root@linux-node1 bin]# scp kubelet kube-proxy 192.168.56.13:/opt/kubernetes/bin/
          6. 2.创建角色绑定
          7. [root@linux-node1 ~]# kubectl create clusterrolebinding kubelet-bootstrap --clusterrole=system:node-bootstrapper --user=kubelet-bootstrap
          8. clusterrolebinding "kubelet-bootstrap" created
          9. 3.创建 kubelet bootstrapping kubeconfig 文件 设置集群参数
          10. [root@linux-node1 ~]# kubectl config set-cluster kubernetes
          11. --certificate-authority=/opt/kubernetes/ssl/ca.pem
          12. --embed-certs=true
          13. --server=https://192.168.56.11:6443
          14. --kubeconfig=bootstrap.kubeconfig
          15. Cluster "kubernetes" set.
          16. 设置客户端认证参数
          17. [root@linux-node1 ~]# kubectl config set-credentials kubelet-bootstrap
          18. --token=ad6d5bb607a186796d8861557df0d17f
          19. --kubeconfig=bootstrap.kubeconfig
          20. User "kubelet-bootstrap" set.
          21. 设置上下文参数
          22. [root@linux-node1 ~]# kubectl config set-context default
          23. --cluster=kubernetes
          24. --user=kubelet-bootstrap
          25. --kubeconfig=bootstrap.kubeconfig
          26. Context "default" created.
          27. 选择默认上下文
          28. [root@linux-node1 ~]# kubectl config use-context default --kubeconfig=bootstrap.kubeconfig
          29. Switched to context "default".
          30. [root@linux-node1 kubernetes]# cp bootstrap.kubeconfig /opt/kubernetes/cfg
          31. [root@linux-node1 kubernetes]# scp bootstrap.kubeconfig 192.168.56.12:/opt/kubernetes/cfg
          32. [root@linux-node1 kubernetes]# scp bootstrap.kubeconfig 192.168.56.13:/opt/kubernetes/cfg
          33. 在node节点上操作,部署kubelet 1.设置CNI支持
          34. [root@linux-node2 ~]# mkdir -p /etc/cni/net.d
          35. [root@linux-node2 ~]# vim /etc/cni/net.d/10-default.conf
          36. cat > /etc/cni/net.d/10-default.conf <0{print $1}"| xargs kubectl certificate approve
          37. 成功后是Approved的状态
          38. [root@linux-node1 bin]# kubectl get csr
          39. NAME AGE REQUESTOR CONDITION
          40. node-csr-IPMSFbKvwgq2icOeIo2v_WA-qb8QCyA7MT5h4eDmjxg 2m kubelet-bootstrap Approved,Issued
          41. 执行完毕后,查看节点状态已经是Ready的状态了
          42. [root@linux-node1 ~]# kubectl get node
          43. NAME STATUS ROLES AGE VERSION
          44. 192.168.56.12 Ready 2m v1.10.8
        14. 部署Kubernetes Proxy

        15. </>复制代码

          1. 1.配置kube-proxy使用LVS
          2. [root@linux-node2 ~]# yum install -y ipvsadm ipset conntrack
          3. 2.创建 kube-proxy 证书请求
          4. [root@linux-node1 ~]# cd /usr/local/src/ssl/
          5. [root@linux-node1 ~]# vim kube-proxy-csr.json
          6. cat > kube-proxy-csr.json < RemoteAddress:Port Forward Weight ActiveConn InActConn
          7. TCP 10.1.0.1:443 rr persistent 10800
          8. -> 192.168.56.11:6443 Masq 1 0 0
          9. 如果你在两台实验机器都安装了kubelet和proxy服务,使用下面的命令可以检查状态:
          10. [root@linux-node1 ssl]# kubectl get node
          11. NAME STATUS ROLES AGE VERSION
          12. 192.168.56.12 Ready 22m v1.10.1
          13. 192.168.56.13 Ready 3m v1.10.1
          14. linux-node3节点请自行部署。
        16. 7.Flannel部署
        17. </>复制代码

          1. 1.为Flannel生成证书
          2. [root@linux-node1 ~]# vim flanneld-csr.json
          3. cat > flanneld-csr.json <
          4. 8.应用创建
          5. </>复制代码

            1. 1.创建一个测试用的deployment
            2. [root@linux-node1 ~]# kubectl run net-test --image=alpine --replicas=2 sleep 360000
            3. 2.查看获取IP情况
            4. [root@linux-node1 ~]# kubectl get pod -o wide
            5. NAME READY STATUS RESTARTS AGE IP NODE
            6. net-test-74f45db489-gmgv8 1/1 Running 0 1m 10.2.83.2 192.168.56.13
            7. net-test-74f45db489-pr5jc 1/1 Running 0 1m 10.2.59.2 192.168.56.12
            8. 3.测试联通性(在对应的node节点去测试)
            9. ping 10.2.83.2

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/32726.html

相关文章

  • Kubernetes几种主流部署方式02-kubeadm部署1.14版本高可用集群

    摘要:所以,选择把运行直接运行在宿主机中,使用容器部署其他组件。独立部署方式所需机器资源多按照集群的奇数原则,这种拓扑的集群关控制平面最少就要台宿主机了。 在上篇文章minikube部署中,有提到Minikube部署Kubernetes的核心就是Kubeadm,这篇文章来详细说明下Kubeadm原理及部署步骤。写这篇文章的时候,Kubernetes1.14刚刚发布,所以部署步骤以1.14版为...

    atinosun 评论0 收藏0
  • Kubernetes几种主流部署方式02-kubeadm部署1.14版本高可用集群

    摘要:所以,选择把运行直接运行在宿主机中,使用容器部署其他组件。独立部署方式所需机器资源多按照集群的奇数原则,这种拓扑的集群关控制平面最少就要台宿主机了。 在上篇文章minikube部署中,有提到Minikube部署Kubernetes的核心就是Kubeadm,这篇文章来详细说明下Kubeadm原理及部署步骤。写这篇文章的时候,Kubernetes1.14刚刚发布,所以部署步骤以1.14版为...

    superw 评论0 收藏0
  • Kubernetes几种主流部署方式01-minikube部署

    摘要:代表的解决方案为。虽然官网列出的部署方式很多,但也不用被这么多种部署方式搞糊涂了。虽然只是一条命令,但其实执行了很多步骤命令执行后输出如下可以看到,主要做了这些事创建了名为的虚拟机,并在虚拟机中安装了容器运行时。 综述 Kubernetes集群的组件众多,要部署一套符合生产环境的集群不是一件容易的事。好在随着社区的快速发展,特别是在它成为事实上的容器编排标准以后,基本所有的主流云平台都...

    Lionad-Morotar 评论0 收藏0
  • Kubernetes几种主流部署方式01-minikube部署

    摘要:代表的解决方案为。虽然官网列出的部署方式很多,但也不用被这么多种部署方式搞糊涂了。虽然只是一条命令,但其实执行了很多步骤命令执行后输出如下可以看到,主要做了这些事创建了名为的虚拟机,并在虚拟机中安装了容器运行时。 综述 Kubernetes集群的组件众多,要部署一套符合生产环境的集群不是一件容易的事。好在随着社区的快速发展,特别是在它成为事实上的容器编排标准以后,基本所有的主流云平台都...

    浠ラ箍 评论0 收藏0
  • Kubernetes集群详细部署

    摘要:部署为生成证书生成证书分发证书下载软件包复制到节点复制对应脚本到目录下。 一、集群机器 linux-node1:192.168.56.11 ---master 部署的服务: etcd kube-apiserver kube-controller-manager kube-scheduler docker linux-node2:192.168.56.12 ---no...

    qujian 评论0 收藏0

发表评论

0条评论

Honwhy

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<