个人网站的内容,北京市建筑网站,google 网站突然一条收录也没有,银川网站建设广告公司名单这里写自定义目录标题 一、服务器准备二、安装docker三、安装k8s四、安装部署dashboard 一、服务器准备 服务器准备 服务器名称服务器IP角色CPU(最低要求)内存(最低要求)master192.168.248.10master2核2Gworker1192.168.248.11node2核2Gworker2192.168.248.12node2核2G 修改ipvi /etc/sysconfig/network-scripts/ifcfg-ens33 修改主机名hostnamectl set-hostname master 修改主机名与ip映射vi /etc/hosts 192.168.248.10 master
192.168.248.11 worker1
192.168.248.12 worker2重置网络service network restart 关闭防火墙systemctl stop firewalld 禁用selinux [rootlocalhost ~]# setenforce 0
[rootlocalhost ~]# getenforce
Permissiveps永久禁用方法需重启服务器 sed -i s/^SELINUXenforcing$/SELINUXpermissive/ /etc/selinux/config关闭swapswapoff -a ps1swap分区指的是虚拟内存分区它的作用是在物理内存使用完之后将磁盘空间虚拟成内存来使用。但是会对系统性能产生影响。所以这里需要关闭。如果不能关闭则在需要修改集群的配置参数 ps2永久关闭方法需重启服务器 sed -ri s/.*swap.*/#/ /etc/fstab查看free -m bridged网桥设置 1概念为了让服务器的iptables能发现bridged traffic需要添加网桥过滤和地址转发功能 2新建modules-load.d/k8s.conf文件vi /etc/modules-load.d/k8s.conf overlay
br_netfilter3新建sysctl.d/k8s.conf文件vi /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables 1
net.ipv4.ip_forward 1
net.bridge.bridge-nf-call-iptables 14加载配置文件sysctl --system 5加载br_netfilter网桥过滤模块 modprobe br_netfilter 6加载网络虚拟化技术模块modprobe overlay 7检验网桥过滤模块是否加载成功lsmod | grep -e br_netfilter -e overlay 配置IPVS 1概念service有基于iptables和基于ipvs两种代理模型。基于ipvs的性能要高一些。需要手动载入才能使用ipvs模块 2安装ipset和ipvsadmyum install ipset ipvsadm 3新建脚本文件vi /etc/sysconfig/modules/ipvs.modules modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv44添加执行权限给脚本文件然后执行脚本文件 chmod x /etc/sysconfig/modules/ipvs.modules
/bin/bash /etc/sysconfig/modules/ipvs.modules5检验模块是否加载成功lsmod | grep -e ip_vs -e nf_conntrack_ipv4
二、安装docker
ps三台服务器都装 下载curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun 启动systemctl start docker 设置开机自启动systemctl enable docker 验证docker images docker设置阿里云加速器和cgroup驱动程序vi /etc/docker/daemon.json (没有的话需要自己创建该文件) {registry-mirrors: [https://ustc-edu-cn.mirror.aliyuncs.com/,https://hub-mirror.c.163.com,https://mirror.baidubce.com,https://bh9y01q2.mirror.aliyuncs.com],exec-opts: [native.cgroupdriversystemd]
}psendpoint [“https://bh9y01q2.mirror.aliyuncs.com”]这个地址可以自己取阿里云注册使用 1登录阿里云https://www.aliyun.com/ 2获取平台分配的镜像加速地址https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 重新导入配置systemctl daemon-reload 重启systemctl restart docker 查看是否配置成功docker info 三、安装k8s
ps三台服务器都装 安装kubelet、kubeadm、kubectl 1添加yum源vi /etc/yum.repos.d/kubernetes.repo [kubernetes]
nameKubernetes
baseurlhttp://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled1
gpgcheck0
repo_gpgcheck0
gpgkeyhttp://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpghttp://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg2下载yum install -y --setoptobsoletes0 kubelet-1.23.6 kubeadm-1.23.6 kubectl-1.23.6 3配置 systemctl enable kubelet --now 4相关概念 1. obsoletes等于1表示更新旧的rpm包的同时会删除旧包0表示更新旧的rpm包不会删除旧包
2. kubelet启动后可以用命令journalctl -f -u kubelet查看kubelet更详细的日志
3. kubelet默认使用systemd作为cgroup driver
4. 启动后kubelet现在每隔几秒就会重启因为它陷入了一个等待kubeadm指令的死循环下载各个机器需要的镜像 1查看集群所需镜像的版本kubeadm config images list 2创建文件夹mkdir /opt/k8s 3创建文件vi /opt/k8s/images.sh #!/bin/bashimages(
kube-apiserver:v1.23.17
kube-controller-manager:v1.23.17
kube-scheduler:v1.23.17
kube-proxy:v1.23.17
pause:3.6
etcd:3.5.1-0
coredns:v1.8.6
)
for imageName in ${images[]} ; do
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
donekube-apiserver:v1.24.0 #接口服务给予rest风格开放k8s的接口服务
kube-controller-manager:v1.24.0 #控制管理器管理各个类型的控制器针对k8s中的各个资源进行管理
kube-scheduler:v1.24.0 #调度器将pod根据一定的算法调用到合适的节点上
kube-proxy:v1.24.0 #网络代理负责service的服务发现负载均衡
pause:3.7
etcd:3.5.3-0 #理解为ks的数据库键值类型存储的分布式数据库提供了基于Raft算法实现自主的集群高可用。老版本基于内存。新版本持久化存储
coredns:v1.8.6 #网络配置4赋权 chmod x /opt/k8s/images.sh 5执行下载 /opt/k8s/images.sh 初始化主节点(只在master节点执行) kubeadm init --apiserver-advertise-address192.168.248.10 --control-plane-endpointmaster --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers --kubernetes-version v1.23.6 --service-cidr10.96.0.0/16 --pod-network-cidr192.169.0.0/16 ps–pod-network-cidr跟主机网络必须不同 ps将最后一段标黑的保存后续使用 参数说明 --apiserver-advertise-address string 设置 apiserver 绑定的 IP.--apiserver-bind-port int32 设置apiserver 监听的端口. (默认 6443)--apiserver-cert-extra-sans strings api证书中指定额外的Subject Alternative Names (SANs) 可以是IP 也可以是DNS名称。 证书是和SAN绑定的。--cert-dir string 证书存放的目录 (默认 /etc/kubernetes/pki)--certificate-key string kubeadm-cert secret 中 用于加密 control-plane 证书的key--config string kubeadm 配置文件的路径.--cri-socket string CRI socket 文件路径如果为空 kubeadm 将自动发现相关的socket文件; 只有当机器中存在多个 CRI socket 或者 存在非标准 CRI socket 时才指定.--dry-run 测试并不真正执行;输出运行后的结果.--feature-gates string 指定启用哪些额外的feature 使用 keyvalue 对的形式。--help -h 帮助文档--ignore-preflight-errors strings 忽略前置检查错误被忽略的错误将被显示为警告. 例子: IsPrivilegedUser,Swap. Value all ignores errors from all checks.--image-repository string 选择拉取 control plane images 的镜像repo (default k8s.gcr.io)--kubernetes-version string 选择K8S版本. (default stable-1)--node-name string 指定node的名称默认使用 node 的 hostname.--pod-network-cidr string 指定 pod 的网络 control plane 会自动将 网络发布到其他节点的node让其上启动的容器使用此网络--service-cidr string 指定service 的IP 范围. (default 10.96.0.0/12)--service-dns-domain string 指定 service 的 dns 后缀, e.g. myorg.internal. (default cluster.local)--skip-certificate-key-print 不打印 control-plane 用于加密证书的key.--skip-phases strings 跳过指定的阶段phase--skip-token-print 不打印 kubeadm init 生成的 default bootstrap token --token string 指定 node 和control plane 之间简历双向认证的token 格式为 [a-z0-9]{6}\.[a-z0-9]{16} - e.g. abcdef.0123456789abcdef--token-ttl duration token 自动删除的时间间隔。 (e.g. 1s, 2m, 3h). 如果设置为 0, token 永不过期 (default 24h0m0s)--upload-certs 上传 control-plane 证书到 kubeadm-certs Secret.ps如果想要回退可执行以下指令 kubeadm reset -f
rm -rf /etc/kubernetes
rm -rf /var/lib/etcd/
rm -rf $HOME/.kube查看状态systemctl status kubelet ps如果报错可以使用journalctl -xefu kubelet看下哪里的问题 设置.kube/config(只在master执行) 1mkdir -p $HOME/.kube 2cp -i /etc/kubernetes/admin.conf $HOME/.kube/config 3chown ( i d − u ) : (id -u): (id−u):(id -g) $HOME/.kube/config 安装网络插件calico(只在master执行) 1切换目录cd /opt/k8s 2下载curl https://docs.projectcalico.org/archive/v3.19/manifests/calico.yaml -O 3修改内容其中value为上一步的–pod-network-cidr的ipvi /opt/k8s/calico.yaml - name: CALICO_IPV4POOL_CIDR
value: 192.169.0.0/164查看需要的镜像cat calico.yaml | grep image 5编辑镜像下载文件vi /opt/calicoImages.sh
#!/bin/bashimages(
docker.io/calico/cni:v3.19.4
docker.io/calico/pod2daemon-flexvol:v3.19.4
docker.io/calico/node:v3.19.4
docker.io/calico/kube-controllers:v3.19.4
)
for imageName in ${images[]} ; do
docker pull $imageName
done6赋权chmod x /opt/calicoImages.sh
7执行/opt/calicoImages.sh
8部署calico(只在master执行)kubectl apply -f calico.yaml
9此时查看master的状态kubectl get pods -A 10kubectl get nodes 加入node节点 1执行kubeadm join master:6443 --token x3mk8z.fzaqp9swqxl2o6r3 --discovery-token-ca-cert-hash sha256:f4ced0c25b14a796e02b3300b011f7ec8e120c01e95595d78b6d1b38b8805dfc 2令牌有效期24小时可以在master节点生成新令牌命令 kubeadm token create --print-join-command 3查看master的状态kubectl get pods -A 4kubectl get nodes 5拷贝主节点文件使node节点可以执行kubectl命令scp -r H O M E / . k u b e w o r k e r 1 : HOME/.kube worker1: HOME/.kubeworker1:HOME ps拷贝完自行在node节点测试kubectl命令 6将主节点中的/etc/kubernetes/admin.conf文件拷贝到从node节点相同目录下scp /etc/kubernetes/admin.conf worker1:/etc/kubernetes 7导入环境 echo export KUBECONFIG/etc/kubernetes/admin.conf ~/.bash_profile
source ~/.bash_profile四、安装部署dashboard
ps只在master执行 dashboard和kubernetes的版本对应关系参考https://github.com/kubernetes/dashboard/blob/v2.5.1/go.mod 下载镜像 1切换目录cd /opt/k8s 2下载curl https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.1/aio/deploy/recommended.yaml -O 3创建资源kubectl apply -f recommended.yaml ps会下载kubernetesui/dashboard:v2.5.1、kubernetesui/metrics-scraper:v1.0.7两个镜像。也可以直接先下载镜像避免等待 定时刷新查看进度watch -n 3 kubectl get pods -A 设置访问端口kubectl edit svc kubernetes-dashboard -n kubernetes-dashboard 将type: ClusterIP改为type: NodePort
添加 nodePort: 32414查看端口命令kubectl get svc -A | grep kubernetes-dashboard 访问dashborad页面https://192.168.248.11:32414如下所示 获取普通用户token 1获取列表 kubectl get secrets -n kubernetes-dashboard 2获取密钥kubectl describe secrets default-token-fjzh6 -n kubernetes-dashboard 获取admin用户token 1创建访问账号vi /opt/dash.yaml 创建用户–》申明角色–》用户和角色绑定 apiVersion: v1
kind: ServiceAccount
metadata:name: admin-usernamespace: kubernetes-dashboard
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:name: admin-user
roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: cluster-admin
subjects:
- kind: ServiceAccountname: admin-usernamespace: kubernetes-dashboard2应用 kubectl apply -f /opt/dash.yaml 3获取访问令牌 kubectl describe secrets admin-user-token-d8f7x -n kubernetes-dashboard 将获取的token填入页面登录即可