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

网站建设的用处江门做网站的公司

网站建设的用处,江门做网站的公司,404错误页面放在网站的哪里,外贸企业 访问国外网站目录 一.二进制部署k8s 常见的K8S安装部署方式#xff1a; k8s部署 二进制与高可用的区别 二.部署k8s 初始化操作#xff1a; 每台node安装docker#xff1a; 在 master01 节点上操作; 准备cfssl证书生成工具:#xff1a; 执行脚本文件#xff1a; 拉入etcd压缩包… 目录 一.二进制部署k8s 常见的K8S安装部署方式 k8s部署 二进制与高可用的区别 二.部署k8s 初始化操作 每台node安装docker 在 master01 节点上操作; 准备cfssl证书生成工具: 执行脚本文件 拉入etcd压缩包 创建用于存放 etcd 配置文件命令文件证书的目录 执行etcd.sh脚本 将目录所有文件复制到node节点上 修改node节点的etcd文件 启动etcd服务 检查etcd群集状态 查看etcd集群成员列表 ​编辑安装 Master 组件准备生成CA证书 创建用于生成CA证书、相关组件的证书和私钥的目录 创建kubernetes工作目录 复制CA证书、apiserver相关证书和私钥到 kubernetes工作目录的 ssl 子目录中 上传解压 kubernetes 压缩包 复制master组件的关键命令文件到 kubernetes工作目录的 bin 子目录中 解压master.zip 启动 scheduler 服务 启动 controller-manager 服务 生成kubectl连接集群的kubeconfig文件: 过kubectl工具查看当前集群组件状态 部署 Worker Node 组件 创建kubernetes工作目录 在 master01 节点上操作 上传kubeconfig.sh文件到/opt/k8s/kubeconfig目录中: 授权执行脚本 RBAC授权使用户 kubelet-bootstrap 能够有权限发起 CSR 请求证书 master节点启动 kubelet 服务 通过 CSR 请求 在 node01 节点上操作 启动proxy服务 一.二进制部署k8s 常见的K8S安装部署方式 Minikube是一个工具可以在本地快速运行一个单节点微型K8S仅用于学习、预览K8S的一些特性使用。 部署地址https://kubernetes.io/docs/setup/minikube Kubeadm也是一个工具提供kubeadm init和kubeadm join用于快速部署K8S集群相对简单。 https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm/ 二进制安装部署 生产首选从官方下载发行版的二进制包手动部署每个组件和自签TLS证书组成K8S集群新手推荐。 https://github.com/kubernetes/kubernetes/releases Kubeadm降低部署门槛但屏蔽了很多细节遇到问题很难排查。如果想更容易可控推荐使用二进制包部署Kubernetes集群虽然手动部署麻烦点期间可以学习很多工作原理也利于后期维护。 k8s部署 二进制与高可用的区别 二进制部署 部署难管理方便集群伸展性能好 更稳定集群规模到达一定的规模(几百个节点、上万个Pod)二进制稳定性是要高于kubeadm部署 遇到故障宿主机起来了进程也会起来。 kubeadm部署 部署简单管理难 是以一种容器管理容器的方式允许的组件及服务故障恢复时间比二进制慢 遇到故障启动宿主机再启动进程最后去启动容器集群才能恢复速度比二进制慢 二.部署k8s k8s master节点192.168.233.1020 k8s node节点192.168.233.3040 容器引擎为docker etcd集群192.168.233.10,30,40 负载均衡nginxkeepalive01master 192.168.233.50 负载均衡nginxkeepalive02backup192.168.233.60 初始化操作 关闭防火墙 systemctl stop firewalld systemctl disable firewalld 关闭selinux setenforce 0 sed -i s/enforcing/disabled/ /etc/selinux/config 关闭swap swapoff -a sed -ri s/.*swap.*/#/ /etc/fstab  根据规划设置主机名 hostnamectl set-hostname master01 hostnamectl set-hostname node01 hostnamectl set-hostname node02 在master添加hosts cat /etc/hosts EOF 192.168.233.10 master01 192.168.233.30 node01 192.168.233.40 node02 EOF 调整内核参数 cat /etc/sysctl.d/k8s.conf EOF #开启网桥模式可将网桥的流量传递给iptables链 net.bridge.bridge-nf-call-ip6tables 1 net.bridge.bridge-nf-call-iptables 1 #关闭ipv6协议 net.ipv6.conf.all.disable_ipv61 net.ipv4.ip_forward1 EOF sysctl --system 时间同步 yum install ntpdate -y ntpdate time.windows.com 每台node安装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  切换到docker目录下添加文件 {registry-mirrors: [https://6ijb8ubo.mirror.aliyuncs.com],exec-opts: [native.cgroupdriversystemd],log-driver:json-file,log-opts:{max-size:500m,max-file:3} } . 安装设置为开机自动启动 yum install -y docker-ce docker-ce-cli containerd.io systemctl start docker.service systemctl enable docker.service  在 master01 节点上操作; 准备cfssl证书生成工具: wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 -O /usr/local/bin/cfssl wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64 -O /usr/local/bin/cfssljson wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64 -O /usr/local/bin/cfssl-certinfo chmod x /usr/local/bin/* 创建工作目录 添加脚本文件 #!/bin/bash #配置证书生成策略让 CA 软件知道颁发有什么功能的证书生成用来签发其他组件证书的根证书 cat ca-config.json EOF {signing: {default: {expiry: 87600h},profiles: {usages: [signing,key encipherment,server auth,client auth]}}} } EOF#ca-config.json可以定义多个 profiles分别指定不同的过期时间、使用场景等参数 #后续在签名证书时会使用某个 profile此实例只有一个 www 模板。 #expiry指定了证书的有效期87600h 为10年如果用默认值一年的话证书到期后集群会立即宕掉 #signing表示该证书可用于签名其它证书生成的 ca.pem 证书中 CATRUE #key encipherment表示使用非对称密钥加密如 RSA 加密 #server auth表示client可以用该 CA 对 server 提供的证书进行验证 #client auth表示server可以用该 CA 对 client 提供的证书进行验证 #注意标点符号最后一个字段一般是没有逗号的。#----------------------- #生成CA证书和私钥根证书和私钥 cat ca-csr.json EOF {CN: etcd,key: {algo: rsa,size: 2048{C: CN,L: Beijing,ST: Beijing}] } EOF#CNCommon Name浏览器使用该字段验证网站或机构是否合法一般写的是域名 #key指定了加密算法一般使用rsasize2048 #CCountry国家 #STState州省 #LLocality地区,城市 #O: Organization Name组织名称公司名称 #OU: Organization Unit Name组织单位名称公司部门cfssl gencert -initca ca-csr.json | cfssljson -bare ca#生成的文件 #ca-key.pem根证书私钥 #ca.pem根证书 #ca.csr根证书签发请求文件#注意CSRJSON 文件用的是相对路径所以 cfssl 的时候需要 csr 文件的路径下执行也可以指定为绝对路径。 #cfssljson 将 cfssl 生成的证书json格式变为文件承载式证书-bare 用于命名生成的证书文件。 #----------------------- {CN: etcd,hosts: [192.168.233.10,192.168.233.30,192.168.233.40],key: {algo: rsa,size: 2048},names: [{C: CN,L: BeiJing,ST: BeiJing}] } EOF#hosts将所有 etcd 集群节点添加到 host 列表需要指定所有 etcd 集群的节点 ip 或主机名不能使用网段新增 etcd 服务器需要重新签发证书。cfssl gencert -caca.pem -ca-keyca-key.pem -configca-config.json -profilewww server-csr.json | cfssljson -bare server#生成的文件 #server.csr服务器的证书请求文件 #server-key.pem服务器的私钥 #server.pem服务器的数字签名证书#-config引用证书生成策略文件 ca-config.json #-profile指定证书生成策略文件中的的使用场景比如 ca-config.json 中的 www#!/bin/bash #example: ./etcd.sh etcd01 192.168.233.10 etcd02https://192.168.233.30:2380,etcd03https://192.168.233.40:2380#创建etcd配置文件/opt/etcd/cfg/etcd ETCD_NAME$1 ETCD_IP$2 ETCD_CLUSTER$3WORK_DIR/opt/etcd#[Clustering] ETCD_INITIAL_ADVERTISE_PEER_URLShttps://${ETCD_IP}:2380 ETCD_ADVERTISE_CLIENT_URLShttps://${ETCD_IP}:2379 ETCD_INITIAL_CLUSTERetcd01https://${ETCD_IP}:2380,${ETCD_CLUSTER} ETCD_INITIAL_CLUSTER_TOKENetcd-cluster ETCD_INITIAL_CLUSTER_STATEnew EOF#Member:成员配置 #ETCD_NAME节点名称集群中唯一。成员名字集群中必须具备唯一性如etcd01#Clustering集群配置 #ETCD_INITIAL_CLUSTER_TOKEN集群Token。用于区分不同集群。本地如有多个集群要设为不同 #ETCD_INITIAL_CLUSTER_STATE加入集群的当前状态new是新集群existing表示加入已有集群。#创建etcd.service服务管理文件 cat /usr/lib/systemd/system/etcd.service EOF [Unit] DescriptionEtcd Server Afternetwork.target Afternetwork-online.target Wantsnetwork-online.target[Service] Typenotify EnvironmentFile${WORK_DIR}/cfg/etcd ExecStart${WORK_DIR}/bin/etcd \ --cert-file${WORK_DIR}/ssl/server.pem \ --key-file${WORK_DIR}/ssl/server-key.pem \ --trusted-ca-file${WORK_DIR}/ssl/ca.pem \ --peer-cert-file${WORK_DIR}/ssl/server.pem \ --peer-key-file${WORK_DIR}/ssl/server-key.pem \ --peer-trusted-ca-file${WORK_DIR}/ssl/ca.pem \ --loggerzap \ --enable-v2 Restarton-failure LimitNOFILE65536[Install] WantedBymulti-user.target EOF#--enable-v2开启 etcd v2 API 接口。当前 flannel 版本不支持 etcd v3 通信 #--loggerzap使用 zap 日志框架。zap.Logger 是go语言中相对日志库中性能最高的 #--peer开头的配置项用于指定集群内部TLS相关证书peer 证书这里全部都使用同一套证书认证 #不带--peer开头的的参数是指定 etcd 服务器TLS相关证书server 证书这里全部都使用同一套证书认证systemctl daemon-reload systemctl enable etcd systemctl restart etcd 执行脚本文件 ./etcd-cert.sh 移动文件 mkdir etcd-cert mv ca* server* etcd-cert 拉入etcd压缩包 解压 tar zxvf etcd-v3.4.26-linux-amd64.tar.gz 创建用于存放 etcd 配置文件命令文件证书的目录 mkdir -p /opt/etcd/{cfg,bin,ssl} .切换到k8s中将命令移动到bin下 mv etcd etcdctl /opt/etcd/bin/ 复制etcd-cert下的.pem结尾文件到ssl目录下 cp /opt/k8s/etcd-cert/*.pem /opt/etcd/ssl/ 执行etcd.sh脚本 ./etcd.sh etcd01 192.168.233.10 etcd02https://192.168.233.30:2380,etcd03https://192.168.233.40:2380 查看端口 将目录所有文件复制到node节点上 scp -r /opt/etcd/ root192.168.233.30:/opt/ scp -r /opt/etcd/ root192.168.233.40:/opt/ scp /usr/lib/systemd/system/etcd.service root192.168.233.30:/usr/lib/systemd/system/ scp /usr/lib/systemd/system/etcd.service root192.168.233.40:/usr/lib/systemd/system/ 修改node节点的etcd文件 vim /opt/etcd/cfg/etcd 启动etcd服务 systemctl start etcd systemctl enable etcd systemctl status etcd 检查etcd群集状态 ETCDCTL_API3 /opt/etcd/bin/etcdctl --cacert/opt/etcd/ssl/ca.pem --cert/opt/etcd/ssl/server.pem --key/opt/etcd/ssl/server-key.pem --endpointshttps://192.168.233.10:2379,https://192.168.233.30:2379,https://192.168.233.40:2379 endpoint health --write-outtable 查看etcd集群成员列表 ETCDCTL_API3 /opt/etcd/bin/etcdctl --cacert/opt/etcd/ssl/ca.pem --cert/opt/etcd/ssl/server.pem --key/opt/etcd/ssl/server-key.pem --endpointshttps://192.168.233.10:2379,https://192.168.233.30:2379,https://192.168.233.40:2379 --write-outtable member list 安装 Master 组件准备生成CA证书 #!/bin/bash #配置证书生成策略让 CA 软件知道颁发有什么功能的证书生成用来签发其他组件证书的根证书 cat ca-config.json EOF {signing: {default: {expiry: 87600h},profiles: {kubernetes: {expiry: 87600h,usages: [signing,key encipherment,server auth,client auth]}}} } EOF#生成CA证书和私钥根证书和私钥 cat ca-csr.json EOF {CN: kubernetes,key: {algo: rsa,size: 2048},names: [{C: CN,L: Beijing,ST: Beijing,O: k8s,OU: System}] } EOF #!/bin/bash #配置证书生成策略让 CA 软件知道颁发有什么功能的证书生成用来签发其他组件证书的根证书 cat ca-config.json EOF {signing: {default: {expiry: 87600h},profiles: {kubernetes: {expiry: 87600h,usages: [signing,key encipherment,server auth,client auth]}}} } EOF#生成CA证书和私钥根证书和私钥 cat ca-csr.json EOF {CN: kubernetes,key: {algo: rsa,size: 2048},names: [{C: CN,L: Beijing,ST: Beijing,O: k8s,OU: System}] } EOFcfssl gencert -initca ca-csr.json | cfssljson -bare ca -#----------------------- #生成 apiserver 的证书和私钥apiserver和其它k8s组件通信使用 #hosts中将所有可能作为 apiserver 的 ip 添加进去后面 keepalived 使用的 VIP 也要加入 cat apiserver-csr.json EOF {CN: kubernetes,hosts: [10.0.0.1,127.0.0.1,192.168.233.10,192.168.233.20, 192.168.233.100,192.168.233.50,192.168.233.60,kubernetes,kubernetes.default,kubernetes.default.svc,kubernetes.default.svc.cluster,kubernetes.default.svc.cluster.local],key: {algo: rsa,size: 2048},names: [{C: CN,L: BeiJing,ST: BeiJing,O: k8s,OU: System}] } EOF#----------------------- #生成 kubectl 连接集群的证书和私钥kubectl 和 apiserver 通信使用 cat admin-csr.json EOF {CN: admin,hosts: [],key: {algo: rsa,size: 2048},names: [{C: CN,L: BeiJing,ST: BeiJing,O: system:masters,OU: System}] } EOF#----------------------- #生成 kube-proxy 的证书和私钥kube-proxy 和 apiserver 通信使用 cat kube-proxy-csr.json EOF {CN: system:kube-proxy,hosts: [],key: {algo: rsa,size: 2048},names: [{C: CN,L: BeiJing,ST: BeiJing,O: k8s,OU: System}] } EOFcfssl gencert -caca.pem -ca-keyca-key.pem -configca-config.json -profilekubernetes kube-proxy-csr.json | cfssljson -bare kube-proxy 创建用于生成CA证书、相关组件的证书和私钥的目录 移动脚本文件到目录中; 执行文件 创建kubernetes工作目录 mkdir -p /opt/kubernetes/{bin,cfg,ssl,logs} 复制CA证书、apiserver相关证书和私钥到 kubernetes工作目录的 ssl 子目录中 cp ca*pem apiserver*pem /opt/kubernetes/ssl/ 上传解压 kubernetes 压缩包 tar xf kubernetes-server-linux-amd64.tar.gz 复制master组件的关键命令文件到 kubernetes工作目录的 bin 子目录中 cp kube-apiserver kubectl kube-controller-manager kube-scheduler /opt/kubernetes/bin/ ln -s /opt/kubernetes/bin/* /usr/local/bin/ 获取随机数前16个字节内容以十六进制格式输出并删除其中空格 head -c 16 /dev/urandom | od -An -t x | tr -d 生成 token.csv 文件按照 Token序列号,用户名,UID,用户组 的格式生成 #!/bin/bash #获取随机数前16个字节内容以十六进制格式输出并删除其中空格 BOOTSTRAP_TOKEN$(head -c 16 /dev/urandom | od -An -t x | tr -d ) #生成 token.csv 文件按照 Token序列号,用户名,UID,用户组 的格式生成 cat /opt/kubernetes/cfg/token.csv EOF ${BOOTSTRAP_TOKEN},kubelet-bootstrap,10001,system:kubelet-bootstrap EOF 解压master.zip 授权 二进制文件、token、证书都准备好后开启 apiserver 服务 ./apiserver.sh 192.168.233.10 https://192.168.233.10:2379,https://192.168.233.30:2379,https://192.168.233.40:2379 安全端口6443用于接收HTTPS请求用于基于Token文件或客户端证书等认证 netstat -natp | grep 6443 启动 scheduler 服务 #!/bin/bash ##创建 kube-scheduler 启动参数配置文件 MASTER_ADDRESS$1cat /opt/kubernetes/cfg/kube-scheduler EOF KUBE_SCHEDULER_OPTS--logtostderrfalse \\ --v2 \\ --log-dir/opt/kubernetes/logs \\ --leader-electtrue \\ --kubeconfig/opt/kubernetes/cfg/kube-scheduler.kubeconfig \\ --bind-address$MASTER_ADDRESS EOF#-?kubeconfig连接 apiserver 用的配置文件用于识别 k8s 集群 #--leader-electtrue当该组件启动多个时自动启动 leader 选举 #k8s 中 Controller-Manager 和 Scheduler 的选主逻辑k8s 中的 etcd 是整个集群所有状态信息的存储涉及数据的读写和多个 etcd 之间数据的同步对数据的一致性要求严格所以使用较复杂的 raft 算法来选择用于提交数据的主节点。而 apiserver 作为集群入口本身是无状态的 web 服务器多个 apiserver 服务之间直接负载 请求并不需要做选主。Controller-Manager 和 Scheduler 作为任务类型的组件比如 controller-manager 内置的 k8s 各种资源对象的控制器实时的 watch apiserver 获取对象最新的变化事件做期望状态和实际状态调整scheduler watch 未绑定节点的 pod 做节点选择 显然多个这些任务同时工作是完全没有必要的所以 controller-manager 和 scheduler 也是需要选主的但是选主逻辑和 etcd 不一样的这里只需要保证从多个 controller-manager 和 scheduler 之间选出一个 leader 进入工作状态即可而无需考虑它们之间的数据一致和同步。##生成kube-scheduler证书 #创建证书请求文件 cat kube-scheduler-csr.json EOF {CN: system:kube-scheduler,hosts: [],key: {algo: rsa,size: 2048},names: [{C: CN,L: BeiJing,ST: BeiJing,O: system:masters,OU: System}] } EOF#生成证书和私钥#生成kubeconfig配置文件 KUBE_CONFIG/opt/kubernetes/cfg/kube-scheduler.kubeconfig KUBE_APISERVERhttps://192.168.233.10:6443#配置kubernetes集群参数 kubectl config set-cluster kubernetes \--certificate-authority/opt/kubernetes/ssl/ca.pem \--embed-certstrue \--server${KUBE_APISERVER} \--kubeconfig${KUBE_CONFIG} #配置客户端认证参数 kubectl config set-credentials kube-scheduler \--client-certificate./kube-scheduler.pem \--client-key./kube-scheduler-key.pem \--embed-certstrue \--kubeconfig${KUBE_CONFIG} #设置上下文参数 kubectl config set-context default \--clusterkubernetes \--userkube-scheduler \--kubeconfig${KUBE_CONFIG} #设置默认上下文 kubectl config use-context default --kubeconfig${KUBE_CONFIG}##创建 kube-scheduler.service 服务管理文件 cat /usr/lib/systemd/system/kube-scheduler.service EOF [Unit] DescriptionKubernetes Scheduler Documentationhttps://github.com/kubernetes/kubernetes[Service] EnvironmentFile-/opt/kubernetes/cfg/kube-scheduler ExecStart/opt/kubernetes/bin/kube-scheduler \$KUBE_SCHEDULER_OPTS Restarton-failure[Install] WantedBymulti-user.target EOFsystemctl daemon-reload systemctl enable kube-scheduler systemctl restart kube-scheduler 启动脚本 启动 controller-manager 服务 #!/bin/bash ##创建 kube-controller-manager 启动参数配置文件 MASTER_ADDRESS$1cat /opt/kubernetes/cfg/kube-controller-manager EOF KUBE_CONTROLLER_MANAGER_OPTS--logtostderrfalse \\ --v2 \\ --log-dir/opt/kubernetes/logs \\ --leader-electtrue \\ --kubeconfig/opt/kubernetes/cfg/kube-controller-manager.kubeconfig \\ --bind-address$MASTER_ADDRESS \\ --allocate-node-cidrstrue \\ --cluster-cidr10.244.0.0/16 \\ --service-cluster-ip-range10.0.0.0/24 \\ --cluster-signing-cert-file/opt/kubernetes/ssl/ca.pem \\ --cluster-signing-key-file/opt/kubernetes/ssl/ca-key.pem \\ --root-ca-file/opt/kubernetes/ssl/ca.pem \\ --service-account-private-key-file/opt/kubernetes/ssl/ca-key.pem \\ --cluster-signing-duration87600h0m0s EOF#––leader-elect当该组件启动多个时自动选举HA #-–kubeconfig连接 apiserver 用的配置文件用于识别 k8s 集群##生成kube-controller-manager证书 #创建证书请求文件 cat kube-controller-manager-csr.json EOF {CN: system:kube-controller-manager,hosts: [],key: {algo: rsa,size: 2048},names: [{C: CN,L: BeiJing, ST: BeiJing,O: system:masters,OU: System}] } EOF#生成证书和私钥#生成kubeconfig配置文件 KUBE_CONFIG/opt/kubernetes/cfg/kube-controller-manager.kubeconfig KUBE_APISERVERhttps://192.168.233.10:6443#配置kubernetes集群参数 kubectl config set-cluster kubernetes \--certificate-authority/opt/kubernetes/ssl/ca.pem \--embed-certstrue \--server${KUBE_APISERVER} \--kubeconfig${KUBE_CONFIG} #配置客户端认证参数 kubectl config set-credentials kube-controller-manager \--client-certificate./kube-controller-manager.pem \--client-key./kube-controller-manager-key.pem \--embed-certstrue \--kubeconfig${KUBE_CONFIG} #设置上下文参数 kubectl config set-context default \--clusterkubernetes \--userkube-controller-manager \--kubeconfig${KUBE_CONFIG} #设置默认上下文 kubectl config use-context default --kubeconfig${KUBE_CONFIG}##创建 kube-controller-manager.service 服务管理文件 cat /usr/lib/systemd/system/kube-controller-manager.service EOF [Unit] DescriptionKubernetes Controller Manager Documentationhttps://github.com/kubernetes/kubernetes[Service] EnvironmentFile-/opt/kubernetes/cfg/kube-controller-manager ExecStart/opt/kubernetes/bin/kube-controller-manager \$KUBE_CONTROLLER_MANAGER_OPTS Restarton-failure[Install] WantedBymulti-user.target EOFsystemctl daemon-reload systemctl enable kube-controller-manager systemctl restart kube-controller-manager执行脚本 ./controller-manager.sh 192.168.233.10 ​​​​​​​ 生成kubectl连接集群的kubeconfig文件: #!/bin/bash mkdir /root/.kube KUBE_CONFIG/root/.kube/config KUBE_APISERVERhttps://192.168.233.10:6443#切换到k8s证书目录操作 cd /opt/k8s/k8s-cert/--certificate-authority/opt/kubernetes/ssl/ca.pem \--embed-certstrue \--client-certificate./admin.pem \--client-key./admin-key.pem \ kubectl config set-context default \--kubeconfig${KUBE_CONFIG} #设置默认环境上下文 kubectl config use-context default --kubeconfig${KUBE_CONFIG} #生成的 kubeconfig 被保存到 /root/.kube/config 文件######################################################### #集群参数 #本段设置了所需要访问的集群的信息。使用set-cluster设置了需要访问的集群如上为kubernetes这只是个名称实际为--server指向的apiserver--certificate-authority设置了该集群的公钥--embed-certs为true表示 将--certificate-authority证书写入到kubeconfig中--server则表示该集群的kube-apiserver地址#用户参数 #本段主要设置用户的相关信息主要是用户证书。如上的用户名为admin证书为/opt/kubernetes/ssl/admin.pem私钥为/opt/kubernetes/ssl/admin-key.pem。注意客户端的证书首先要经过集群CA的签署否则不会被集群 认可。此处使用的是ca认证方式也可以使用token认证如kubelet的 TLS Boostrap 机制下的 bootstrapping 使 用的就是token认证方式。上述kubectl使用的是ca认证不需要token字段#上下文参数 #集群参数和用户参数可以同时设置多对在上下文参数中将集群参数和用户参数关联起来。上面的上下文名称为default集群为kubenetes用户为admin表示使用admin的用户凭证来访问kubenetes集群的default命名空间也可以增加--namspace来指定访问的命名空间。#最后使用 kubectl config use-context default 来使用名为 default 的环境项来作为配置。 如果配置了多个环 境项可以通过切换不同的环境项名字来访问到不同的集群环境。 ######################################################### 执行脚本 查看文件 过kubectl工具查看当前集群组件状态 kubectl get cs 查看版本信息 kubectl version 绑定默认cluster-admin管理员集群角色授权kubectl访问集群 kubectl create clusterrolebinding cluster-system-anonymous --clusterrolecluster-admin --usersystem:anonymous 部署 Worker Node 组件 在所有 node 节点上操作30,40 创建kubernetes工作目录 mkdir -p /opt/kubernetes/{bin,cfg,ssl,logs} 上传 node.zip 到 /opt 目录中解压 node.zip 压缩包 #!/bin/bashNODE_ADDRESS$1 DNS_SERVER_IP${2:-10.0.0.2} cat /opt/kubernetes/cfg/kubelet EOF KUBELET_OPTS--logtostderrfalse \\ --v2 \\ --log-dir/opt/kubernetes/logs \\ --hostname-overridenode01 \\ --network-plugincni \\ --kubeconfig/opt/kubernetes/cfg/kubelet.kubeconfig \\ --bootstrap-kubeconfig/opt/kubernetes/cfg/bootstrap.kubeconfig \\ --config/opt/kubernetes/cfg/kubelet.config \\ --cert-dir/opt/kubernetes/ssl \\ --pod-infra-container-imageregistry.cn-hangzhou.aliyuncs.com/google_containers/pause-amd64:3.2 EOF#--network-plugin启用CNI #--bootstrap-kubeconfig指定连接 apiserver 的 bootstrap.kubeconfig 文件 #--config指定kubelet配置文件的路径启动kubelet时将从此文件加载其配置 #--cert-dir指定master颁发的kubelet证书生成目录#---------------------- cat /opt/kubernetes/cfg/kubelet.config EOF kind: KubeletConfiguration apiVersion: kubelet.config.k8s.io/v1beta1 address: ${NODE_ADDRESS} port: 10250 readOnlyPort: 10255 cgroupDriver: systemd clusterDNS: - ${DNS_SERVER_IP} clusterDomain: cluster.local failSwapOn: false authentication:anonymous:enabled: true EOF#PS当命令行参数与此配置文件kubelet.config有相同的值时就会覆盖配置文件中的该值。#---------------------- #创建 kubelet.service 服务管理文件 cat /usr/lib/systemd/system/kubelet.service EOF [Unit] DescriptionKubernetes Kubelet Afterdocker.service Requiresdocker.service[Service] EnvironmentFile/opt/kubernetes/cfg/kubelet ExecStart/opt/kubernetes/bin/kubelet \$KUBELET_OPTS Restarton-failure KillModeprocess[Install] WantedBymulti-user.target EOFsystemctl daemon-reload systemctl enable kubelet systemctl restart kubelet#!/bin/bashNODE_ADDRESS$1#创建 kube-proxy 启动参数配置文件 cat /opt/kubernetes/cfg/kube-proxy EOF KUBE_PROXY_OPTS--logtostderrfalse \\ --v2 \\ --log-dir/opt/kubernetes/logs \\ --hostname-override${NODE_ADDRESS} \\ --cluster-cidr10.244.0.0/16 \\ --proxy-modeipvs \\ --kubeconfig/opt/kubernetes/cfg/kube-proxy.kubeconfig EOF#--kubeconfig: 指定连接 apiserver 的 kubeconfig 文件 #rr: round-robin轮询。 #lc: least connection最小连接数。 #dh: destination hashing目的地址哈希。 #sh: source hashing ,原地址哈希。 #sed: shortest expected delay最短期望延时。 #nq: never queue 永不排队。#---------------------- #创建 kube-proxy.service 服务管理文件 cat /usr/lib/systemd/system/kube-proxy.service EOF [Unit] DescriptionKubernetes Proxy Afternetwork.target[Service] EnvironmentFile-/opt/kubernetes/cfg/kube-proxy ExecStart/opt/kubernetes/bin/kube-proxy \$KUBE_PROXY_OPTS Restarton-failure[Install] WantedBymulti-user.target EOFsystemctl daemon-reload systemctl enable kube-proxy systemctl restart kube-proxy#!/bin/bashNODE_ADDRESS$1 #创建 kubelet 启动参数配置文件 cat /opt/kubernetes/cfg/kubelet EOF KUBELET_OPTS--logtostderrfalse \\ --hostname-overridenode02 \\ --network-plugincni \\ --kubeconfig/opt/kubernetes/cfg/kubelet.kubeconfig \\ --bootstrap-kubeconfig/opt/kubernetes/cfg/bootstrap.kubeconfig \\ --config/opt/kubernetes/cfg/kubelet.config \\ --cert-dir/opt/kubernetes/ssl \\ --pod-infra-container-imageregistry.cn-hangzhou.aliyuncs.com/google_containers/pause-amd64:3.2 EOF#--network-plugin启用CNI #--bootstrap-kubeconfig指定连接 apiserver 的 bootstrap.kubeconfig 文件 #--config指定kubelet配置文件的路径启动kubelet时将从此文件加载其配置 #--cert-dir指定master颁发的kubelet证书生成目录#---------------------- cat /opt/kubernetes/cfg/kubelet.config EOF kind: KubeletConfiguration apiVersion: kubelet.config.k8s.io/v1beta1 address: ${NODE_ADDRESS} port: 10250 readOnlyPort: 10255 cgroupDriver: systemd clusterDNS: - ${DNS_SERVER_IP} clusterDomain: cluster.local failSwapOn: false authentication:anonymous:enabled: true EOF#PS当命令行参数与此配置文件kubelet.config有相同的值时就会覆盖配置文件中的该值。#---------------------- #创建 kubelet.service 服务管理文件 cat /usr/lib/systemd/system/kubelet.service EOF [Unit] DescriptionKubernetes Kubelet Afterdocker.service Requiresdocker.service[Service] EnvironmentFile/opt/kubernetes/cfg/kubelet ExecStart/opt/kubernetes/bin/kubelet \$KUBELET_OPTS Restarton-failure KillModeprocess[Install] WantedBymulti-user.target EOFsystemctl daemon-reload systemctl enable kubelet systemctl restart kubelet#!/bin/bashNODE_ADDRESS$1#创建 kube-proxy 启动参数配置文件 cat /opt/kubernetes/cfg/kube-proxy EOF KUBE_PROXY_OPTS--logtostderrfalse \\ --v2 \\ --log-dir/opt/kubernetes/logs \\ --hostname-override${NODE_ADDRESS} \\ --cluster-cidr10.244.0.0/16 \\ --proxy-modeipvs \\ --kubeconfig/opt/kubernetes/cfg/kube-proxy.kubeconfig EOF#--kubeconfig: 指定连接 apiserver 的 kubeconfig 文件 #rr: round-robin轮询。 #lc: least connection最小连接数。 #dh: destination hashing目的地址哈希。 #sh: source hashing ,原地址哈希。 #sed: shortest expected delay最短期望延时。 #nq: never queue 永不排队。#---------------------- #创建 kube-proxy.service 服务管理文件 cat /usr/lib/systemd/system/kube-proxy.service EOF [Unit] DescriptionKubernetes Proxy Afternetwork.target[Service] EnvironmentFile-/opt/kubernetes/cfg/kube-proxy ExecStart/opt/kubernetes/bin/kube-proxy \$KUBE_PROXY_OPTS Restarton-failure[Install] WantedBymulti-user.target EOFsystemctl daemon-reload systemctl enable kube-proxy systemctl restart kube-proxy授权 在 master01 节点上操作 把 kubelet、kube-proxy 拷贝到 node 节点; cd /opt/k8s/kubernetes/server/bin scp kubelet kube-proxy root192.168.233.30:/opt/kubernetes/bin/ scp kubelet kube-proxy root192.168.233.40:/opt/kubernetes/bin/ 上传kubeconfig.sh文件到/opt/k8s/kubeconfig目录中: #!/bin/bash #example: kubeconfig 192.168.233.10 /opt/k8s/k8s-cert/ #创建bootstrap.kubeconfig文件BOOTSTRAP_TOKEN$(awk -F , {print $1} /opt/kubernetes/cfg/token.csv) APISERVER$1 SSL_DIR$2export KUBE_APISERVERhttps://$APISERVER:6443# 设置集群参数 kubectl config set-cluster kubernetes \--certificate-authority$SSL_DIR/ca.pem \--embed-certstrue \--server${KUBE_APISERVER} \--kubeconfigbootstrap.kubeconfig #--embed-certstrue表示将ca.pem证书写入到生成的bootstrap.kubeconfig文件中# 设置客户端认证参数kubelet 使用 bootstrap token 认证 kubectl config set-credentials kubelet-bootstrap \--token${BOOTSTRAP_TOKEN} \--kubeconfigbootstrap.kubeconfig# 设置上下文参数 kubectl config set-context default \--clusterkubernetes \--userkubelet-bootstrap \--kubeconfigbootstrap.kubeconfig# 使用上下文参数生成 bootstrap.kubeconfig 文件 kubectl config use-context default --kubeconfigbootstrap.kubeconfig#----------------------#创建kube-proxy.kubeconfig文件 # 设置集群参数 kubectl config set-cluster kubernetes \--certificate-authority$SSL_DIR/ca.pem \--embed-certstrue \--server${KUBE_APISERVER} \--kubeconfigkube-proxy.kubeconfig# 设置客户端认证参数kube-proxy 使用 TLS 证书认证 kubectl config set-credentials kube-proxy \--client-certificate$SSL_DIR/kube-proxy.pem \--client-key$SSL_DIR/kube-proxy-key.pem \--embed-certstrue \--kubeconfigkube-proxy.kubeconfig# 设置上下文参数 kubectl config set-context default \--clusterkubernetes \--userkube-proxy \--kubeconfigkube-proxy.kubeconfig# 使用上下文参数生成 kube-proxy.kubeconfig 文件 kubectl config use-context default --kubeconfigkube-proxy.kubeconfig授权执行脚本 chmod x kubeconfig.sh ./kubeconfig.sh 192.168.233.10 /opt/k8s/k8s-cert/ 把配置文件 bootstrap.kubeconfig、kube-proxy.kubeconfig 拷贝到 node 节点 scp bootstrap.kubeconfig kube-proxy.kubeconfig root192.168.233.30:/opt/kubernetes/cfg/ scp bootstrap.kubeconfig kube-proxy.kubeconfig root192.168.233.40:/opt/kubernetes/cfg/ 查看一下 RBAC授权使用户 kubelet-bootstrap 能够有权限发起 CSR 请求证书 kubectl create clusterrolebinding kubelet-bootstrap --clusterrolesystem:node-bootstrapper --userkubelet-bootstrap master节点启动 kubelet 服务 在 master01 节点上操作通过 CSR 请求 通过 CSR 请求 kubectl certificate approve node-csr-vH5p3H5QliAUh9WjCnwXPDb84pFhcj-FrHiTIRDeeU8 Approved,Issued 表示已授权 CSR 请求并签发证书 查看节点由于网络插件还没有部署节点会没有准备就绪 NotReady kubectl get node 在 node01 节点上操作 加载 ip_vs 模块 ls /usr/lib/modules/$(uname -r)/kernel/net/netfilter/ipvs 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 启动proxy服务 ./proxy.sh 192.168.233.30 master节点 node02上启动kubelet master节点通过 CSR 请求 node02上启动proxy
文章转载自:
http://www.morning.znpyw.cn.gov.cn.znpyw.cn
http://www.morning.ayftwl.cn.gov.cn.ayftwl.cn
http://www.morning.rwlnk.cn.gov.cn.rwlnk.cn
http://www.morning.wpsfc.cn.gov.cn.wpsfc.cn
http://www.morning.mkydt.cn.gov.cn.mkydt.cn
http://www.morning.rnnwd.cn.gov.cn.rnnwd.cn
http://www.morning.fwdln.cn.gov.cn.fwdln.cn
http://www.morning.ffbl.cn.gov.cn.ffbl.cn
http://www.morning.zhffz.cn.gov.cn.zhffz.cn
http://www.morning.hxfrd.cn.gov.cn.hxfrd.cn
http://www.morning.nnqrb.cn.gov.cn.nnqrb.cn
http://www.morning.ndhxn.cn.gov.cn.ndhxn.cn
http://www.morning.qqklk.cn.gov.cn.qqklk.cn
http://www.morning.wsyq.cn.gov.cn.wsyq.cn
http://www.morning.mcfjq.cn.gov.cn.mcfjq.cn
http://www.morning.jqmmf.cn.gov.cn.jqmmf.cn
http://www.morning.fy974.cn.gov.cn.fy974.cn
http://www.morning.hgsmz.cn.gov.cn.hgsmz.cn
http://www.morning.gwwky.cn.gov.cn.gwwky.cn
http://www.morning.xjpnq.cn.gov.cn.xjpnq.cn
http://www.morning.rkqqf.cn.gov.cn.rkqqf.cn
http://www.morning.dzyxr.cn.gov.cn.dzyxr.cn
http://www.morning.lltdf.cn.gov.cn.lltdf.cn
http://www.morning.mhlkc.cn.gov.cn.mhlkc.cn
http://www.morning.stpkz.cn.gov.cn.stpkz.cn
http://www.morning.xclgf.cn.gov.cn.xclgf.cn
http://www.morning.rqkck.cn.gov.cn.rqkck.cn
http://www.morning.xbdd.cn.gov.cn.xbdd.cn
http://www.morning.blqmn.cn.gov.cn.blqmn.cn
http://www.morning.sfdsn.cn.gov.cn.sfdsn.cn
http://www.morning.csnmd.cn.gov.cn.csnmd.cn
http://www.morning.rckmz.cn.gov.cn.rckmz.cn
http://www.morning.rghkg.cn.gov.cn.rghkg.cn
http://www.morning.ptqpd.cn.gov.cn.ptqpd.cn
http://www.morning.pkfpl.cn.gov.cn.pkfpl.cn
http://www.morning.jqjnl.cn.gov.cn.jqjnl.cn
http://www.morning.lqgtx.cn.gov.cn.lqgtx.cn
http://www.morning.rlbfp.cn.gov.cn.rlbfp.cn
http://www.morning.wwkft.cn.gov.cn.wwkft.cn
http://www.morning.tmsxn.cn.gov.cn.tmsxn.cn
http://www.morning.jwlmm.cn.gov.cn.jwlmm.cn
http://www.morning.mqbsm.cn.gov.cn.mqbsm.cn
http://www.morning.jfmjq.cn.gov.cn.jfmjq.cn
http://www.morning.stlgg.cn.gov.cn.stlgg.cn
http://www.morning.lcbgf.cn.gov.cn.lcbgf.cn
http://www.morning.glnfn.cn.gov.cn.glnfn.cn
http://www.morning.rnpt.cn.gov.cn.rnpt.cn
http://www.morning.tjwlp.cn.gov.cn.tjwlp.cn
http://www.morning.qbrs.cn.gov.cn.qbrs.cn
http://www.morning.clkjn.cn.gov.cn.clkjn.cn
http://www.morning.807yy.cn.gov.cn.807yy.cn
http://www.morning.bpmnz.cn.gov.cn.bpmnz.cn
http://www.morning.frpfk.cn.gov.cn.frpfk.cn
http://www.morning.xsgxp.cn.gov.cn.xsgxp.cn
http://www.morning.cbtn.cn.gov.cn.cbtn.cn
http://www.morning.rqqkc.cn.gov.cn.rqqkc.cn
http://www.morning.svtxeu.com.gov.cn.svtxeu.com
http://www.morning.jqkrt.cn.gov.cn.jqkrt.cn
http://www.morning.bwgrd.cn.gov.cn.bwgrd.cn
http://www.morning.mlnzx.cn.gov.cn.mlnzx.cn
http://www.morning.dtcsp.cn.gov.cn.dtcsp.cn
http://www.morning.ytmx.cn.gov.cn.ytmx.cn
http://www.morning.mkzdp.cn.gov.cn.mkzdp.cn
http://www.morning.pqkyx.cn.gov.cn.pqkyx.cn
http://www.morning.pmxw.cn.gov.cn.pmxw.cn
http://www.morning.bjsites.com.gov.cn.bjsites.com
http://www.morning.rlns.cn.gov.cn.rlns.cn
http://www.morning.lhytw.cn.gov.cn.lhytw.cn
http://www.morning.jlrym.cn.gov.cn.jlrym.cn
http://www.morning.gtbjf.cn.gov.cn.gtbjf.cn
http://www.morning.zqkms.cn.gov.cn.zqkms.cn
http://www.morning.bkslb.cn.gov.cn.bkslb.cn
http://www.morning.gmplp.cn.gov.cn.gmplp.cn
http://www.morning.xlwpz.cn.gov.cn.xlwpz.cn
http://www.morning.bnylg.cn.gov.cn.bnylg.cn
http://www.morning.ynryz.cn.gov.cn.ynryz.cn
http://www.morning.nypsz.cn.gov.cn.nypsz.cn
http://www.morning.zlfxp.cn.gov.cn.zlfxp.cn
http://www.morning.bnrnb.cn.gov.cn.bnrnb.cn
http://www.morning.xoaz.cn.gov.cn.xoaz.cn
http://www.tj-hxxt.cn/news/277482.html

相关文章:

  • 建设银行亚洲网站九江网站建设优化
  • 建设高流量网站网站没有备案
  • 烟台优化网站排名wordpress可以建什么站
  • 聊天室网站模板wordpress 短信登录密码错误
  • 网站建设设计图公司网站开发需求文档
  • 响应式酒店网站模板卖东西的小程序是怎么弄的
  • 技术支持 湘潭网站建设珠海培训网站建设
  • 做旅游宣传图的网站有哪些广东两学一做网站
  • 公章电子版在线制作网站中国设计师联盟官网
  • 中国优秀企业网站上海网站推广价格
  • 做一级域名网站多少钱西安包装设计公司
  • 网站获取访客手机号源码西安搬家公司价格明细一览表
  • 如何做收机微网站网站开发就业培训
  • html5的网站设计seo管理系统培训
  • 网站上的高清图怎么做手机网站制作视频教程
  • 投资网站模版下载购物网站开发公司
  • 网站平台淮南网站建设好的公司
  • 网站架构企业收费标准社区建设网站
  • 找人建设网站wordpress设置网站背景图片
  • 网站制作多久自学装修设计从哪里入手
  • 杭州建德网站建设网单怎么做
  • 定西网站建设公司排名照片关键词搜索点击软件
  • 高新网站建设哪家好网页logo设计图片
  • 培训网站开发需求说明书百度排名规则
  • 仿克米设计网站重庆建站公司费用
  • asp网站安装教程推广做网站电话
  • 域名解析平台网站建设扬州市广陵区城乡建设局网站
  • 如何免费建立公司网站seo教程seo入门讲解
  • 网站建设推介会发言稿百度竞价软件哪个好
  • 网站demo要几个人做台前网站建设价格