centos7部署K8s

搭建k8s集群
准备 1 台 ky10
因只有一台ky10s,所以下面的操作中,master和worker节点会合并到一台机器上。
虚拟机的 配置要求最低要 2G 内存 2 核 CPU。
更新并安装依赖
yum -y update

yum install -y conntrack ipset sysstat curl iptables libseccomp

安装 Docker
卸载之前安装的 docker
yum remove docker docker latest docker-latest-logrotate docker-logrotate docker-engine docker-client docker-client-latest docker-common

安装必要依赖
yum install -y yum-utils device-mapper-persistent-data lvm2

解决:先去掉yum-utils

安装docker
yum install -y docker

备注:有时候执行会失败,是由于yum源地址有时访问不了
启动 docker 并设置开机启动
systemctl start docker
systemctl enable docker

测试 docker 安装是否成功
docker run hello-world

安装 k8s 前环境准备
修改 hosts 文件

设置 master 的 hostname,并且修改 hosts 文件

hostnamectl set-hostname master
设置域名信息
vi /etc/hosts

写入 master机器的 ip 和名称

168.1.50.55 master

#使用 ping 测试一下
ping master

系统基础前提配置
#关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
#关闭 selinux
setenforce 0
sed -i ‘s/^SELINUX=enforcingKaTeX parse error: Expected 'EOF', got '#' at position 44: …elinux/config #̲关闭 swap swapof…/#\1/g’ /etc/fstab
#`配置 iptables 的 ACCEPT 规则
iptables -F && iptables -X && iptables -F -t nat && iptables -X -t nat && iptables -P FORWARD ACCEPT

#设置系统参数
cat < /etc/sysctl.d/98-k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

#查看系统设置
Sysctl --system

主要关注参数:
net.ipv4.conf.all.rp_filter:该参数的值需要设置为0或1
安装 kubeadm, kubelet and kubectl
配置 yum 源
#01 配置 yum 源
cat < /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl= https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey= https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

安装 kubeadm&kubelet&kubectl (指定版本,因为Operator是基于kubernetes 1.18-1.20制作的)
yum install -y kubeadm-1.18.0-0

yum install -y kubelet-1.18.0-0

yum install -y kubectl-1.18.0-0

设置 docker 和 k8s 同一个 cgroup (这里不做操作,使用默认cgroup即可,即cgroups)
vi /etc/docker/daemon.json
【文件没内容的话,就新建;有的话,就加上这 一句,注意文件的格式[逗号]】
{
“exec-opts”: [“native.cgroupdriver=systemd”]
}

重启 docker【一定要执行】
systemctl restart docker 【重启 docker,一定要执行】

配置 kubelet
sed -i “s/cgroup-driver=systemd/cgroup-driver=cgroupfs/g” /etc/systemd/system/kubelet.service.d/10-kubeadm.conf 【找不到内容没关系】

重启 kubelet【一定要执行】
systemctl enable kubelet
systemctl start kubelet 【重启 kubelet,一定要执行】

查看 kubeadm 使用的镜像
kubeadm config images list

如果kube-开头的几个镜像的版本高于kube的版本,则使用k8s的版本号,所以上图中显示的版本是1.18.19,但是k8s的版本是1.18.0,那么下载这些镜像时,尽量使用1.18.0版本的镜像。

拉取镜像脚本【在三台机器上执行脚本】
sudo docker pull k8smx/kube-apiserver:v1.18.0
sudo docker pull k8smx/kube-controller-manager:v1.18.0
sudo docker pull k8smx/kube-scheduler:v1.18.0
sudo docker pull k8smx/kube-proxy:v1.18.0
sudo docker pull k8smx/pause:3.2
sudo docker pull k8smx/etcd:3.4.3-0
sudo docker pull coredns/coredns@sha256:a46c07fa2a502040e5e7fe0cc7169165f09f348ee178b22d1fe4aa4cb959523e
sudo docker image ls | grep coredns | grep -v grep | awk ‘{print “sudo docker tag “$3” “$1”:1.6.7”}’ | sh

sudo docker tag k8smx/kube-apiserver:v1.18.0 k8s.gcr.io/kube-apiserver:v1.18.0
sudo docker tag k8smx/kube-controller-manager:v1.18.0 k8s.gcr.io/kube-controller-manager:v1.18.0
sudo docker tag k8smx/kube-scheduler:v1.18.0 k8s.gcr.io/kube-scheduler:v1.18.0
sudo docker tag k8smx/kube-proxy:v1.18.0 k8s.gcr.io/kube-proxy:v1.18.0
sudo docker tag k8smx/pause:3.2 k8s.gcr.io/pause:3.2
sudo docker tag k8smx/etcd:3.4.3-0 k8s.gcr.io/etcd:3.4.3-0
sudo docker tag coredns/coredns:1.6.7 k8s.gcr.io/coredns:1.6.7

sudo docker rmi k8smx/kube-apiserver:v1.18.0
sudo docker rmi k8smx/kube-controller-manager:v1.18.0
sudo docker rmi k8smx/kube-scheduler:v1.18.0
sudo docker rmi k8smx/kube-proxy:v1.18.0
sudo docker rmi k8smx/pause:3.2
sudo docker rmi k8smx/etcd:3.4.3-0
sudo docker rmi coredns/coredns:1.6.7

docker images 【查看镜像】

此时 kubeadm 初始化需要的镜像已经全部拉取完成。

在启动前,先重置master节点
kubeadm reset

启动master
kubeadm init --kubernetes-version=“v1.18.0” --pod-network-cidr=10.244.0.0/16

#根据日志提示执行
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown ( i d − u ) : (id -u): (idu):(id -g) $HOME/.kube/config

#查看 pod
kubectl get pods -n kube-system
等待一会儿,同时可以发现像 etcd,controller,scheduler 等组件都以 pod 的方式安装成功了

注意:coredns 没有启动,需要安装网络插件

【查看 kube-system 的 pods】
这里的coredns一直处于Pending状态,等安装好calicao网络插件,就恢复正常了,这里先不管。

执行健康检查
#健康检查
curl -k https://localhost:6443/healthz

安装 calico 网络插件【只在 master 节点上安装】
master 节点初始化后还有两个 pod 没有运行成功,是因为差一个网 络插件,也可以选择其他网络插件。我这里在 master 节点上安装的 是 calico 网络插件。
查看 calico 网络插件需要 pull 哪些 image
curl https://docs.projectcalico.org/v3.9/manifests/calico.yaml | grep image 【版本会变 化,需要根据实际情况拉取镜像】

拉取 calico 镜像
docker pull calico/cni:v3.9.6

docker pull calico/pod2daemon-flexvol:v3.9.6

docker pull calico/node:v3.9.6

docker pull calico/kube-controllers:v3.9.6

在 k8s 中安装 calico
等待 calico 镜像拉取完成后就可以安装 calico 了
kubectl apply -f https://docs.projectcalico.org/v3.9/manifests/calico.yaml

查看 calico 是否安装成功
kubectl get pods -n kube-system
这里需要等待的时间久点,大概需要5分钟,需要先等calico都启动并且READY为1/1后,coredns才能启动正常

设置master节点,让master节点也参与调度
kubectl taint node master node-role.kubernetes.io/master-
m是节点的hostname主机名

初始化worker节点【只在 worker 节点上执行】
因为本次测试中,将master节点、worker节点集成到一台机器了,所以这部分内容可以不做。
拉取必要的镜像
docker pull k8smx/kube-proxy:v1.18.0
docker pull k8smx/pause:3.2

docker tag k8smx/kube-proxy:v1.18.0 k8s.gcr.io/kube-proxy:v1.18.0
docker tag k8smx/pause:3.2 k8s.gcr.io/pause:3.2

docker rmi k8smx/kube-proxy:v1.18.0
docker rmi k8smx/pause:3.2

在启动前,先重置master节点
kubeadm reset

启动worker节点
kubeadm join 192.168.32.78:6443 --token 1j5w8x.bmioq5oh214jfdl6 --discovery-token-ca-cert-hash sha256:6d7fabb0968d2e7944979071f9903fd9d8bb84c7fd5d21f6f89c4237325985f4
该命令在master启动节点时的输出结尾会出现

在master节点上检查worker节点的状态
kubectl get nodes

Ready状态即为正常

TLQ部署
加载tlq的镜像包
docker load -i tlq9broker-arm64.tar
docker load -i tlq9namesvr-arm64.tar
docker load -i tlq9-operator-arm64-v1alpha1.tar
docker load -i kube-rbac-proxy-v050-arm64.tar

部署operator
部署
这里使用的是install.yaml文件进行部署
kubectl apply -f install.yaml

查看operator的状态
kubectl get pods --all-namespaces

从这里可以看到有一个名为tlq9-operator-controller-manager-7bf974cb48-tthvj的pod,状态为running

部署tlq集群
部署
这里使用的是tlq-cluster.yaml文件进行部署
kubectl apply -f tlq-cluster.yaml

查看集群的状态
kubectl get pods --all-namespaces

从这里可以看到有一个名为tlqcluster-nameserver-0、tlqcluster-worker-0-0、tlqcluster-worker-1-0的pod,状态为running

查看实例的状态
kubectl get tlqnameserver -n tlqcluster
kubectl get tlqworker -n tlqcluster

三个实例的状态都为Healthy,表示正常,最后一列是访问的地址。

搭建k8s集群
准备 1 台 ky10
因只有一台ky10s,所以下面的操作中,master和worker节点会合并到一台机器上。
虚拟机的 配置要求最低要 2G 内存 2 核 CPU。
更新并安装依赖
yum -y update

yum install -y conntrack ipset sysstat curl iptables libseccomp

安装 Docker
卸载之前安装的 docker
yum remove docker docker latest docker-latest-logrotate docker-logrotate docker-engine docker-client docker-client-latest docker-common

安装必要依赖
yum install -y yum-utils device-mapper-persistent-data lvm2

解决:先去掉yum-utils

安装docker
yum install -y docker

备注:有时候执行会失败,是由于yum源地址有时访问不了
启动 docker 并设置开机启动
systemctl start docker
systemctl enable docker

测试 docker 安装是否成功
docker run hello-world

安装 k8s 前环境准备
修改 hosts 文件

设置 master 的 hostname,并且修改 hosts 文件

hostnamectl set-hostname master
设置域名信息
vi /etc/hosts

写入 master机器的 ip 和名称

168.1.50.55 master

#使用 ping 测试一下
ping master

系统基础前提配置
#关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
#关闭 selinux
setenforce 0
sed -i ‘s/^SELINUX=enforcingKaTeX parse error: Expected 'EOF', got '#' at position 44: …elinux/config #̲关闭 swap swapof…/#\1/g’ /etc/fstab
#`配置 iptables 的 ACCEPT 规则
iptables -F && iptables -X && iptables -F -t nat && iptables -X -t nat && iptables -P FORWARD ACCEPT

#设置系统参数
cat < /etc/sysctl.d/98-k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

#查看系统设置
Sysctl --system

主要关注参数:
net.ipv4.conf.all.rp_filter:该参数的值需要设置为0或1
安装 kubeadm, kubelet and kubectl
配置 yum 源
#01 配置 yum 源
cat < /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl= https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey= https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

安装 kubeadm&kubelet&kubectl (指定版本,因为Operator是基于kubernetes 1.18-1.20制作的)
yum install -y kubeadm-1.18.0-0

yum install -y kubelet-1.18.0-0

yum install -y kubectl-1.18.0-0

设置 docker 和 k8s 同一个 cgroup (这里不做操作,使用默认cgroup即可,即cgroups)
vi /etc/docker/daemon.json
【文件没内容的话,就新建;有的话,就加上这 一句,注意文件的格式[逗号]】
{
“exec-opts”: [“native.cgroupdriver=systemd”]
}

重启 docker【一定要执行】
systemctl restart docker 【重启 docker,一定要执行】

配置 kubelet
sed -i “s/cgroup-driver=systemd/cgroup-driver=cgroupfs/g” /etc/systemd/system/kubelet.service.d/10-kubeadm.conf 【找不到内容没关系】

重启 kubelet【一定要执行】
systemctl enable kubelet
systemctl start kubelet 【重启 kubelet,一定要执行】

查看 kubeadm 使用的镜像
kubeadm config images list

如果kube-开头的几个镜像的版本高于kube的版本,则使用k8s的版本号,所以上图中显示的版本是1.18.19,但是k8s的版本是1.18.0,那么下载这些镜像时,尽量使用1.18.0版本的镜像。

拉取镜像脚本【在三台机器上执行脚本】
sudo docker pull k8smx/kube-apiserver:v1.18.0
sudo docker pull k8smx/kube-controller-manager:v1.18.0
sudo docker pull k8smx/kube-scheduler:v1.18.0
sudo docker pull k8smx/kube-proxy:v1.18.0
sudo docker pull k8smx/pause:3.2
sudo docker pull k8smx/etcd:3.4.3-0
sudo docker pull coredns/coredns@sha256:a46c07fa2a502040e5e7fe0cc7169165f09f348ee178b22d1fe4aa4cb959523e
sudo docker image ls | grep coredns | grep -v grep | awk ‘{print “sudo docker tag “$3” “$1”:1.6.7”}’ | sh

sudo docker tag k8smx/kube-apiserver:v1.18.0 k8s.gcr.io/kube-apiserver:v1.18.0
sudo docker tag k8smx/kube-controller-manager:v1.18.0 k8s.gcr.io/kube-controller-manager:v1.18.0
sudo docker tag k8smx/kube-scheduler:v1.18.0 k8s.gcr.io/kube-scheduler:v1.18.0
sudo docker tag k8smx/kube-proxy:v1.18.0 k8s.gcr.io/kube-proxy:v1.18.0
sudo docker tag k8smx/pause:3.2 k8s.gcr.io/pause:3.2
sudo docker tag k8smx/etcd:3.4.3-0 k8s.gcr.io/etcd:3.4.3-0
sudo docker tag coredns/coredns:1.6.7 k8s.gcr.io/coredns:1.6.7

sudo docker rmi k8smx/kube-apiserver:v1.18.0
sudo docker rmi k8smx/kube-controller-manager:v1.18.0
sudo docker rmi k8smx/kube-scheduler:v1.18.0
sudo docker rmi k8smx/kube-proxy:v1.18.0
sudo docker rmi k8smx/pause:3.2
sudo docker rmi k8smx/etcd:3.4.3-0
sudo docker rmi coredns/coredns:1.6.7

docker images 【查看镜像】

此时 kubeadm 初始化需要的镜像已经全部拉取完成。

在启动前,先重置master节点
kubeadm reset

启动master
kubeadm init --kubernetes-version=“v1.18.0” --pod-network-cidr=10.244.0.0/16

#根据日志提示执行
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown ( i d − u ) : (id -u): (idu):(id -g) $HOME/.kube/config

#查看 pod
kubectl get pods -n kube-system
等待一会儿,同时可以发现像 etcd,controller,scheduler 等组件都以 pod 的方式安装成功了

注意:coredns 没有启动,需要安装网络插件

【查看 kube-system 的 pods】
这里的coredns一直处于Pending状态,等安装好calicao网络插件,就恢复正常了,这里先不管。

执行健康检查
#健康检查
curl -k https://localhost:6443/healthz

安装 calico 网络插件【只在 master 节点上安装】
master 节点初始化后还有两个 pod 没有运行成功,是因为差一个网 络插件,也可以选择其他网络插件。我这里在 master 节点上安装的 是 calico 网络插件。
查看 calico 网络插件需要 pull 哪些 image
curl https://docs.projectcalico.org/v3.9/manifests/calico.yaml | grep image 【版本会变 化,需要根据实际情况拉取镜像】

拉取 calico 镜像
docker pull calico/cni:v3.9.6

docker pull calico/pod2daemon-flexvol:v3.9.6

docker pull calico/node:v3.9.6

docker pull calico/kube-controllers:v3.9.6

在 k8s 中安装 calico
等待 calico 镜像拉取完成后就可以安装 calico 了
kubectl apply -f https://docs.projectcalico.org/v3.9/manifests/calico.yaml

查看 calico 是否安装成功
kubectl get pods -n kube-system
这里需要等待的时间久点,大概需要5分钟,需要先等calico都启动并且READY为1/1后,coredns才能启动正常

设置master节点,让master节点也参与调度
kubectl taint node master node-role.kubernetes.io/master-
m是节点的hostname主机名

初始化worker节点【只在 worker 节点上执行】
因为本次测试中,将master节点、worker节点集成到一台机器了,所以这部分内容可以不做。
拉取必要的镜像
docker pull k8smx/kube-proxy:v1.18.0
docker pull k8smx/pause:3.2

docker tag k8smx/kube-proxy:v1.18.0 k8s.gcr.io/kube-proxy:v1.18.0
docker tag k8smx/pause:3.2 k8s.gcr.io/pause:3.2

docker rmi k8smx/kube-proxy:v1.18.0
docker rmi k8smx/pause:3.2

在启动前,先重置master节点
kubeadm reset

启动worker节点
kubeadm join 192.168.32.78:6443 --token 1j5w8x.bmioq5oh214jfdl6 --discovery-token-ca-cert-hash sha256:6d7fabb0968d2e7944979071f9903fd9d8bb84c7fd5d21f6f89c4237325985f4
该命令在master启动节点时的输出结尾会出现

在master节点上检查worker节点的状态
kubectl get nodes

Ready状态即为正常

TLQ部署
加载tlq的镜像包
docker load -i tlq9broker-arm64.tar
docker load -i tlq9namesvr-arm64.tar
docker load -i tlq9-operator-arm64-v1alpha1.tar
docker load -i kube-rbac-proxy-v050-arm64.tar

部署operator
部署
这里使用的是install.yaml文件进行部署
kubectl apply -f install.yaml

查看operator的状态
kubectl get pods --all-namespaces

从这里可以看到有一个名为tlq9-operator-controller-manager-7bf974cb48-tthvj的pod,状态为running

部署tlq集群
部署
这里使用的是tlq-cluster.yaml文件进行部署
kubectl apply -f tlq-cluster.yaml

查看集群的状态
kubectl get pods --all-namespaces

从这里可以看到有一个名为tlqcluster-nameserver-0、tlqcluster-worker-0-0、tlqcluster-worker-1-0的pod,状态为running

查看实例的状态
kubectl get tlqnameserver -n tlqcluster
kubectl get tlqworker -n tlqcluster

三个实例的状态都为Healthy,表示正常,最后一列是访问的地址。

搭建k8s集群
准备 1 台 ky10
因只有一台ky10s,所以下面的操作中,master和worker节点会合并到一台机器上。
虚拟机的 配置要求最低要 2G 内存 2 核 CPU。
更新并安装依赖
yum -y update

yum install -y conntrack ipset sysstat curl iptables libseccomp

安装 Docker
卸载之前安装的 docker
yum remove docker docker latest docker-latest-logrotate docker-logrotate docker-engine docker-client docker-client-latest docker-common

安装必要依赖
yum install -y yum-utils device-mapper-persistent-data lvm2

解决:先去掉yum-utils

安装docker
yum install -y docker

备注:有时候执行会失败,是由于yum源地址有时访问不了
启动 docker 并设置开机启动
systemctl start docker
systemctl enable docker

测试 docker 安装是否成功
docker run hello-world

安装 k8s 前环境准备
修改 hosts 文件

设置 master 的 hostname,并且修改 hosts 文件

hostnamectl set-hostname master
设置域名信息
vi /etc/hosts

写入 master机器的 ip 和名称

168.1.50.55 master

#使用 ping 测试一下
ping master

系统基础前提配置
#关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
#关闭 selinux
setenforce 0
sed -i ‘s/^SELINUX=enforcingKaTeX parse error: Expected 'EOF', got '#' at position 44: …elinux/config #̲关闭 swap swapof…/#\1/g’ /etc/fstab
#`配置 iptables 的 ACCEPT 规则
iptables -F && iptables -X && iptables -F -t nat && iptables -X -t nat && iptables -P FORWARD ACCEPT

#设置系统参数
cat < /etc/sysctl.d/98-k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

#查看系统设置
Sysctl --system

主要关注参数:
net.ipv4.conf.all.rp_filter:该参数的值需要设置为0或1
安装 kubeadm, kubelet and kubectl
配置 yum 源
#01 配置 yum 源
cat < /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl= https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey= https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

安装 kubeadm&kubelet&kubectl (指定版本,因为Operator是基于kubernetes 1.18-1.20制作的)
yum install -y kubeadm-1.18.0-0

yum install -y kubelet-1.18.0-0

yum install -y kubectl-1.18.0-0

设置 docker 和 k8s 同一个 cgroup (这里不做操作,使用默认cgroup即可,即cgroups)
vi /etc/docker/daemon.json
【文件没内容的话,就新建;有的话,就加上这 一句,注意文件的格式[逗号]】
{
“exec-opts”: [“native.cgroupdriver=systemd”]
}

重启 docker【一定要执行】
systemctl restart docker 【重启 docker,一定要执行】

配置 kubelet
sed -i “s/cgroup-driver=systemd/cgroup-driver=cgroupfs/g” /etc/systemd/system/kubelet.service.d/10-kubeadm.conf 【找不到内容没关系】

重启 kubelet【一定要执行】
systemctl enable kubelet
systemctl start kubelet 【重启 kubelet,一定要执行】

查看 kubeadm 使用的镜像
kubeadm config images list

如果kube-开头的几个镜像的版本高于kube的版本,则使用k8s的版本号,所以上图中显示的版本是1.18.19,但是k8s的版本是1.18.0,那么下载这些镜像时,尽量使用1.18.0版本的镜像。
搭建k8s集群
准备 1 台 ky10
因只有一台ky10s,所以下面的操作中,master和worker节点会合并到一台机器上。
虚拟机的 配置要求最低要 2G 内存 2 核 CPU。
更新并安装依赖
yum -y update

yum install -y conntrack ipset sysstat curl iptables libseccomp

安装 Docker
卸载之前安装的 docker
yum remove docker docker latest docker-latest-logrotate docker-logrotate docker-engine docker-client docker-client-latest docker-common

安装必要依赖
yum install -y yum-utils device-mapper-persistent-data lvm2

解决:先去掉yum-utils

安装docker
yum install -y docker

备注:有时候执行会失败,是由于yum源地址有时访问不了
启动 docker 并设置开机启动
systemctl start docker
systemctl enable docker

测试 docker 安装是否成功
docker run hello-world

安装 k8s 前环境准备
修改 hosts 文件

设置 master 的 hostname,并且修改 hosts 文件

hostnamectl set-hostname master
设置域名信息
vi /etc/hosts

写入 master机器的 ip 和名称

168.1.50.55 master

#使用 ping 测试一下
ping master

系统基础前提配置
#关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
#关闭 selinux
setenforce 0
sed -i ‘s/^SELINUX=enforcingKaTeX parse error: Expected 'EOF', got '#' at position 44: …elinux/config #̲关闭 swap swapof…/#\1/g’ /etc/fstab
#`配置 iptables 的 ACCEPT 规则
iptables -F && iptables -X && iptables -F -t nat && iptables -X -t nat && iptables -P FORWARD ACCEPT

#设置系统参数
cat < /etc/sysctl.d/98-k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

#查看系统设置
Sysctl --system

主要关注参数:
net.ipv4.conf.all.rp_filter:该参数的值需要设置为0或1
安装 kubeadm, kubelet and kubectl
配置 yum 源
#01 配置 yum 源
cat < /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl= https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey= https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

安装 kubeadm&kubelet&kubectl (指定版本,因为Operator是基于kubernetes 1.18-1.20制作的)
yum install -y kubeadm-1.18.0-0

yum install -y kubelet-1.18.0-0

yum install -y kubectl-1.18.0-0

设置 docker 和 k8s 同一个 cgroup (这里不做操作,使用默认cgroup即可,即cgroups)
vi /etc/docker/daemon.json
【文件没内容的话,就新建;有的话,就加上这 一句,注意文件的格式[逗号]】
{
“exec-opts”: [“native.cgroupdriver=systemd”]
}

重启 docker【一定要执行】
systemctl restart docker 【重启 docker,一定要执行】

配置 kubelet
sed -i “s/cgroup-driver=systemd/cgroup-driver=cgroupfs/g” /etc/systemd/system/kubelet.service.d/10-kubeadm.conf 【找不到内容没关系】

重启 kubelet【一定要执行】
systemctl enable kubelet
systemctl start kubelet 【重启 kubelet,一定要执行】

查看 kubeadm 使用的镜像
kubeadm config images list

如果kube-开头的几个镜像的版本高于kube的版本,则使用k8s的版本号,所以上图中显示的版本是1.18.19,但是k8s的版本是1.18.0,那么下载这些镜像时,尽量使用1.18.0版本的镜像。

拉取镜像脚本【在三台机器上执行脚本】
sudo docker pull k8smx/kube-apiserver:v1.18.0
sudo docker pull k8smx/kube-controller-manager:v1.18.0
sudo docker pull k8smx/kube-scheduler:v1.18.0
sudo docker pull k8smx/kube-proxy:v1.18.0
sudo docker pull k8smx/pause:3.2
sudo docker pull k8smx/etcd:3.4.3-0
sudo docker pull coredns/coredns@sha256:a46c07fa2a502040e5e7fe0cc7169165f09f348ee178b22d1fe4aa4cb959523e
sudo docker image ls | grep coredns | grep -v grep | awk ‘{print “sudo docker tag “$3” “$1”:1.6.7”}’ | sh

sudo docker tag k8smx/kube-apiserver:v1.18.0 k8s.gcr.io/kube-apiserver:v1.18.0
sudo docker tag k8smx/kube-controller-manager:v1.18.0 k8s.gcr.io/kube-controller-manager:v1.18.0
sudo docker tag k8smx/kube-scheduler:v1.18.0 k8s.gcr.io/kube-scheduler:v1.18.0
sudo docker tag k8smx/kube-proxy:v1.18.0 k8s.gcr.io/kube-proxy:v1.18.0
sudo docker tag k8smx/pause:3.2 k8s.gcr.io/pause:3.2
sudo docker tag k8smx/etcd:3.4.3-0 k8s.gcr.io/etcd:3.4.3-0
sudo docker tag coredns/coredns:1.6.7 k8s.gcr.io/coredns:1.6.7

sudo docker rmi k8smx/kube-apiserver:v1.18.0
sudo docker rmi k8smx/kube-controller-manager:v1.18.0
sudo docker rmi k8smx/kube-scheduler:v1.18.0
sudo docker rmi k8smx/kube-proxy:v1.18.0
sudo docker rmi k8smx/pause:3.2
sudo docker rmi k8smx/etcd:3.4.3-0
sudo docker rmi coredns/coredns:1.6.7

docker images 【查看镜像】

此时 kubeadm 初始化需要的镜像已经全部拉取完成。

在启动前,先重置master节点
kubeadm reset

启动master
kubeadm init --kubernetes-version=“v1.18.0” --pod-network-cidr=10.244.0.0/16

#根据日志提示执行
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown ( i d − u ) : (id -u): (idu):(id -g) $HOME/.kube/config

#查看 pod
kubectl get pods -n kube-system
等待一会儿,同时可以发现像 etcd,controller,scheduler 等组件都以 pod 的方式安装成功了

注意:coredns 没有启动,需要安装网络插件

【查看 kube-system 的 pods】
这里的coredns一直处于Pending状态,等安装好calicao网络插件,就恢复正常了,这里先不管。

执行健康检查
#健康检查
curl -k https://localhost:6443/healthz

安装 calico 网络插件【只在 master 节点上安装】
master 节点初始化后还有两个 pod 没有运行成功,是因为差一个网 络插件,也可以选择其他网络插件。我这里在 master 节点上安装的 是 calico 网络插件。
查看 calico 网络插件需要 pull 哪些 image
curl https://docs.projectcalico.org/v3.9/manifests/calico.yaml | grep image 【版本会变 化,需要根据实际情况拉取镜像】

拉取 calico 镜像
docker pull calico/cni:v3.9.6

docker pull calico/pod2daemon-flexvol:v3.9.6

docker pull calico/node:v3.9.6

docker pull calico/kube-controllers:v3.9.6

在 k8s 中安装 calico
等待 calico 镜像拉取完成后就可以安装 calico 了
kubectl apply -f https://docs.projectcalico.org/v3.9/manifests/calico.yaml

查看 calico 是否安装成功
kubectl get pods -n kube-system
这里需要等待的时间久点,大概需要5分钟,需要先等calico都启动并且READY为1/1后,coredns才能启动正常

设置master节点,让master节点也参与调度
kubectl taint node master node-role.kubernetes.io/master-
m是节点的hostname主机名

初始化worker节点【只在 worker 节点上执行】
因为本次测试中,将master节点、worker节点集成到一台机器了,所以这部分内容可以不做。
拉取必要的镜像
docker pull k8smx/kube-proxy:v1.18.0
docker pull k8smx/pause:3.2

docker tag k8smx/kube-proxy:v1.18.0 k8s.gcr.io/kube-proxy:v1.18.0
docker tag k8smx/pause:3.2 k8s.gcr.io/pause:3.2

docker rmi k8smx/kube-proxy:v1.18.0
docker rmi k8smx/pause:3.2

在启动前,先重置master节点
kubeadm reset

启动worker节点
kubeadm join 192.168.32.78:6443 --token 1j5w8x.bmioq5oh214jfdl6 --discovery-token-ca-cert-hash sha256:6d7fabb0968d2e7944979071f9903fd9d8bb84c7fd5d21f6f89c4237325985f4
该命令在master启动节点时的输出结尾会出现

在master节点上检查worker节点的状态
kubectl get nodes

Ready状态即为正常

TLQ部署
加载tlq的镜像包
docker load -i tlq9broker-arm64.tar
docker load -i tlq9namesvr-arm64.tar
docker load -i tlq9-operator-arm64-v1alpha1.tar
docker load -i kube-rbac-proxy-v050-arm64.tar

部署operator
部署
这里使用的是install.yaml文件进行部署
kubectl apply -f install.yaml

查看operator的状态
kubectl get pods --all-namespaces

从这里可以看到有一个名为tlq9-operator-controller-manager-7bf974cb48-tthvj的pod,状态为running

部署tlq集群
部署
这里使用的是tlq-cluster.yaml文件进行部署
kubectl apply -f tlq-cluster.yaml

查看集群的状态
kubectl get pods --all-namespaces

从这里可以看到有一个名为tlqcluster-nameserver-0、tlqcluster-worker-0-0、tlqcluster-worker-1-0的pod,状态为running

查看实例的状态
kubectl get tlqnameserver -n tlqcluster
kubectl get tlqworker -n tlqcluster

三个实例的状态都为Healthy,表示正常,最后一列是访问的地址。

拉取镜像脚本【在三台机器上执行脚本】
sudo docker pull k8smx/kube-apiserver:v1.18.0
sudo docker pull k8smx/kube-controller-manager:v1.18.0
sudo docker pull k8smx/kube-scheduler:v1.18.0
sudo docker pull k8smx/kube-proxy:v1.18.0
sudo docker pull k8smx/pause:3.2
sudo docker pull k8smx/etcd:3.4.3-0
sudo docker pull coredns/coredns@sha256:a46c07fa2a502040e5e7fe0cc7169165f09f348ee178b22d1fe4aa4cb959523e
sudo docker image ls | grep coredns | grep -v grep | awk ‘{print “sudo docker tag “$3” “$1”:1.6.7”}’ | sh

sudo docker tag k8smx/kube-apiserver:v1.18.0 k8s.gcr.io/kube-apiserver:v1.18.0
sudo docker tag k8smx/kube-controller-manager:v1.18.0 k8s.gcr.io/kube-controller-manager:v1.18.0
sudo docker tag k8smx/kube-scheduler:v1.18.0 k8s.gcr.io/kube-scheduler:v1.18.0
sudo docker tag k8smx/kube-proxy:v1.18.0 k8s.gcr.io/kube-proxy:v1.18.0
sudo docker tag k8smx/pause:3.2 k8s.gcr.io/pause:3.2
sudo docker tag k8smx/etcd:3.4.3-0 k8s.gcr.io/etcd:3.4.3-0
sudo docker tag coredns/coredns:1.6.7 k8s.gcr.io/coredns:1.6.7

sudo docker rmi k8smx/kube-apiserver:v1.18.0
sudo docker rmi k8smx/kube-controller-manager:v1.18.0
sudo docker rmi k8smx/kube-scheduler:v1.18.0
sudo docker rmi k8smx/kube-proxy:v1.18.0
sudo docker rmi k8smx/pause:3.2
sudo docker rmi k8smx/etcd:3.4.3-0
sudo docker rmi coredns/coredns:1.6.7

docker images 【查看镜像】

此时 kubeadm 初始化需要的镜像已经全部拉取完成。

在启动前,先重置master节点
kubeadm reset

启动master
kubeadm init --kubernetes-version=“v1.18.0” --pod-network-cidr=10.244.0.0/16

#根据日志提示执行
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown ( i d − u ) : (id -u): (idu):(id -g) $HOME/.kube/config

#查看 pod
kubectl get pods -n kube-system
等待一会儿,同时可以发现像 etcd,controller,scheduler 等组件都以 pod 的方式安装成功了

注意:coredns 没有启动,需要安装网络插件

【查看 kube-system 的 pods】
这里的coredns一直处于Pending状态,等安装好calicao网络插件,就恢复正常了,这里先不管。

执行健康检查
#健康检查
curl -k https://localhost:6443/healthz

安装 calico 网络插件【只在 master 节点上安装】
master 节点初始化后还有两个 pod 没有运行成功,是因为差一个网 络插件,也可以选择其他网络插件。我这里在 master 节点上安装的 是 calico 网络插件。
查看 calico 网络插件需要 pull 哪些 image
curl https://docs.projectcalico.org/v3.9/manifests/calico.yaml | grep image 【版本会变 化,需要根据实际情况拉取镜像】

拉取 calico 镜像
docker pull calico/cni:v3.9.6

docker pull calico/pod2daemon-flexvol:v3.9.6

docker pull calico/node:v3.9.6

docker pull calico/kube-controllers:v3.9.6

在 k8s 中安装 calico
等待 calico 镜像拉取完成后就可以安装 calico 了
kubectl apply -f https://docs.projectcalico.org/v3.9/manifests/calico.yaml

查看 calico 是否安装成功
kubectl get pods -n kube-system
这里需要等待的时间久点,大概需要5分钟,需要先等calico都启动并且READY为1/1后,coredns才能启动正常

设置master节点,让master节点也参与调度
kubectl taint node master node-role.kubernetes.io/master-
m是节点的hostname主机名

初始化worker节点【只在 worker 节点上执行】
因为本次测试中,将master节点、worker节点集成到一台机器了,所以这部分内容可以不做。
拉取必要的镜像
docker pull k8smx/kube-proxy:v1.18.0
docker pull k8smx/pause:3.2

docker tag k8smx/kube-proxy:v1.18.0 k8s.gcr.io/kube-proxy:v1.18.0
docker tag k8smx/pause:3.2 k8s.gcr.io/pause:3.2

docker rmi k8smx/kube-proxy:v1.18.0
docker rmi k8smx/pause:3.2

在启动前,先重置master节点
kubeadm reset

启动worker节点
kubeadm join 192.168.32.78:6443 --token 1j5w8x.bmioq5oh214jfdl6 --discovery-token-ca-cert-hash sha256:6d7fabb0968d2e7944979071f9903fd9d8bb84c7fd5d21f6f89c4237325985f4
该命令在master启动节点时的输出结尾会出现

在master节点上检查worker节点的状态
kubectl get nodes

Ready状态即为正常

TLQ部署
加载tlq的镜像包
docker load -i tlq9broker-arm64.tar
docker load -i tlq9namesvr-arm64.tar
docker load -i tlq9-operator-arm64-v1alpha1.tar
docker load -i kube-rbac-proxy-v050-arm64.tar

部署operator
部署
这里使用的是install.yaml文件进行部署
kubectl apply -f install.yaml

查看operator的状态
kubectl get pods --all-namespaces

从这里可以看到有一个名为tlq9-operator-controller-manager-7bf974cb48-tthvj的pod,状态为running

部署tlq集群
部署
这里使用的是tlq-cluster.yaml文件进行部署
kubectl apply -f tlq-cluster.yaml

查看集群的状态
kubectl get pods --all-namespaces

从这里可以看到有一个名为tlqcluster-nameserver-0、tlqcluster-worker-0-0、tlqcluster-worker-1-0的pod,状态为running

查看实例的状态
kubectl get tlqnameserver -n tlqcluster
kubectl get tlqworker -n tlqcluster

三个实例的状态都为Healthy,表示正常,最后一列是访问的地址。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值