当前位置: 首页 > news >正文

网站合同建设模板北京金港建设股份有限公司网站

网站合同建设模板,北京金港建设股份有限公司网站,专注咖啡相关的网站,网站建设是网络工程师吗目录 一、理论 1.kubeadm 2.Kubeadm部署K8S单Master架构 3.环境部署 4.所有节点安装docker 5.所有节点安装kubeadm#xff0c;kubelet和kubectl 6.部署K8S集群 7.安装dashboard 8.安装Harbor私有仓库 9.内核参数优化方案 二、实验 1.Kubeadm部署K8S单Master架构 … 目录 一、理论 1.kubeadm 2.Kubeadm部署K8S单Master架构 3.环境部署 4.所有节点安装docker 5.所有节点安装kubeadmkubelet和kubectl 6.部署K8S集群 7.安装dashboard 8.安装Harbor私有仓库 9.内核参数优化方案 二、实验 1.Kubeadm部署K8S单Master架构 2. 部署流程 3.环境部署 4.所有节点安装docker 5.所有节点安装kubeadmkubelet和kubectl 6.部署K8S集群 7.安装dashboard 8.安装Harbor私有仓库 三、问题 1.加入k8s集群报错 2.Kubernetes各版本对应支持的docker版本列表 3.Kubernetes 1.24 1.25 集群使用docker作为容器 4.连接拒绝 5.kubeadm join命令将node加入master时报错 6.coredns一直处于ContainerCreating 7.flannel如何分配子网 8.其他机器无法登陆Harbor 四、总结 一、理论 1.kubeadm (1) 概念 Kubeadm 是一个提供了 kubeadm init 和 kubeadm join 的工具 作为创建 Kubernetes 集群的 “快捷途径” 的最佳实践。 kubeadm 通过执行必要的操作来启动和运行最小可用集群。 按照设计它只关注启动引导而非配置机器。同样的 安装各种 “锦上添花” 的扩展例如 Kubernetes Dashboard、 监控方案、以及特定云平台的扩展都不在讨论范围内。 相反在 kubeadm 之上构建更高级别以及更加合规的工具 理想情况下使用 kubeadm 作为所有部署工作的基准将会更加易于创建一致性集群。 2管理命令 kubeadm init 用于搭建控制平面节点 kubeadm join 用于搭建工作节点并将其加入到集群中 kubeadm upgrade 用于升级 Kubernetes 集群到新版本 kubeadm config 如果你使用了 v1.7.x 或更低版本的 kubeadm 版本初始化你的集群则使用 kubeadm upgrade 来配置你的集群 kubeadm token 用于管理 kubeadm join 使用的令牌 kubeadm reset 用于恢复通过 kubeadm init 或者 kubeadm join 命令对节点进行的任何变更 kubeadm certs 用于管理 Kubernetes 证书 kubeadm kubeconfig 用于管理 kubeconfig 文件 kubeadm version 用于打印 kubeadm 的版本信息 kubeadm alpha 用于预览一组可用于收集社区反馈的特性 2.Kubeadm部署K8S单Master架构 1架构 2软件包 本次实验所需要的软件 【免费】K8S单Master节点kubeadm方式软件与配置文件资源-CSDN文库 3部署流程 1、在所有节点上安装Docker和kubeadm 2、部署Kubernetes Master 3、部署容器网络插件 4、部署 Kubernetes Node将节点加入Kubernetes集群中 5、部署 Dashboard Web 页面可视化查看Kubernetes资源 6、部署 Harbor 私有仓库存放镜像资源3.环境部署 1所有节点关闭防火墙规则关闭selinux关闭swap交换 systemctl stop firewalld systemctl disable firewalld setenforce 0 iptables -F iptables -t nat -F iptables -t mangle -F iptables -X swapoff -a #交换分区必须要关闭 sed -ri s/.*swap.*/#/ /etc/fstab #永久关闭swap分区符号在sed命令中代表上次匹配的结果 2加载 ip_vs 模块 for i in $(ls /usr/lib/modules/$(uname -r)/kernel/net/netfilter/ipvs|grep -o ^[^.]*);do echo $i; /sbin/modinfo -F filename $i /dev/null 21 /sbin/modprobe $i;done 3修改主机名 hostnamectl set-hostname master hostnamectl set-hostname node01 hostnamectl set-hostname node02 所有节点修改hosts文件 vim /etc/hosts 192.168.204.171 master 192.168.204.173 node01 192.168.204.175 node02 4调整内核参数 cat /etc/sysctl.d/kubernetes.conf EOF #开启网桥模式可将网桥的流量传递给iptables链 net.bridge.bridge-nf-call-ip6tables1 net.bridge.bridge-nf-call-iptables1 #关闭ipv6协议 net.ipv6.conf.all.disable_ipv61 net.ipv4.ip_forward1 EOF生效参数 sysctl --system 4.所有节点安装docker 1安装 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 yum install -y docker-ce docker-ce-cli containerd.io 2加速地址需要修改为自己的 mkdir /etc/docker cat /etc/docker/daemon.json EOF {registry-mirrors: [https://XXXXXXXX.mirror.aliyuncs.com],exec-opts: [native.cgroupdriversystemd],log-driver: json-file,log-opts: {max-size: 100m} } EOF #使用Systemd管理的Cgroup来进行资源控制与管理因为相对Cgroupfs而言Systemd限制CPU、内存等资源更加简单和成熟稳定。 #日志使用json-file格式类型存储大小为100M保存在/var/log/containers目录下方便ELK等日志系统收集和管理日志。systemctl daemon-reload systemctl restart docker.service systemctl enable docker.service docker info | grep Cgroup Driver Cgroup Driver: systemd 5.所有节点安装kubeadmkubelet和kubectl 1定义kubernetes源 cat /etc/yum.repos.d/kubernetes.repo EOF [kubernetes] nameKubernetes baseurlhttps://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 enabled1 gpgcheck0 repo_gpgcheck0 gpgkeyhttps://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOFyum install -y kubelet-1.15.1 kubeadm-1.15.1 kubectl-1.15.1 开机自启kubelet systemctl enable kubelet.service6.部署K8S集群 1查看初始化需要的镜像 kubeadm config images list2在 master 节点上传 kubeadm-basic.images.tar.gz 压缩包至 /opt 目录 cd /opt tar zxvf kubeadm-basic.images.tar.gz 3使用for循环载入镜像 for i in $(ls /opt/kubeadm-basic.images/*.tar); do docker load -i $i; done 4复制镜像和脚本到 node 节点并在 node 节点上执行脚本 bash /opt/load-images.sh scp -r kubeadm-basic.images rootnode01:/opt scp -r kubeadm-basic.images rootnode02:/opt 5初始化kubeadm 方法一: kubeadm config print init-defaults /opt/kubeadm-config.yaml修改配置文件   cd /opt/ vim kubeadm-config.yaml ...... 11 localAPIEndpoint: 12 advertiseAddress: 192.168.204.171 #指定master节点的IP地址 13 bindPort: 6443 ...... 34 kubernetesVersion: v1.15.1 #指定kubernetes版本号 35 networking: 36 dnsDomain: cluster.local 37 podSubnet: 10.244.0.0/16 #指定pod网段10.244.0.0/16用于匹配flannel默认网段 38 serviceSubnet: 10.96.0.0/16 #指定service网段 39 scheduler: {} --- #末尾再添加以下内容 apiVersion: kubeproxy.config.k8s.io/v1alpha1 kind: KubeProxyConfiguration mode: ipvs #把默认的service调度方式改为ipvs模式 kubeadm init --configkubeadm-config.yaml --experimental-upload-certs | tee kubeadm-init.log#--experimental-upload-certs 参数可以在后续执行加入节点时自动分发证书文件k8sV1.16版本开始替换为 --upload-certs #tee kubeadm-init.log 用以输出日志//查看 kubeadm-init 日志 less kubeadm-init.log//kubernetes配置文件目录 ls /etc/kubernetes///存放ca等证书和密码的目录 ls /etc/kubernetes/pki 方法二 kubeadm init \ --apiserver-advertise-address0.0.0.0 \ --image-repository registry.aliyuncs.com/google_containers \ --kubernetes-versionv1.15.1 \ --service-cidr10.1.0.0/16 \ --pod-network-cidr10.244.0.0/16 -------------------------------------------------------------------------------------------- 初始化集群需使用kubeadm init命令可以指定具体参数初始化也可以指定配置文件初始化。 可选参数 --apiserver-advertise-addressapiserver通告给其他组件的IP地址一般应该为Master节点的用于集群内部通信的IP地址0.0.0.0表示节点上所有可用地址 --apiserver-bind-portapiserver的监听端口默认是6443 --cert-dir通讯的ssl证书文件默认/etc/kubernetes/pki --control-plane-endpoint控制台平面的共享终端可以是负载均衡的ip地址或者dns域名高可用集群时需要添加 --image-repository拉取镜像的镜像仓库默认是k8s.gcr.io --kubernetes-version指定kubernetes版本 --pod-network-cidrpod资源的网段需与pod网络插件的值设置一致。通常Flannel网络插件的默认为10.244.0.0/16Calico插件的默认值为192.168.0.0/16 --service-cidrservice资源的网段 --service-dns-domainservice全域名的后缀默认是cluster.local ---------------------------------------------------------------------------------------------方法二初始化后需要修改 kube-proxy 的 configmap开启 ipvs kubectl edit cm kube-proxy -nkube-system 修改mode: ipvs提示 ...... Your Kubernetes control-plane has initialized successfully!To start using your cluster, you need to run the following as a regular user:mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/configYou should now deploy a pod network to the cluster. Run kubectl apply -f [podnetwork].yaml with one of the options listed at:https://kubernetes.io/docs/concepts/cluster-administration/addons/Then you can join any number of worker nodes by running the following on each as root:kubeadm join 192.168.204.171:6443 --token abcdef.0123456789abcdef \--discovery-token-ca-cert-hash sha256:594fd0a687443eb0f161d9ae76efcf27588af78579c8e362d70fc06986f0454b 更改kube-proxy配置 kubectl edit configmap kube-proxy -n kube-system 找到如下部分的内容 minSyncPeriod: 0sscheduler: syncPeriod: 30skind: KubeProxyConfigurationmetricsBindAddress: 127.0.0.1:10249mode: ipvs # 加上这个nodePortAddresses: null 其中mode原来是空默认为iptables模式改为ipvs scheduler默认是空默认负载均衡算法为轮询 编辑完保存退出 6设定kubectl kubectl需经由API server认证及授权后方能执行相应的管理操作kubeadm 部署的集群为其生成了一个具有管理员权限的认证配置文件 /etc/kubernetes/admin.conf它可由 kubectl 通过默认的 “$HOME/.kube/config” 的路径进行加载。   mkdir -p $HOME/.kube cp -i /etc/kubernetes/admin.conf $HOME/.kube/config chown $(id -u):$(id -g) $HOME/.kube/config 在 node 节点上执行 kubeadm join 命令加入群集 kubeadm join 192.168.204.171:6443 --token d3q8kf.wvis2wbfdfymwic4 \--discovery-token-ca-cert-hash sha256:6d851b46ccd6c61a81d3aa08eae4971bc7a5ba32dd4918f7981c482e3fdd4d52 7所有节点部署网络插件flannel 方法一 所有节点上传flannel镜像 flannel.tar 到 /opt 目录master节点上传 kube-flannel.yml 文件 cd /opt docker load flannel.tar 在 master 节点创建 flannel 资源 kubectl apply -f kube-flannel.yml 方法二 kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml8在master节点查看节点状态需要等几分钟 kubectl get nodeskubectl get pods -n kube-system 9测试 pod 资源创建 kubectl create deployment nginx --imagenginx10暴露端口提供服务 kubectl expose deployment nginx --port80 --typeNodePort11测试访问 curl http://node01:3083312扩展3个副本 kubectl scale deployment nginx --replicas3 kubectl get pods -o wide 7.安装dashboard 1所有节点安装dashboard 方法一 所有节点上传dashboard镜像 dashboard.tar 到 /opt 目录master节点上传kubernetes-dashboard.yaml文件 cd /opt/ docker load dashboard.tarkubectl apply -f kubernetes-dashboard.yaml 方法二 kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml 2查看所有容器运行状态 kubectl get pods,svc -n kube-system -o wide3使用浏览器访问 https://node02:30001/https://192.168.204.175:30001/ 4创建service account并绑定默认cluster-admin管理员集群角色 kubectl create serviceaccount dashboard-admin -n kube-systemkubectl create clusterrolebinding dashboard-admin --clusterrolecluster-admin --serviceaccountkube-system:dashboard-admin 5获取令牌密钥 kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk /dashboard-admin/{print $1})6复制token令牌直接登录网站 8.安装Harbor私有仓库 1在192.168.204.176服务器操作 修改主机名 hostnamectl set-hostname hub.david.com所有节点加上主机名映射 echo 192.168.204.176 hub.david.com /etc/hosts (2)  安装 docker 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 yum install -y docker-ce docker-ce-cli containerd.io 私有仓库配置加速地址需要修改为自己的 mkdir /etc/docker cat /etc/docker/daemon.json EOF {registry-mirrors: [https://XXXXXXXX.mirror.aliyuncs.com],exec-opts: [native.cgroupdriversystemd],log-driver: json-file,log-opts: {max-size: 100m},insecure-registries: [https://hub.david.com] } EOFsystemctl start docker systemctl enable docker 所有 node 节点都修改 docker 配置文件加上私有仓库配置加速地址需要修改为自己的 cat /etc/docker/daemon.json EOF {registry-mirrors: [https://XXXXXXXX.mirror.aliyuncs.com],exec-opts: [native.cgroupdriversystemd],log-driver: json-file,log-opts: {max-size: 100m},insecure-registries: [https://hub.david.com] } EOF (3)安装 Harbor 上传 harbor-offline-installer-v1.2.2.tgz 和 docker-compose 文件到 /opt 目录 cd /opt cp docker-compose /usr/local/bin/ chmod x /usr/local/bin/docker-compose tar zxvf harbor-offline-installer-v1.2.2.tgz cd harbor/ vim harbor.cfg 5 hostname hub.david.com 9 ui_url_protocol https 24 ssl_cert /data/cert/server.crt 25 ssl_cert_key /data/cert/server.key 59 harbor_admin_password Harbor12345 生成证书 mkdir -p /data/cert cd /data/cert #生成私钥 openssl genrsa -des3 -out server.key 2048 输入两遍密码123456 [roothub cert]# openssl req -new -key server.key -out server.csr Enter pass phrase for server.key: You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter ., the field will be left blank. ----- Country Name (2 letter code) [XX]:CN State or Province Name (full name) []:JS Locality Name (eg, city) [Default City]:NJ Organization Name (eg, company) [Default Company Ltd]:DAVID Organizational Unit Name (eg, section) []:DAVID Common Name (eg, your name or your servers hostname) []:hub.david.com Email Address []:admindavid.comPlease enter the following extra attributes to be sent with your certificate request A challenge password []: An optional company name []: [roothub cert]# 备份私钥 cp server.key server.key.org清除私钥密码 openssl rsa -in server.key.org -out server.key 输入私钥密码123456 签名证书 openssl x509 -req -days 1000 -in server.csr -signkey server.key -out server.crtchmod x /data/cert/*cd /opt/harbor/ ./install.sh 浏览器访问 浏览器访问https://hub.david.com 用户名admin 密码Harbor12345 在一个node节点上登录harbor docker login -u admin -p Harbor12345 https://hub.david.com上传镜像 docker tag nginx:latest hub.david.com/library/nginx:v1 docker push hub.david.com/library/nginx:v1 在master节点上删除之前创建的nginx资源 kubectl delete deployment nginxkubectl run nginx-deployment --imagehub.david.com/library/nginx:v1 --port80 --replicas3kubectl expose deployment nginx-deployment --port30000 --target-port80kubectl get svc,pods yum install ipvsadm -y ipvsadm -Ln 登录测试一下 curl 10.96.14.134:30000kubectl edit svc nginx-deployment25 type: NodePort #把调度策略改成NodePort 浏览器访问 kubectl get svc浏览器访问192.168.204.171:30118192.168.204.173:30118192.168.204.175:30118 9.内核参数优化方案 cat /etc/sysctl.d/kubernetes.conf EOF net.bridge.bridge-nf-call-iptables1 net.bridge.bridge-nf-call-ip6tables1 net.ipv4.ip_forward1 net.ipv4.tcp_tw_recycle0 vm.swappiness0 #禁止使用 swap 空间只有当系统内存不足OOM时才允许使用它 vm.overcommit_memory1 #不检查物理内存是否够用 vm.panic_on_oom0 #开启 OOM fs.inotify.max_user_instances8192 fs.inotify.max_user_watches1048576 fs.file-max52706963 #指定最大文件句柄数 fs.nr_open52706963 #仅4.4以上版本支持 net.ipv6.conf.all.disable_ipv61 net.netfilter.nf_conntrack_max2310720 EOF 二、实验 1.Kubeadm部署K8S单Master架构 1环境 表1 环境 master192.168.204.171docker、kubeadm、kubelet、kubectl、flannel4C/4Gcpu核心数要求大于2node01192.168.204.173docker、kubeadm、kubelet、kubectl、flannel2C/2Gnode02192.168.204.175docker、kubeadm、kubelet、kubectl、flannel2C/2GHarbor节点192.168.204.176docker、docker-compose、harbor-offline-v1.2.24C/4G 2. 部署流程 1、在所有节点上安装Docker和kubeadm 2、部署Kubernetes Master 3、部署容器网络插件 4、部署 Kubernetes Node将节点加入Kubernetes集群中 5、部署 Dashboard Web 页面可视化查看Kubernetes资源 6、部署 Harbor 私有仓库存放镜像资源3.环境部署 1所有节点关闭防火墙规则关闭selinux关闭swap交换for i in $(ls  2加载 ip_vs 模块 3修改主机名 所有节点修改hosts文件 4调整内核参数 master node1 node2 4.所有节点安装docker 1安装 安装依赖包 添加repo 安装docker 2加速地址 启动 5.所有节点安装kubeadmkubelet和kubectl 1定义kubernetes源 安装 开机自启kubelet 6.部署K8S集群 1查看初始化需要的镜像 2在 master 节点上传 kubeadm-basic.images.tar.gz 压缩包至 /opt 目录 3使用for循环载入镜像 4复制镜像和脚本到 node 节点并在 node 节点上执行脚本 bash /opt/load-images.sh 5初始化kubeadm 方法一: 修改配置文件 启动 因老版本问题如此方法启动失败需要降级docker版本并采用第二种方法 方法二 kubernetes配置文件目录存放ca等证书和密码的目录 6设定kubectl kubectl需经由API server认证及授权后方能执行相应的管理操作kubeadm 部署的集群为其生成了一个具有管理员权限的认证配置文件 /etc/kubernetes/admin.conf它可由 kubectl 通过默认的 “$HOME/.kube/config” 的路径进行加载。 master节点生成token 在 node 节点上执行 kubeadm join 命令加入群集 查看所有节点目前状态为NotReady 7所有节点部署网络插件flannel 方法一 所有节点上传flannel镜像 flannel.tar 到 /opt 目录master节点上传 kube-flannel.yml 文件 在 master 节点创建 flannel 资源 在master节点查看节点状态需要等几分钟 测试 pod 资源创建 暴露端口提供服务 查询service 测试访问 扩展3个副本 7.安装dashboard 1所有节点安装dashboard 方法一 所有节点上传dashboard镜像 dashboard.tar 到 /opt 目录master节点上传kubernetes-dashboard.yaml文件 查看所有容器运行状态 使用浏览器访问 创建service account并绑定默认cluster-admin管理员集群角色 获取令牌密钥 需要输入令牌 复制token令牌直接登录网站 登录成功 8.安装Harbor私有仓库 1在192.168.204.176服务器操作 修改主机名 所有节点加上主机名映射 (2)  安装 docker 已安装(经过20到18版本降级处理) 修改镜像加速地址所有 node 节点都修改 docker 配置文件加上私有仓库配置 启动 (3)安装 Harbor 上传 harbor-offline-installer-v1.2.2.tgz 和 docker-compose 文件到 /opt 目录 修改配置文件 生成证书输入两遍密码123456 生成证书 备份私钥 清除私钥密码 签名证书输入私钥密码123456 浏览器访问 登录界面 输入账户密码 登录成功 在一个node节点上登录harbor 上传镜像 推送成功 在master节点上删除之前创建的nginx资源 安装 登录测试一下 把调度策略改成NodePort 获取物理机端口映射地址为30118 浏览器访问192.168.204.171:30118192.168.204.173:30118192.168:204.175:30118 三、问题 1.加入k8s集群报错 1报错 [WARNING SystemVerification]: this Docker version is not on the list of validated versions: 24.0.5. Latest validated version: 18.09 2原因分析 此 Docker 版本不在已验证版本列表中24.0.5。 最新验证版本18.09 3解决方法 分别查看docker和k8s的版本 kubectl version docker version降低docker版本到18.09 查看当前仓库支持的docker版本 yum list docker-ce --showduplicates | sort -r选择18.09的版本降级到18.06版本会报错 语法 yum downgrade --setoptobsoletes0 -y docker-ce-v e r s i o n d o c k e r − c e − s e l i n u x − {version} docker-ce-selinux-versiondocker−ce−selinux−{version} 降低docker版本到18.06.3.ce-3.el7   yum downgrade --setoptobsoletes0 -y docker-ce-18.09.9-3.el7 docker-ce-cli-18.09.9-3.el7 containerd.io查看降级后版本 systemctl start docker docker version2.Kubernetes各版本对应支持的docker版本列表 1解决 Kubernetes主要做Docker的容器化管理总结一下如何查看k8s对应支持的docker版本的方法。 在GitHub可以查看所有Kubernetets版本信息https://github.com/kubernetes/kubernetes/releases 截止2019.08.09最新的版本支持信息Kubernetes 1.15.2 –Docker版本1.13.1、17.03、17.06、17.09、18.06、18.09Kubernetes 1.15.1 –Docker版本1.13.1、17.03、17.06、17.09、18.06、18.09Kubernetes 1.15.0 –Docker版本1.13.1、17.03、17.06、17.09、18.06、18.09Kubernetes 1.14.5 –Docker版本1.13.1、17.03、17.06、17.09、18.06、18.09Kubernetes 1.14.4 –Docker版本1.13.1、17.03、17.06、17.09、18.06、18.09Kubernetes 1.14.3 –Docker版本1.13.1、17.03、17.06、17.09、18.06、18.09Kubernetes 1.14.2 –Docker版本1.13.1、17.03、17.06、17.09、18.06、18.09Kubernetes 1.14.1 –Docker版本1.13.1、17.03、17.06、17.09、18.06、18.09Kubernetes 1.14.0 –Docker版本1.13.1、17.03、17.06、17.09、18.06、18.09Kubernetes 1.13.5 –Docker版本1.11.1、1.12.1、1.13.1、17.03、17.06、17.09、18.06Kubernetes 1.13.5 –Docker版本1.11.1、1.12.1、1.13.1、17.03、17.06、17.09、18.06Kubernetes 1.13.4 –Docker版本1.11.1、1.12.1、1.13.1、17.03、17.06、17.09、18.06Kubernetes 1.13.3 –Docker版本1.11.1、1.12.1、1.13.1、17.03、17.06、17.09、18.06Kubernetes 1.13.2 –Docker版本1.11.1、1.12.1、1.13.1、17.03、17.06、17.09、18.06Kubernetes 1.13.1 –Docker版本1.11.1、1.12.1、1.13.1、17.03、17.06、17.09、18.06Kubernetes 1.13.0 –Docker版本1.11.1、1.12.1、1.13.1、17.03、17.06、17.09、18.06Kubernetes 1.12.* –Docker版本1.11.1、1.12.1、1.13.1、17.03、17.06、17.09、18.06Kubernetes 1.11.* –Docker版本1.11.2到1.13.1、17.03Kubernetes 1.10.* –Docker版本1.11.2到1.13.1、17.03 查看方式 1老版本 点击链接进入到GitHub中查找对应的版本后点击  CHANGELOG-1.15.md 点进去查找docker versions页面现在存在404情况 2新版本 点击链接进入到GitHub中查找对应的版本后点击 the CHANGELOG  3.Kubernetes 1.24 1.25 集群使用docker作为容器 1问题 在新版本Kubernetes环境1.24以及以上版本下官方不在支持docker作为容器运行时了若要继续使用docker 需要对docker进行配置一番。需要安装cri-docker作为Kubernetes容器。 2解决 查看当前容器运行时 # 查看指定节点容器运行时 kubectl describe node k8s-node1 | grep ContainerContainer Runtime Version: containerd://1.6.8# 查看所有节点容器运行时 kubectl describe node | grep ContainerContainer Runtime Version: containerd://1.6.8Container Runtime Version: containerd://1.6.8Container Runtime Version: containerd://1.6.8Container Runtime Version: containerd://1.6.8Container Runtime Version: containerd://1.6.8Container Runtime Version: containerd://1.6.8Container Runtime Version: containerd://1.6.8Container Runtime Version: containerd://1.6.8 安装docker # 更新源信息 yum update # 安装必要软件 yum install -y yum-utils device-mapper-persistent-data lvm2# 写入docker源信息 sudo yum-config-manager \--add-repo \https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo# 更新源信息并进行安装 yum update yum install docker-ce docker-ce-cli containerd.io# 配置加速器 sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json -EOF {registry-mirrors: [https://XXXXXXXX.mirror.aliyuncs.com],exec-opts: [native.cgroupdriversystemd] } EOF sudo systemctl daemon-reload sudo systemctl restart docker安装cri-docker # 由于1.24以及更高版本不支持docker所以安装cri-docker # 下载cri-docker wget https://ghproxy.com/https://github.com/Mirantis/cri-dockerd/releases/download/v0.2.5/cri-dockerd-0.2.5.amd64.tgz# 解压cri-docker tar xvf cri-dockerd-0.2.5.amd64.tgz cp cri-dockerd/cri-dockerd /usr/bin/# 写入启动配置文件 cat /usr/lib/systemd/system/cri-docker.service EOF [Unit] DescriptionCRI Interface for Docker Application Container Engine Documentationhttps://docs.mirantis.com Afternetwork-online.target firewalld.service docker.service Wantsnetwork-online.target Requirescri-docker.socket[Service] Typenotify ExecStart/usr/bin/cri-dockerd --network-plugincni --pod-infra-container-imageregistry.aliyuncs.com/google_containers/pause:3.7 ExecReload/bin/kill -s HUP $MAINPID TimeoutSec0 RestartSec2 RestartalwaysStartLimitBurst3StartLimitInterval60sLimitNOFILEinfinity LimitNPROCinfinity LimitCOREinfinityTasksMaxinfinity Delegateyes KillModeprocess[Install] WantedBymulti-user.target EOF# 写入socket配置文件 cat /usr/lib/systemd/system/cri-docker.socket EOF [Unit] DescriptionCRI Docker Socket for the API PartOfcri-docker.service[Socket] ListenStream%t/cri-dockerd.sock SocketMode0660 SocketUserroot SocketGroupdocker[Install] WantedBysockets.target EOF# 进行启动cri-docker systemctl daemon-reload ; systemctl enable cri-docker --now 为kubelet配置容器运行时 # 1.25 版本下 所有k8s节点配置kubelet service cat /usr/lib/systemd/system/kubelet.service EOF[Unit] DescriptionKubernetes Kubelet Documentationhttps://github.com/kubernetes/kubernetes Aftercontainerd.service Requirescontainerd.service[Service] ExecStart/usr/local/bin/kubelet \\--bootstrap-kubeconfig/etc/kubernetes/bootstrap-kubelet.kubeconfig \\--kubeconfig/etc/kubernetes/kubelet.kubeconfig \\--config/etc/kubernetes/kubelet-conf.yml \\--container-runtime-endpointunix:///run/cri-dockerd.sock \\--node-labelsnode.kubernetes.io/node[Install] WantedBymulti-user.target EOF# 1.24 版本下 所有k8s节点配置kubelet service cat /usr/lib/systemd/system/kubelet.service EOF[Unit] DescriptionKubernetes Kubelet Documentationhttps://github.com/kubernetes/kubernetes Aftercontainerd.service Requirescontainerd.service[Service] ExecStart/usr/local/bin/kubelet \\--bootstrap-kubeconfig/etc/kubernetes/bootstrap-kubelet.kubeconfig \\--kubeconfig/etc/kubernetes/kubelet.kubeconfig \\--config/etc/kubernetes/kubelet-conf.yml \\--container-runtimeremote \\--runtime-request-timeout15m \\--container-runtime-endpointunix:///run/cri-dockerd.sock \\--cgroup-driversystemd \\--node-labelsnode.kubernetes.io/node \\--feature-gatesIPv6DualStacktrue[Install] WantedBymulti-user.target EOF# 重启 systemctl daemon-reload systemctl restart kubelet systemctl enable --now kubelet 验证 # 查看指定节点容器运行时 kubectl describe node k8s-node1 | grep ContainerContainer Runtime Version: docker://20.10.17# 查看所有节点容器运行时 kubectl describe node | grep ContainerContainer Runtime Version: containerd://1.6.8Container Runtime Version: containerd://1.6.8Container Runtime Version: containerd://1.6.8Container Runtime Version: containerd://1.6.8Container Runtime Version: containerd://1.6.8Container Runtime Version: containerd://1.6.8Container Runtime Version: containerd://1.6.8Container Runtime Version: docker://20.10.17 4.连接拒绝 1报错 2原因分析 kubectl命令需要使用kubernetes-admin来运行需要admin.conf文件conf文件是通过“ kubeadmin init”命令在主节点/etc/kubernetes 中创建但是从节点没有conf文件也没有设置 KUBECONFIG /root/admin.conf环境变量所以需要复制conf文件到从节点并设置环境变量就可以了 3解决方法 主节点的admin.conf拷贝到从节点设置环境变量 mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config或 #拷贝admin.conf注意路径 echo export KUBECONFIG/etc/kubernetes/admin.conf ~/.bash_profile source ~/.bash_profile执行 成功 5.kubeadm join命令将node加入master时报错 1报错 节点纳入管理失败五分钟后超时放弃连接。 出现error execution phase preflight: couldnt validate the identity of the API Server: abort connecting to API servers after timeout of 5m0s错误 2原因分析 token 过期 此时需要通过kubedam重新生成token [rootmaster opt]# kubeadm token generate 30nu35.cqbsmgdd15xnxh1t#下面这条命令中会用到该结果根据token输出添加命令 [rootmaster opt]# kubeadm token create 30nu35.cqbsmgdd15xnxh1t --print-join-command --ttl0 kubeadm join 192.168.204.171:6443 --token 30nu35.cqbsmgdd15xnxh1t --discovery-token-ca-cert-hash sha256:6d851b46ccd6c61a81d3aa08eae4971bc7a5ba32dd4918f7981c482e3fdd4d52 k8s api server不可达 此时需要检查和关闭所有服务器的firewalld和selinux [rootmaster ~]#setenforce 0 [rootmaster ~]#sed -i s/^SELINUXenforcing$/SELINUXpermissive/ /etc/selinux/config [rootmaster ~]#systemctl disable firewalld --now3解决 6.coredns一直处于ContainerCreating 1报错 coredns一直处于ContainerCreating状态 2原因分析 查询pod状态 kubectl describe pods -n kube-system coredns-bccdc95cf-fjskt 最后的事件监听为 发现这里报错了 FailedCreatePodSandBox: Failed create pod sandbox 执行命令查看日志 sudo journalctl -xe | grep cni 发现为 ailed to find plugin flannel in path [/opt/cni/bin] 然后去/usr/local/bin目录下发现在master和worker节点忘记拷贝flannel命令了。 3解决方法 需要下载CNI插件CNI plugins v0.8.6 github下载地址https://github.com/containernetworking/plugins/releases/tag/v0.8.6 (在1.0.0版本后CNI Plugins中没有flannel) ①下载后通过xftp 上传到Linux /home目录解压 tar zxvf cni-plugins-linux-amd64-v0.8.6.tgz 1  node1节点 2 node2节点 ② 复制 flannel 到 /opt/cni/bin/ cp flannel /opt/cni/bin/ 1node1节点 2node2节点 成功 7.flannel如何分配子网 1配置--pod-network-cidr kubeadm init \ --apiserver-advertise-address0.0.0.0 \ --image-repository registry.aliyuncs.com/google_containers \ --kubernetes-versionv1.15.1 \ --service-cidr10.1.0.0/16 \ --pod-network-cidr10.244.0.0/16 -------------------------------------------------------------------------------------------- 初始化集群需使用kubeadm init命令可以指定具体参数初始化也可以指定配置文件初始化。 可选参数 --apiserver-advertise-addressapiserver通告给其他组件的IP地址一般应该为Master节点的用于集群内部通信的IP地址0.0.0.0表示节点上所有可用地址 --apiserver-bind-portapiserver的监听端口默认是6443 --cert-dir通讯的ssl证书文件默认/etc/kubernetes/pki --control-plane-endpoint控制台平面的共享终端可以是负载均衡的ip地址或者dns域名高可用集群时需要添加 --image-repository拉取镜像的镜像仓库默认是k8s.gcr.io --kubernetes-version指定kubernetes版本 --pod-network-cidrpod资源的网段需与pod网络插件的值设置一致。通常Flannel网络插件的默认为10.244.0.0/16Calico插件的默认值为192.168.0.0/16 2更改kube-proxy配置 更改 kubectl edit configmap kube-proxy -n kube-system 找到如下部分的内容 minSyncPeriod: 0sscheduler: syncPeriod: 30skind: KubeProxyConfigurationmetricsBindAddress: 127.0.0.1:10249mode: ipvs # 加上这个nodePortAddresses: null 其中mode原来是空默认为iptables模式改为ipvs scheduler默认是空默认负载均衡算法为轮询 3查看 cd /run/flannel/vim subnet.env master节点 node1节点 node2节点 8.其他机器无法登陆Harbor 1报错 2原因分析 配置文件错误 3解决方法 检查docker的daemon.json是否配置了insecure-registries。配置好后需要使用systemctl reload docker重启docker服务。 修改前 少一个逗号 修改后 使用docker info查看配置 修改前 修改后 成功 9.pod删除不了 (1) 报错 pod镜像拉取失败一直删除不了 2原因分析 命令缺少pod # 加pod kubectl delete pod nginx-deployment-6959f4b694-nds9nkubectl delete pod nginx-deployment-6959f4b694-qmpd6 3解决 查看rs和deployment以及pod kubectl get pods -o widekubectl get deployment删除deployment kubectl delete deployment nginx-deployment 再次查看deployment 再次查看pod发现已成功删除 四、总结 K8S通过kubeadm安装出来以后都是以Pod方式存在即底层是以容器方式运行所以kubelet必须设置开机自启。 使用Systemd管理的Cgroup来进行资源控制与管理因为相对Cgroupfs而言Systemd限制CPU、内存等资源更加简单和成熟稳定。
http://www.pierceye.com/news/186824/

相关文章:

  • 织梦搭建商城网站高端网站建设深圳
  • 做网站排名优化的公司无需下载直接登录qq手机版
  • 网站不备案不能访问吗wordpress主题开发404页面
  • 工作总结个人总结自动app优化下载
  • 网站开发推荐书籍比较大的外贸网站
  • 上饶建设网站郑州网
  • 做淘宝客网站一定要备案吗没有网站域名备案
  • 用QQ群做网站排名慈溪网站制作哪家最好
  • 兴宁市网站建设手工艺品网站建设策划书
  • flash做网站导航网站品牌建设流程
  • 公司建设网站属于什么费用网站打模块
  • 网站建设应注意的问题网站备案验证码错误
  • 网站核验点网站自己怎么做的
  • 购物网站建设平台canvas可画网页版
  • 企业信息平台系统网站推广优化建设
  • 免费网站模板制作自助建站上建的网站免费吗
  • 深圳市网站建设外包公司门户网站代码结构
  • 昆明做网站建设找谁最新版在线 网
  • 东昌府聊城网站建设网站广告做的好的企业案例分析
  • asp三层架构做网站网站开发前端基础
  • 医院网站建设方案策划书把网站做成app的软件下载
  • 网站建设实践报告3000字wordpress消息提示插件
  • 网站制作的评价标准做网站后台需要什么
  • 学院网站建设服务宗旨实惠的网站建设产品
  • 网站改名 备案影视制作
  • 网站开发亿码酷技术网站建设选谋者
  • 智能家居网站模板怎样做网站标题优化
  • 深圳制作网站制作公司哪家好最简洁 wordpress主题
  • 重庆忠县网站建设公司推荐国内公关公司
  • 给彩票网站做代理违法吗wordpress文章与页面关联