k8s集群搭建(二进制方式)

1、安装要求

在开始之前,部署Kubernetes集群机器需要满足以下几个条件:

  • 一台或多台机器,操作系统 CentOS7.x-86_x64
  • 硬件配置:2GB或更多RAM,2个CPU或更多CPU,硬盘30GB或更多
  • 可以访问外网,需要拉取镜像,如果服务器不能上网,需要提前下载镜像并导入节点
  • 禁止swap分区

2、准备环境

这里实验环境只创建一个node节点

角色IP组件
master192.168.100.10kube-apiserer,kube-controller-manager,kube -scheduler,etcd
node1192.168.100.20kubelet,kube-proxy,docker etcd

3、操作系统初始化配置

# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld

# 关闭selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config  # 永久
setenforce 0  # 临时

# 关闭swap
swapoff -a  # 临时
sed -ri 's/.*swap.*/#&/' /etc/fstab    # 永久

# 根据规划设置主机名
hostnamectl set-hostname <hostname>

# 在master添加hosts
cat >> /etc/hosts << EOF
192.168.100.10 master
192.168.100.20 node1
EOF

# 将桥接的IPv4流量传递到iptables的链
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system  # 生效

# 时间同步
yum install ntpdate -y
ntpdate -u asia.pool.ntp.org

4、部署 Etcd 集群

4.1 准备 cfssl 证书生成工具

cfssl 是一个开源的证书管理工具,使用 json 文件生成证书,相比 openssl 更方便使用。 找任意一台服务器操作,这里用 Master 节点。

wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 
wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64 
wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64 
chmod +x cfssl_linux-amd64 cfssljson_linux-amd64 cfssl-certinfo_linux-amd64 
mv cfssl_linux-amd64 /usr/local/bin/cfssl 
mv cfssljson_linux-amd64 /usr/local/bin/cfssljson 
mv cfssl-certinfo_linux-amd64 /usr/bin/cfssl-certinfo

4.2 生成 Etcd 证书

(1)自签证书颁发机构(CA)
创建工作目录:

mkdir -p ~/TLS/{etcd,k8s} 
cd TLS/etcd

自签CA:

[root@master etcd]# vim ca-config.json
{
  "signing": {
    "default": {
      "expiry": "87600h"
    },
    "profiles": {
      "www": {
         "expiry": "87600h",
         "usages": [
            "signing",
            "key encipherment",
            "server auth",
            "client auth"
        ]
      }
    }
  }
}
[root@master etcd]# vim ca-csr.json 
{
    "CN": "etcd CA",
    "key": {
        "algo": "rsa",
        "size": 2048
    },
    "names": [
        {
            "C": "CN",
            "L": "Beijing",
            "ST": "Beijing"
        }
    ]
}

生成证书:做一个初始化操作

[root@master etcd]# cfssl gencert -initca ca-csr.json | cfssljson -bare ca -
2021/05/27 16:04:55 [INFO] generating a new CA key and certificate from CSR
2021/05/27 16:04:55 [INFO] generate received request
2021/05/27 16:04:55 [INFO] received CSR
2021/05/27 16:04:55 [INFO] generating key: rsa-2048
2021/05/27 16:04:55 [INFO] encoded CSR
2021/05/27 16:04:55 [INFO] signed certificate with serial number 573472150799289061281169541828288654078398525841

[root@master etcd]# ls *pem
ca-key.pem  ca.pem

(2)使用自签 CA 签发 Etcd HTTPS 证书
创建证书申请文件:

[root@master etcd]# vim server-csr.json 
{
  "CN": "etcd",
  "hosts": [
  "192.168.100.10",
  "192.168.100.20"
  ],
  "key": {
    "algo": "rsa",
    "size": 2048
  },
  "names": [
    {
      "C": "CN",
      "L": "BeiJing",
      "ST": "BeiJing"
    }
  ]
}

注:上述文件 hosts 字段中 IP 为所有 etcd 节点的集群内部通信 IP,一个都不能少!为了 方便后期扩容可以多写几个预留的 IP。

#ca和cak生成证书文件
[root@master etcd]# cfssl gencert -ca=ca.pem  -ca-key=ca-key.pem  -config=ca-config.json -profile=www server-csr.json  |cfssljson -bare server            
2021/05/27 16:28:16 [INFO] generate received request
2021/05/27 16:28:16 [INFO] received CSR
2021/05/27 16:28:16 [INFO] generating key: rsa-2048
2021/05/27 16:28:16 [INFO] encoded CSR
2021/05/27 16:28:16 [INFO] signed certificate with serial number 456667975612415335746587662654416203938464123440
2021/05/27 16:28:16 [WARNING] This certificate lacks a "hosts" field. This makes it unsuitable for
websites. For more information see the Baseline Requirements for the Issuance and Management
of Publicly-Trusted Certificates, v.1.1.6, from the CA/Browser Forum (https://cabforum.org);
specifically, section 10.2.3 ("Information Requirements").

这些最后就是生成证书的文件

[root@master etcd]# ls *.pem
ca-key.pem  ca.pem  server-key.pem  server.pem

这里最后一步生成证书的我执行的出错了,找了好半天错误,总结一下

https://blog.csdn.net/qq_44792624/article/details/117332764

4.3 从 Github 下载二进制文件

我这个在GitHub上找包,进网址到最下面选择tar包,下载完上传到master节点,然后解压

https://github.com/etcd-io/etcd/releases/tag/v3.4.16
在这里插入图片描述

tar -zxf etcd-v3.4.16-linux-amd64.tar.gz

4.4 部署 Etcd 集群

以下在node1 上操作,为简化操作,完成以后把文件拷贝到剩余节点就可以了

(1)创建工作目录并解压二进制包

[root@master ~]# mkdir /opt/etcd/{bin,cfg,ssl} -p
[root@master ~]# ll
总用量 35824
-rw-------. 1 root    root       955 527 19:07 anaconda-ks.cfg
-rwxr-xr-x. 1 root    root   6595195 417 03:17 cfssl-certinfo_linux-amd64
-rwxr-xr-x. 1 root    root   2277873 417 03:17 cfssljson_linux-amd64
-rwxr-xr-x. 1 root    root  10376657 417 03:17 cfssl_linux-amd64
drwxr-xr-x. 3 6810230 users     4096 512 09:58 etcd-v3.4.16-linux-amd64
-rw-r--r--. 1 root    root  17408178 528 2021 etcd-v3.4.16-linux-amd64.tar.gz
drwxr-xr-x. 2 root    root      4096 527 14:12 rbac
[root@master ~]# tar -zxf etcd-v3.4.16-linux-amd64.tar.gz
[root@master ~]# rm -rf etcd-v3.4.16-linux-amd64.tar.gz 
[root@master ~]# cd etcd-v3.4.16-linux-amd64/
[root@master etcd-v3.4.16-linux-amd64]# ll
总用量 40628
drwxr-xr-x. 14 6810230 users     4096 512 09:58 Documentation
-rwxr-xr-x.  1 6810230 users 23914048 512 09:58 etcd
-rwxr-xr-x.  1 6810230 users 17616480 512 09:58 etcdctl
-rw-r--r--.  1 6810230 users    43094 512 09:58 README-etcdctl.md
-rw-r--r--.  1 6810230 users     8431 512 09:58 README.md
-rw-r--r--.  1 6810230 users     7855 512 09:58 READMEv2-etcdctl.md
[root@master etcd-v3.4.16-linux-amd64]# mv etcd* /opt/etcd/bin/
[root@master etcd-v3.4.16-linux-amd64]#

(2)创建 etcd 配置文件

[root@master cfg]# pwd
/opt/etcd/cfg

[root@master cfg]# vim etcd.conf 
#[Member]
ETCD_NAME="etcd-1"
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="https://192.168.100.10:2380"
ETCD_LISTEN_CLIENT_URLS="https://192.168.100.10:2379"

#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="https://192.168.100.10:2380"
ETCD_ADVERTISE_CLIENT_URLS="https://192.168.100.10:2379"
ETCD_INITIAL_CLUSTER="etcd-1=https://192.168.100.10:2380,etcd-2=https://192.168.100.20:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"
ETCD_NAME:节点名称,集群中唯一 
ETCD_DATA_DIR:数据目录 
ETCD_LISTEN_PEER_URLS:集群通信监听地址 
ETCD_LISTEN_CLIENT_URLS:客户端访问监听地址 
ETCD_INITIAL_ADVERTISE_PEER_URLS:集群通告地址 
ETCD_ADVERTISE_CLIENT_URLS:客户端通告地址 
ETCD_INITIAL_CLUSTER:集群节点地址 
ETCD_INITIAL_CLUSTER_TOKEN:集群 Token 
ETCD_INITIAL_CLUSTER_STATE:加入集群的当前状态,new 是新集群,existing 表示加入 已有集群

(3)systemd 管理 etcd

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要搭建 Docker Kubernetes(K8s)集群,你可以按照以下步骤进行操作: 1. 安装 Docker:在每个节点上安装 Docker,可以按照 Docker 官方文档的指引进行安装。确保所有节点上都安装了相同版本的 Docker。 2. 安装 Kubernetes:可以使用各个操作系统的包管理器(如 apt、yum 等)或者直接下载二进制文件来安装 Kubernetes。你可以参考 Kubernetes 官方文档中的安装指南。 3. 初始化 Master 节点:选择其中一个节点作为 Master 节点,运行以下命令初始化: ``` kubeadm init ``` 这将生成一个 Token 和一个命令,用于其他节点加入集群。 4. 加入 Worker 节点:在其他节点上运行初始化命令生成的加入命令,将它们加入集群。例如: ``` kubeadm join <master-ip>:<master-port> --token <token> --discovery-token-ca-cert-hash <hash> ``` `<master-ip>` 和 `<master-port>` 是 Master 节点的 IP 地址和端口,`<token>` 和 `<hash>` 是初始化命令生成的 Token 和哈希值。 5. 配置 Kubectl:在你的本地机器上安装并配置 Kubectl,可以按照 Kubernetes 官方文档中的指引进行操作。这将允许你与集群进行交互。 6. 部署应用:使用 Kubernetes 的 YAML 配置文件编写应用的部署描述,并使用以下命令在集群上部署应用: ``` kubectl apply -f <deployment-file> ``` `<deployment-file>` 是应用的部署描述文件的路径。 7. 扩展和管理集群:使用 Kubectl 命令扩展、新、删除应用,以及管理集群中的节点和资源。例如: - 扩展应用的副本数:`kubectl scale deployment <deployment-name> --replicas=<replica-count>` - 新应用:`kubectl apply -f <updated-deployment-file>` - 删除应用:`kubectl delete deployment <deployment-name>` - 查看集群状态:`kubectl get nodes`、`kubectl get pods` 等 这些步骤可以帮助你搭建一个简单的 Docker Kubernetes(K8s)集群。你可以根据实际需求进行配置和管理。如果需要详细的指导,可以参考 Kubernetes 官方文档中的相关内容。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值