K8S—二进制部署安装
Posted 丁CCCCC
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了K8S—二进制部署安装相关的知识,希望对你有一定的参考价值。
安装步骤
一、准备工作
K8S集群
master:192.168.253.11
服务:kube-apiserver kube-controller-manager kube-scheduler etcd
node1:192.168.253.22
服务:kubelet kube-proxy docker flannel
node2:192.168.253.33
etcd节点1:192.168.253.11
etcd节点2:192.168.253.22
etcd节点3:192.168.253.33
二、部署etcd集群
master 节点
下载证书
curl -L https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 -o /usr/local/bin/cfssl
curl -L https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64 -o /usr/local/bin/cfssljson
curl -L https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64 -o /usr/local/bin/cfssl-certinfo
chmod +x /usr/local/bin/cfssl*
证书安装
#创建k8s目录
mkdir /opt/k8s
cd /opt/k8s
#上传脚本(etcd-cert脚本要修改集群IP)
chmod +x etcd-cert.sh etcd.sh
#创建脚本生成的证书目录
mkdir /opt/k8s/etcd-cert
cd /opt/k8s/etcd-cert
#运行脚本
bash etcd-cert.sh
安装etcd
#上传压缩包
cd /opt/k8s
tar zxvf etcd-v3.3.10-linux-amd64.tar.gz
#创建etcd配置文件、命令文件、证书的目录
mkdir -p /opt/etcd/{cfg,bin,ssl}
#移动到命令目录
mv etcd-v3.3.10-linux-amd64/etcd etcd-v3.3.10-linux-amd64/etcdctl /opt/etcd/bin/
#复制证书进目录
cp etcd-cert/*.pem /opt/etcd/ssl/
配置文件发送给node
#复制证书
scp -r /opt/etcd/ root@192.168.253.22:/opt/
scp -r /opt/etcd/ root@192.168.253.33:/opt/
#复制启动脚本
scp /usr/lib/systemd/system/etcd.service root@192.168.253.22:/usr/lib/systemd/system/
scp /usr/lib/systemd/system/etcd.service root@192.168.253.33:/usr/lib/systemd/system/
开启集群
./etcd.sh etcd01 192.168.253.11 etcd02=https://192.168.253.22:2380,etcd03=https://192.168.253.33:2380
#进入后会卡住,需要所有节点都开启etcd,少一个,服务会卡死在这,直到全部开启
node 节点(1/2)
修改配置文件
vim /opt/etcd/cfg/etcd
#[Member]
ETCD_NAME="etcd02" #更改为所在节点
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="https://192.168.253.22:2380" #更改IP号
ETCD_LISTEN_CLIENT_URLS="https://192.168.253.22:2379" #更改IP号
#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="https://192.168.253.22:2380" #更改IP号
ETCD_ADVERTISE_CLIENT_URLS="https://192.168.253.22:2379" #更改IP号
ETCD_INITIAL_CLUSTER="etcd01=https://192.168.253.11:2380,etcd02=https://192.168.253.22:2380,etcd03=https://192.168.253.33:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"
开启服务
systemctl start etcd
systemctl status etcd
systemctl enable etcd
查看集群状态
方法一
ln -s /opt/etcd/bin/etcdctl /usr/local/bin/
cd /opt/etcd/ssl/
etcdctl \\
--ca-file=ca.pem \\
--cert-file=server.pem \\
--key-file=server-key.pem \\
--endpoints="https://192.168.253.11:2379,https://192.168.253.22:2379,https://192.168.253.33:2379" cluster-health
方法二
切换到etcd3版本查看
#切换etc3,默认为2
export ETCDCTL_API=3
#查看版本状态
etcdctl --write-out=table endpoint status
#查看成员状态
etcdctl --write-out=table member list
三、部署docker引擎
node 节点(1/2)
安装docker
#进入yum目录
cd /etc/yum.repos.d/
#repo文件移动回原目录
mv repos.bak/* ./
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#安装docker
yum install -y docker-ce
开启
systemctl start docker
systemctl status docker
四、设置flannel网络
master 节点
添加配置信息,写入分配的子网段到etcd中
cd /opt/etcd/ssl/
/opt/etcd/bin/etcdctl \\
--ca-file=ca.pem \\
--cert-file=server.pem \\
--key-file=server-key.pem \\
--endpoints="https://192.168.253.11:2379,https://192.168.253.22:2379,https://192.168.253.33:2379" \\
set /coreos.com/network/config '{ "Network": "172.17.0.0/16", "Backend": {"Type": "vxlan"}}'
查看写入的信息
etcdctl \\
--ca-file=ca.pem \\
--cert-file=server.pem \\
--key-file=server-key.pem \\
--endpoints="https://192.168.253.11:2379,https://192.168.253.22:2379,https://192.168.253.33:2379" \\
get /coreos.com/network/config
node 节点操作(1/2)
上传文件解压
cd /opt/
#上传
rz -E
rz waiting to receive.
#解压
tar zxvf flannel-v0.10.0-linux-amd64.tar.gz
创建目录
mkdir -p /opt/kubernetes/{cfg,bin,ssl}
#移动
mv mk-docker-opts.sh flanneld /opt/kubernetes/bin/
开启服务,开启flannel网络功能
./flannel.sh https://192.168.253.11:2379,https://192.168.253.22:2379,https://192.168.253.33:2379
ifconfig
修改docker连接flannel
vim /usr/lib/systemd/system/docker.service
#添加下行
13 EnvironmentFile=/run/flannel/subnet.env
#修改下行,添加$DOCKER_NETWORK_OPTIONS进入
14 ExecStart=/usr/bin/dockerd $DOCKER_NETWORK_OPTIONS -H fd:// --containerd=/run/containerd/contain erd.sock
#查看flannel网段
cat /run/flannel/subnet.env
重启服务
systemctl daemon-reload
systemctl restart docker
ifconfig
测试网络
node1节点设置
#node节点安装centos7镜像
docker run -d centos:7
#运行容器
docker run -itd centos:7 bash
#进入
docker exec -it 7116f3026c6d bash
#安装net-tools
yum -y install net-tools
#获取IP
ifconfig
node2节点设置
#node节点安装centos7镜像
docker run -d centos:7
#运行容器
docker run -itd centos:7 bash
#进入
docker exec -it 2cf56e1f1d02 bash
#安装net-tools
yum -y install net-tools
#获取IP
ifconfig
#测试与node1节点容器网络
ping 172.17.86.2
五、部署master组件
上传文件并解压
cd /opt/k8s
rz
master.zip
k8s-cert.sh
#解压
unzip master.zip
#加权限
chmod +x *.sh
创建kubernetes目录
mkdir -p /opt/kubernetes/{cfg,bin,ssl}
创建证书、相关组件和私钥的目录
#创建目录
mkdir k8s-cert
cd k8s-cert/
#移动脚本进来
mv /opt/k8s/k8s-cert.sh /opt/k8s/k8s-cert
#修改配置文件内IP信息
vim k8s-cert.sh
#运行脚本
./k8s-cert.sh
#安装好的配置文件复制到ssl目录
cp ca*pem apiserver*pem /opt/kubernetes/ssl/
上传kubernetes压缩包
#建议使用winscp软件上传
#解压
tar zxvf kubernetes-server-linux-amd64.tar.gz
复制命令文件到kubernetes/bin目录
cp kube-apiserver kubectl kube-controller-manager kube-scheduler /opt/kubernetes/bin/
创建随机序列号文件
vim /opt/k8s/token.sh
#!/bin/bash
BOOTSTRAP_TOKEN=$(head -c 16 /dev/urandom | od -An -t x | tr -d ' ')
cat > /opt/kubernetes/cfg/token.csv <<EOF
${BOOTSTRAP_TOKEN},kubelet-bootstrap,10001,"system:kubelet-bootstrap"
EOF
chmod +x token.sh
cat /opt/kubernetes/cfg/token.csv
2a48e85a17c0de53f0f2605d7136d1b3,kubelet-bootstrap,10001,"system:kubelet-bootstrap"
开启apiserver
./apiserver.sh 192.168.253.11 https://192.168.253.11:2379,https://192.168.253.22:2379,https://192.168.253.33:2379
systemctl status kube-apiserver.service
查看配置文件
cat /opt/kubernetes/cfg/kube-apiserver
查看HTTPS端口
netstat -anpt | grep 6443
netstat -anpt | grep 8080
启动服务
#启动scheduler服务
./scheduler.sh 127.0.0.1
#启动manager服务
./controller-manager.sh 127.0.0.1
#查看节点状态
/opt/kubernetes/bin/kubectl get cs
六、node节点部署
master节点操作
发送文件给node
cd /opt/k8s/kubernetes/server/bin/
#远程复制
scp kubelet kube-proxy root@192.168.253.22:/opt/kubernetes/bin/
scp kubelet kube-proxy root@192.168.253.33:/opt/kubernetes/bin/
上传文件
cd /opt/k8s/
mkdir kubeconfig
cd kubeconfig/
rz -E
kubeconfig.sh
chmod +x *.sh
设置环境变量
export PATH=$PATH:/opt/kubernetes/bin/
kubectl get cs
生成kubelet配置文件
cd /opt/k8s/kubeconfig/
./kubeconfig.sh 192.168.253.11 /opt/k8s/k8s-cert/
复制文件到node节点
scp bootstrap.kubeconfig kube-proxy.kubeconfig root@192.168.253.22:/opt/kubernetes/cfg/
scp bootstrap.kubeconfig kube-proxy.kubeconfig root@192.168.253.33:/opt/kubernetes/cfg/
创建bootstrap角色赋予权限
kubectl create clusterrolebinding kubelet-bootstrap --clusterrole=system:node-bootstrapper --user=kubelet-bootstrap
#查看角色
kubectl get clusterroles | grep system:node-bootstrapper
#查看授权角色
kubectl get clusterrolebinding
node节点操作(1/2)
上传文件并解压
rz -E
node.zip
#解压
unzip node.zip
chmod +x *.sh
启动kubelet
./kubelet.sh 192.168.253.22/33
ps aux | grep kubelet
master操作
检查到node1节点的请求
kubectl get csr
给集群颁发证书
kubectl certificate approve node-csr-7QLmDgr4zKfFZcCPdW3luBl3nkKs-KVE-WXx_Hu0Qn8
kubectl certificate approve node-csr-qOzA2zIsXQFxZWRTNvMoO2-GV91miuBywuBsUf2Mb3Y
查看状态
kubectl get nodes
node节点启动服务(1/2)
./proxy.sh 192.168.253.22/33
systemctl status kube-proxy.service
七、测试
启动一个pod
kubectl create deployment nginx-test --image=nginx
正在启动
查看pod
kubectl get pods
以上是关于K8S—二进制部署安装的主要内容,如果未能解决你的问题,请参考以下文章