毕业设计模板范文,青岛网站优化联系方式,建网站服务器用哪种,手游源码网目录 安装部署前提以下的操作指导(在master)之前都是三台机器都需要执行 安装docker服务下面的操作仅在k8smaster执行 安装部署
前提
以下的操作指导(在master)之前都是三台机器都需要执行
关闭防火墙
[rootk8smaster ~]# vim /etc/selinux/config
[rootk8smaster ~]# swa… 目录 安装部署前提以下的操作指导(在master)之前都是三台机器都需要执行 安装docker服务下面的操作仅在k8smaster执行 安装部署
前提
以下的操作指导(在master)之前都是三台机器都需要执行
关闭防火墙
[rootk8smaster ~]# vim /etc/selinux/config
[rootk8smaster ~]# swapoff -a
[rootk8smaster ~]# vim /etc/fstab
[rootk8smaster ~]# service firewalld stop
Redirecting to /bin/systemctl stop firewalld.service
[rootk8smaster ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.修改/etc/hosts文件
[rootk8smaster1 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.2.210 k8smaster
192.168.2.211 k8snode1
192.168.2.212 k8snode2建立免密通道方便后续转文件 每台机器都要实现相互之间的通道(以master为例) 生成密钥
ssh-keygen把本地生成的密钥文件和私钥文件拷贝到远程主机
ssh-copy-id k8smaster
ssh-copy-id k8snode1
ssh-copy-id k8snode2测试通道是否建立成功
ssh k8smaster
ssh k8snode1
ssh k8snode2关闭交换分区swap提升性能
临时关闭
swapoff -a永久关闭
[rootk8smaster1 ~]# cat /etc/fstab #
# /etc/fstab
# Created by anaconda on Sat Jul 29 17:46:15 2023
#
# Accessible filesystems, by reference, are maintained under /dev/disk
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID104d6b80-24cf-4094-8d9a-09a9878f9895 /boot xfs defaults 0 0
/dev/mapper/centos-home /home xfs defaults 0 0
#/dev/mapper/centos-swap swap swap defaults 0 0
注释/dev/mapper/centos-swap swap swap defaults 0 0即可
为什么要关闭swap交换分区 Swap是交换分区如果机器内存不够会使用swap分区但是swap分区的性能较低k8s设计的时候为了能提升性能默认是不允许使用交换分区的。Kubeadm初始化的时候会检测swap是否关闭如果没关闭那就初始化失败。如果不想要关闭交换分区安装k8s的时候可以指定–ignore-preflight-errorsSwap来解决。 加载相关内核文件
modprobe br_netfilterecho modprobe br_netfilter /etc/profilecat /etc/sysctl.d/k8s.conf EOF
net.bridge.bridge-nf-call-ip6tables 1
net.bridge.bridge-nf-call-iptables 1
net.ipv4.ip_forward 1
EOF 这是一个Linux命令它的作用是将文本输入到/etc/sysctl.d/k8s.conf文件中。“符号表示覆盖文件内容如果文件不存在则会创建一个新文件。”EOF表示输入的文本以EOF为结束标志 该命令在Kubernetes集群中通常用于配置内核参数以优化集群的性能和稳定性。在这个例子中EOF后面的文本应该包含一些内核参数的配置信息 加载配置
sysctl -p /etc/sysctl.d/k8s.conf[rootk8smaster1 ~]# sysctl -p /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables 1
net.bridge.bridge-nf-call-iptables 1
net.ipv4.ip_forward 1
配置阿里云源
yum install -y yum-utilsyum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo[rootk8smaster1 ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
已加载插件fastestmirror
adding repo from: http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
grabbing file http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
repo saved to /etc/yum.repos.d/docker-ce.repo
安装其他软件
yum install -y yum-utils device-mapper-persistent-data lvm2 wget net-tools nfs-utils lrzsz gcc gcc-c make cmake libxml2-devel openssl-devel curl curl-devel unzip sudo ntp libaio-devel wget vim ncurses-devel autoconf automake zlib-devel python-devel epel-release openssh-server socat ipvsadm conntrack ntpdate telnet ipvsadm配置安装k8s组件需要的阿里云的repo源
vim /etc/yum.repos.d/kubernetes.repo[kubernetes]
nameKubernetes
baseurlhttps://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled1
gpgcheck0配置时间同步 安装ntpdate命令 yum install ntpdate -y跟网络时间做同步 ntpdate cn.pool.ntp.org把时间同步做成计划任务 crontab -e* */1 * * * /usr/sbin/ntpdate cn.pool.ntp.org重启crond服务 service crond restart安装docker服务
安装docker
yum install docker-ce-20.10.6 -y设置开启启动
systemctl daemon-reload systemctl restart docker编辑文件
vim /etc/docker/daemon.json{registry-mirrors:[https://rsbud4vc.mirror.aliyuncs.com,https://registry.docker-cn.com,https://docker.mirrors.ustc.edu.cn,https://dockerhub.azk8s.cn,http://hub-mirror.c.163.com],exec-opts: [native.cgroupdriversystemd]
} systemctl daemon-reload systemctl restart docker修改docker文件驱动为systemd默认为cgroupfskubelet默认使用systemd两者必须一致才可以。 安装初始化k8s需要的软件包*(有1.23.6版本)
yum install -y kubelet-1.20.6 kubeadm-1.20.6 kubectl-1.20.6设置开机启动
systemctl enable kubeletKubeadm kubeadm是一个工具用来初始化k8s集群的 kubelet 安装在集群所有节点上用于启动Pod的 kubectl通过kubectl可以部署和管理应用查看各种资源创建、删除和更新各种组件 把初始化k8s集群需要的离线镜像包上传到机器上手动解压
docker load -i k8simage-1-20-6.tar.gz下面的操作仅在k8smaster执行
使用kubeadm初始化k8s集群 kubeadm config print init-defaults kubeadm.yaml[rootk8smaster1 ~]# ls
anaconda-ks.cfg k8simage-1-20-6.tar.gz kubeadm.yaml
改配置文件 根据我们自己的需求修改配置比如修改 imageRepository 的值kube-proxy 的模式为 ipvs初始化节点的时候需要指定cgroupDriver为systemd [rootk8smaster1 ~]# cat kubeadm.yaml
apiVersion: kubeadm.k8s.io/v1beta2
bootstrapTokens:
- groups:- system:bootstrappers:kubeadm:default-node-tokentoken: abcdef.0123456789abcdefttl: 24h0m0susages:- signing- authentication
kind: InitConfiguration
localAPIEndpoint:advertiseAddress: 192.168.2.210bindPort: 6443
nodeRegistration:criSocket: /var/run/dockershim.sockname: k8smaster1taints:- effect: NoSchedulekey: node-role.kubernetes.io/master
---
apiServer:timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta2
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns:type: CoreDNS
etcd:local:dataDir: /var/lib/etcd
imageRepository: registry.aliyuncs.com/google_containers
kind: ClusterConfiguration
kubernetesVersion: v1.20.0
networking:dnsDomain: cluster.localserviceSubnet: 10.96.0.0/12podSubnet: 10.244.0.0/16
scheduler: {}
---
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
mode: ipvs
---
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
cgroupDriver: systemd --image-repository registry.aliyuncs.com/google_containers为保证拉取镜像不到国外站点拉取手动指定仓库地址为registry.aliyuncs.com/google_containers。kubeadm默认从k8s.gcr.io拉取镜像。 mode: ipvs 表示kube-proxy代理模式是ipvs如果不指定ipvs会默认使用iptables但是iptables效率低所以我们生产环境建议开启ipvs阿里云和华为云托管的K8s也提供ipvs模式 我们本地有导入到的离线镜像k8simage-1-20-6.tar.gz所以会优先使用本地的镜像。 基于kubeadm.yaml文件初始化k8s
kubeadm init --configkubeadm.yaml --ignore-preflight-errorsSystemVerification显示如下说明安装完成 mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
在k8smaster上查看加入节点的命令
kubeadm token create --print-join-command在k8snode1、k8snode2输入下面命令
kubeadm join 192.168.2.210:6443 --token ooveyk.k9pttn2esdowdej0 --discovery-token-ca-cert-hash sha256:69470ed1d44af1f049b11cb85ac4638829063a9df8002dc47de3260d6d34dfe7 在k8smaster查看集群节点状况
[rootk8smaster1 ~]# kubectl get node
NAME STATUS ROLES AGE VERSION
k8smaster NotReady control-plane,master 11m v1.20.6
k8snode1 NotReady none 25s v1.20.6
k8snode2 NotReady none 18s v1.20.6
您在 /var/spool/mail/root 中有新邮件
可以看到k8snode1、k8snode2的ROLES角色为空()就表示这个节点是工作节点。
可以把k8snode1、k8snode2的ROLES变成work按照如下方法 kubectl label node k8snode1 node-role.kubernetes.io/workerworkerkubectl label node k8snode2 node-role.kubernetes.io/workerworker在k8smaster查看集群节点状况
[rootk8smaster1 ~]# kubectl get node
NAME STATUS ROLES AGE VERSION
k8smaster NotReady control-plane,master 17m v1.20.6
k8snode1 NotReady worker 6m19s v1.20.6
k8snode2 NotReady worker 6m12s v1.20.6上面状态都是NotReady状态说明没有安装网络插件 k8smaster安装kubernetes网络组件-Calico 下载配置文件地址https://docs.tigera.io/calico/latest/manifests/calico.yaml kubectl apply -f calico.yaml再次查看集群状态。
[rootk8smaster1 ~]# kubectl get node
NAME STATUS ROLES AGE VERSION
k8smaster Ready control-plane,master 20m v1.20.6
k8snode1 Ready worker 9m20s v1.20.6
k8snode2 Ready worker 9m13s v1.20.6 STATUS状态是Ready说明k8s集群正常运行了 [rootk8smaster ~]# kubectl get pod -n kube-system
NAME READY STATUS RESTARTS AGE
calico-kube-controllers-6949477b58-nwmr2 1/1 Running 0 70s
calico-node-5jq26 1/1 Running 0 70s
calico-node-lk4zv 1/1 Running 0 70s
calico-node-n4742 1/1 Running 0 70s
coredns-7f89b7bc75-7zdk5 1/1 Running 0 160m
coredns-7f89b7bc75-x8jcr 1/1 Running 0 160m
etcd-k8smaster 1/1 Running 0 160m
kube-apiserver-k8smaster 1/1 Running 0 160m
kube-controller-manager-k8smaster 1/1 Running 1 160m
kube-proxy-pkt7c 1/1 Running 0 159m
kube-proxy-pps8s 1/1 Running 0 2m15s
kube-proxy-qgs8x 1/1 Running 0 160m
kube-scheduler-k8smaster 这是一个使用 kubectl 工具在 Kubernetes 集群的 kube-system 命名空间中获取 Pod 信息的命令。 解析 kubectl: Kubernetes 命令行工具用于与 Kubernetes 集群进行交互。get: kubectl 的子命令之一用于从 Kubernetes 集群中获取资源的信息。pod: 要获取的资源类型表示 Pod 对象。-n kube-system: 选项指定要获取资源的命名空间为 kube-system。Kubernetes 中的命名空间是用于在集群中对资源进行逻辑隔离的一种机制。 执行该命令将显示 kube-system 命名空间中所有 Pod 的名称及其相关信息如状态、IP 地址、运行时间等。