世界热头条丨K8s安装部署怎么操作?K8S集群安装部署及操作说明
K8S集群安装部署
(资料图片)
一、系统基本环境搭建1.关闭swap2.关闭SELINUX3.调整内核参数4.调整系统时区5.关闭系统不需要的服务 二、安装etcd1.创建证书文件2. 安装etcd2.1 node1上操作2.2 node2上操作2.3 node3上操作 备注说明 三、安装dockernode1节点node2节点node3节点 四、部署api-server(Master Node)1.创建apiserver自签证书2.下载安装包3.配置api-server配置文件4.创建token文件5.systemd 管理 apiserver6.启动并设置开机启动7.授权 kubelet-bootstrap 用户允许请求证书 五、部署kube-controller-manager(Master Node)1. 创建配置文件2. systemd 管理 controller-manager3. 启动并设置开机启动 六、部署 kube-scheduler(Master Node)1. 创建配置文件2. systemd 管理 kube-scheduler3. 启动并设置开机启动 七、查看集群状态八、部署 kubelet(Worker Node)1. 创建kubelet.conf配置文件2.配置kubelet-config.yml参数文件3.生成bootstrap.kubeconfig 配置文件4. systemd 管理 kubelet5. 启动并设置开机启动6.批准 kubelet 证书申请并加入集群 九、部署 kube-proxy1.创建kube-proxy.conf2.配置参数文件3.生成 kube-proxy.kubeconfig4.生成kubeconfig5. systemd 管理 kube-proxy6. 启动并设置开机启动 十、部署 CNI 网络(Master Node)1.授权 apiserver 访问 kubelet 十一、部署node3节点1. 拷贝已部署好的 Node 相关文件到新节点2. 删除 kubelet 证书和 kubeconfig 文件3. 修改主机名4. 启动并设置开机启动5. 在 Master 上批准新 Node kubelet 证书申请 十二、验证测试总结说明1.kubectl get node 不是Ready状态
一、系统基本环境搭建
角色IP组件
node1192.168.24.136kube-apiserver, kube-controller-manager, kube-scheduler, etcd
node2192.168.24.137kubelet,kube-proxy,docker etcd
node3192.168.24.138kubelet,kube-proxy,docker etcd
1.关闭swap
[root@node1 ~]# swapoff -a[root@node1 ~]# vim /etc/fstab
2.关闭SELINUX
[root@node1 ~]# setenforce 0 && sed -i "s/^SELINUX=. */SELINUX=disabled/" /etc/selinux/config
3.调整内核参数
[root@node1 ~]# cat > /etc/sysctl.d/k8s.conf <<EOFNET.BRIDGE.BRIDGE-NF-CALL-IPTABLES=1NET.BRIDGE.BRIDGE-NF-CALL-IP6TABLES=1EOF# 生效[root@node1="" ~]#="" sysctl="" --system
4.调整系统时区
#设置系统时区为中国/上海[root@node1 ~]# timedatectl set-timezone Asia/Shanghai#将当前的UTC时间写入硬件时钟[root@node1 ~]# timedatectl set-local-rtc 0#重启依赖于系统时间的服务[root@node1 ~]# systemctl restart rsyslog[root@node1 ~]# systemctl restart crond
5.关闭系统不需要的服务
[root@node1 ~]# systemctl stop postfix && systemctl disable postfix
二、安装etcd
1.创建证书文件
[root@localhost home]# mkdir /opt/TLS/etcd && cd /opt/TLS/etcd[root@localhost etcd]# wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64[root@localhost etcd]# wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64[root@localhost etcd]# wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd6[root@localhost etcd]# mkdir /usr/local/cfssl/[root@localhost etcd]# mv cfssl_linux-amd64 /usr/local/cfssl/[root@localhost etcd]# mv cfssljson_linux-amd64 /usr/local/cfssl/[root@localhost etcd]# mv cfssl-certinfo_linux-amd6 /usr/local/cfssl/[root@localhost etcd]# vim > ca-config.json<< EOF {"signing": {"default": {"expiry": "87600h"},"profiles": {"www": {"expiry": "87600h","usages": ["signing","key encipherment","server auth","client auth"]}}}}[root@localhost etcd]# vim ca-csr.json{"CN": "etcd CA", "key": {"algo": "rsa", "size": 2048 }, "names": [ {"C": "CN", "L": "Beijing", "ST": "Beijing" } ]}[root@localhost etcd]# vim server-csr.json{"CN": "etcd","hosts": ["192.168.24.136","192.168.24.137","192.168.24.138"],"key": {"algo": "rsa","size": 2048},"names": [{"C": "CN","L": "BeiJing","ST": "BeiJing"}]}[root@localhost etcd]# /usr/local/cfssl/cfssl_linux-amd64 gencert -initca ca-csr.json | /usr/local/cfssl/cfssljson_linux-amd64 -bare ca -2021/06/30 23:30:35 [INFO] generating a new CA key and certificate from CSR2021/06/30 23:30:35 [INFO] generate received request2021/06/30 23:30:35 [INFO] received CSR2021/06/30 23:30:35 [INFO] generating key: rsa-20482021/06/30 23:30:36 [INFO] encoded CSR2021/06/30 23:30:36 [INFO] signed certificate with serial number 725059738840226310954172302162231768550676521910[root@localhost etcd]# [root@localhost etcd]# /usr/local/cfssl/cfssl_linux-amd64 gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=www server-csr.json | /usr/local/cfssl/cfssljson_linux-amd64 -bare server2021/06/30 23:39:25 [INFO] generate received request2021/06/30 23:39:25 [INFO] received CSR2021/06/30 23:39:25 [INFO] generating key: rsa-20482021/06/30 23:39:25 [INFO] encoded CSR2021/06/30 23:39:25 [INFO] signed certificate with serial number 4113968810751077352879574991605677378957980238632021/06/30 23:39:25 [WARNING] This certificate lacks a "hosts" field. This makes it unsuitable forwebsites. For more information see the Baseline Requirements for the Issuance and Managementof Publicly-Trusted Certificates, v.1.1.6, from the CA/Browser Forum (https://cabforum.org);specifically, section 10.2.3 ("Information Requirements").[root@localhost etcd]# [root@localhost etcd]# lltotal 36-rw-r--r-- 1 root root 226 Jun 30 23:26 ca-config.json-rw-r--r-- 1 root root 956 Jun 30 23:30 ca.csr-rw-r--r-- 1 root root 143 Jun 30 23:28 ca-csr.json-rw------- 1 root root 1679 Jun 30 23:30 ca-key.pem-rw-r--r-- 1 root root 1265 Jun 30 23:30 ca.pem-rw-r--r-- 1 root root 1013 Jun 30 23:39 server.csr-rw-r--r-- 1 root root 215 Jun 30 23:35 server-csr.json-rw------- 1 root root 1679 Jun 30 23:39 server-key.pem-rw-r--r-- 1 root root 1338 Jun 30 23:39 server.pem[root@localhost etcd]#
2. 安装etcd
2.1 node1上操作
[root@node1 opt]# wget https://github.com/etcd-io/etcd/releases/download/v3.4.9/etcd-v3.4.9-linux-amd64.tar.gz[root@node1 opt]# tar -zxvf etcd-v3.4.9-linux-amd64.tar.gz[root@node1 opt]# mkdir -p /opt/etcd/{bin,cfg,ssl}[root@node1 opt]# mv etcd-v3.4.9-linux-amd64/{etcd,etcdctl} /opt/etcd/bin/[root@node1 etcd]# scp -r /opt/TLS/etcd/{ca.pem,server-key.pem,server.pem} /opt/etcd/ssl/[root@node1 opt]# vim /opt/etcd/cfg/etcd.conf#[Member] ETCD_NAME="etcd-1" ETCD_DATA_DIR="/var/lib/etcd/default.etcd"ETCD_LISTEN_PEER_URLS="https://192.168.24.136:2380"ETCD_LISTEN_CLIENT_URLS="https://192.168.24.136:2379"#[Clustering]ETCD_INITIAL_ADVERTISE_PEER_URLS="https://192.168.24.136:2380"ETCD_ADVERTISE_CLIENT_URLS="https://192.168.24.136:2379" ETCD_INITIAL_CLUSTER="etcd-1=https://192.168.24.136:2380,etcd-2=https://192.168.24.137:2380,etcd-3=https://192.168.24.138:2380" ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster" ETCD_INITIAL_CLUSTER_STATE="new"#[Security]ETCD_CERT_FILE="/opt/etcd/ssl/server.pem"ETCD_KEY_FILE="/opt/etcd/ssl/server-key.pem"ETCD_TRUSTED_CA_FILE="/opt/etcd/ssl/ca.pem"ETCD_CLIENT_CERT_AUTH="true"ETCD_PEER_CERT_FILE="/opt/etcd/ssl/server.pem"ETCD_PEER_KEY_FILE="/opt/etcd/ssl/server-key.pem"ETCD_PEER_TRUSTED_CA_FILE="/opt/etcd/ssl/ca.pem"ETCD_PEER_CLIENT_CERT_AUTH="true"[root@node1 opt]# vim /usr/lib/systemd/system/etcd.service[Unit]Description=Etcd Server After=network.target After=network-online.target Wants=network-online.target [Service]Type=notifyEnvironmentFile=/opt/etcd/cfg/etcd.confExecStart=/opt/etcd/bin/etcdRestart=on-failureLimitNOFILE=65536[Install] WantedBy=multi-user.target[root@node1 etcd]# scp -r /opt/etcd root@node2:/opt/[root@node1 etcd]# scp -r /opt/etcd root@node3:/opt/[root@node1 etcd]# scp -r /usr/lib/systemd/system/etcd.service root@node1:/usr/lib/systemd/system/[root@node1 etcd]# scp -r /usr/lib/systemd/system/etcd.service root@node2:/usr/lib/systemd/system/[root@node1 etcd]# systemctl daemon-reload
2.2 node2上操作
[root@node2 ~]# vim /opt/etcd/cfg/etcd.conf#[Member] ETCD_NAME="etcd-2"ETCD_DATA_DIR="/var/lib/etcd/default.etcd"ETCD_LISTEN_PEER_URLS="https://192.168.24.137:2380"ETCD_LISTEN_CLIENT_URLS="https://192.168.24.137:2379"#[Clustering]ETCD_INITIAL_ADVERTISE_PEER_URLS="https://192.168.24.137:2380"ETCD_ADVERTISE_CLIENT_URLS="https://192.168.24.137:2379"ETCD_INITIAL_CLUSTER="etcd-1=https://192.168.24.136:2380,etcd-2=https://192.168.24.137:2380,etcd-3=https://192.168.24.138:2380"ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"ETCD_INITIAL_CLUSTER_STATE="new"#[Security]ETCD_CERT_FILE="/opt/etcd/ssl/server.pem"ETCD_KEY_FILE="/opt/etcd/ssl/server-key.pem"ETCD_TRUSTED_CA_FILE="/opt/etcd/ssl/ca.pem"ETCD_CLIENT_CERT_AUTH="true"ETCD_PEER_CERT_FILE="/opt/etcd/ssl/server.pem"ETCD_PEER_KEY_FILE="/opt/etcd/ssl/server-key.pem"ETCD_PEER_TRUSTED_CA_FILE="/opt/etcd/ssl/ca.pem"ETCD_PEER_CLIENT_CERT_AUTH="true"[root@node2 etcd]# systemctl daemon-reload
2.3 node3上操作
[root@node3 ~]# vim /opt/etcd/cfg/etcd.conf#[Member] ETCD_NAME="etcd-3" ETCD_DATA_DIR="/var/lib/etcd/default.etcd"ETCD_LISTEN_PEER_URLS="https://192.168.24.138:2380"ETCD_LISTEN_CLIENT_URLS="https://192.168.24.138:2379"#[Clustering]ETCD_INITIAL_ADVERTISE_PEER_URLS="https://192.168.24.138:2380"ETCD_ADVERTISE_CLIENT_URLS="https://192.168.24.138:2379" ETCD_INITIAL_CLUSTER="etcd-1=https://192.168.24.136:2380,etcd-2=https://192.168.24.137:2380,etcd-3=https://192.168.24.138:2380" ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster" ETCD_INITIAL_CLUSTER_STATE="new"#[Security]ETCD_CERT_FILE="/opt/etcd/ssl/server.pem"ETCD_KEY_FILE="/opt/etcd/ssl/server-key.pem"ETCD_TRUSTED_CA_FILE="/opt/etcd/ssl/ca.pem"ETCD_CLIENT_CERT_AUTH="true"ETCD_PEER_CERT_FILE="/opt/etcd/ssl/server.pem"ETCD_PEER_KEY_FILE="/opt/etcd/ssl/server-key.pem"ETCD_PEER_TRUSTED_CA_FILE="/opt/etcd/ssl/ca.pem"ETCD_PEER_CLIENT_CERT_AUTH="true"[root@node3 etcd]# systemctl daemon-reload
2.4 分别启动etcd
[root@node1 etcd]# systemctl start etcd [root@node1 etcd]# systemctl enable etcd# 启动node1的etcd后需要立即启动node2、node3上的etcd,否则node1的etcd访问node2、node3不通,一段时候会报启动失败
备注说明
ETCD3.4版本ETCDCTL_API=3 etcdctl 和 etcd --enable-v2=false 成为了默认配置,如要使用v2版本,执行etcdctl时候需要设置ETCDCTL_API环境变量,例如:ETCDCTL_API=2 etcdctlETCD3.4版本会自动读取环境变量的参数,所以EnvironmentFile文件中有的参数,不需要再次在ExecStart启动参数中添加,二选一,如同时配置,会触发以下类似报错“etcd: conflicting environment variable - - “ETCD_NAME” is shadowed by corresponding command-line flag (either unset environment variable or disable flag)”flannel操作etcd使用的是v2的API,而kubernetes操作etcd使用的v3的API
/opt/etcd/cfg/etcd.conf 配置文件参数说明:
参数含义
ETCD_NAME节点名称,集群中唯一
ETCD_DATA_DIR数据目录
ETCD_LISTEN_PEER_URLS集群通信监听地址
ETCD_LISTEN_CLIENT_URLS客户端访问监听地址
ETCD_INITIAL_ADVERTISE_PEER_URLS集群通告地址
ETCD_ADVERTISE_CLIENT_URLS客户端通告地址
ETCD_INITIAL_CLUSTER集群节点地址
ETCD_INITIAL_CLUSTER_TOKEN集群 Token
ETCD_INITIAL_CLUSTER_STATE加入集群的当前状态,new 是新集群,existing 表示加入
三、安装docker
node1节点
[root@node1 opt]# wget https://download.docker.com/linux/static/stable/x86_64/docker-19.03.9.tgz[root@node1 opt]# mv docker /usr/local/[root@node1 opt]# vim /usr/lib/systemd/system/docker.service[Unit]Description=Docker Application Container Engine Documentation=https://docs.docker.com After=network-online.target firewalld.service Wants=network-online.target[Service] Type=notify ExecStart=/usr/bin/dockerdExecReload=/bin/kill -s HUP $MAINPIDLimitNOFILE=infinity LimitNPROC=infinity LimitCORE=infinity TimeoutStartSec=0 Delegate=yes KillMode=process Restart=on-failure StartLimitBurst=3 StartLimitInterval=60s[Install] WantedBy=multi-user.target[root@node1 opt]# systemctl daemon-reload[root@node1 opt]# systemctl start docker[root@node1 opt]# systemctl enable docker[root@node1 opt]# scp -r docker/* root@node2:/usr/bin/[root@node1 opt]# scp -r docker/* root@node3:/usr/bin/[root@node1 opt]# scp -r /usr/lib/systemd/system/docker.service root@node2:/usr/lib/systemd/system/ [root@node1 opt]# scp -r /usr/lib/systemd/system/docker.service root@node3:/usr/lib/systemd/system/
node2节点
[root@node2 opt]# systemctl daemon-reload && systemctl start docker && systemctl enable docker
node3节点
[root@node2 opt]# systemctl daemon-reload && systemctl start docker && systemctl enable docker
四、部署api-server(Master Node)
1.创建apiserver自签证书
[root@node1 k8s]# vim /opt/TLS/k8s/ca-config.json{"signing": {"default": {"expiry": "87600h"},"profiles": {"kubernetes": {"expiry": "87600h","usages": ["signing","key encipherment","server auth","client auth"]}}}}[root@node1 k8s]# vim /opt/TLS/k8s/ca-csr.json{"CN": "kubernetes","key": {"algo": "rsa","size": 2048},"names": [{"C": "CN","L": "Beijing","ST": "Beijing","O": "k8s","OU": "System"}]}[root@node1 k8s]# vim /opt/TLS/k8s/server-csr.json{"CN": "kubernetes","hosts": ["10.0.0.1","127.0.0.1","kubernetes","kubernetes.default","kubernetes.default.svc","kubernetes.default.svc.cluster","kubernetes.default.svc.cluster.local","192.168.24.136","192.168.24.137","192.168.24.138"],"key": {"algo": "rsa","size": 2048},"names": [{"C": "CN","L": "BeiJing","ST": "BeiJing","O": "k8s","OU": "System"}]}# 生成证书文件[root@node1 k8s]# /usr/local/cfssl/cfssl gencert -initca ca-csr.json | /usr/local/cfssl/cfssljson -bare ca -2021/07/03 17:50:47 [INFO] generating a new CA key and certificate from CSR2021/07/03 17:50:47 [INFO] generate received request2021/07/03 17:50:47 [INFO] received CSR2021/07/03 17:50:47 [INFO] generating key: rsa-20482021/07/03 17:50:47 [INFO] encoded CSR2021/07/03 17:50:47 [INFO] signed certificate with serial number 112636923636866601548066763582581017478124700260[root@node1 k8s]# #使用自签 CA 签发 kube-apiserver HTTPS 证书[root@node1 k8s]# /usr/local/cfssl/cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes server-csr.json | /usr/local/cfssl/cfssljson -bare server2021/07/03 17:53:04 [INFO] generate received request2021/07/03 17:53:04 [INFO] received CSR2021/07/03 17:53:04 [INFO] generating key: rsa-20482021/07/03 17:53:05 [INFO] encoded CSR2021/07/03 17:53:05 [INFO] signed certificate with serial number 600727103085109645844076084532530568963684939512021/07/03 17:53:05 [WARNING] This certificate lacks a "hosts" field. This makes it unsuitable forwebsites. For more information see the Baseline Requirements for the Issuance and Managementof Publicly-Trusted Certificates, v.1.1.6, from the CA/Browser Forum (https://cabforum.org);specifically, section 10.2.3 ("Information Requirements").[root@node1 k8s]# ls server*.pemserver-key.pem server.pem[root@node1 k8s]#
2.下载安装包
[root@node1 opt]# wget https://dl.k8s.io/v1.19.0/kubernetes-server-linux-amd64.tar.gz[root@node1 opt]# tar -zxvf kubernetes-server-linux-amd64.tar.gz[root@node1 opt]# mv kubernetes kubernetes_package[root@node1 opt]# mkdir -p /opt/kubernetes/{bin,cfg,ssl,logs}[root@node1 opt]# cp kubernetes_package/kubernetes/server/bin/{kube-apiserver,kube-scheduler,kube-controller-manager,kubectl} /opt/kubernetes/bin/[root@node1 opt]# ll /opt/kubernetes/bin/total 300412-rwxr-xr-x 1 root root 115245056 Jul 3 18:13 kube-apiserver-rwxr-xr-x 1 root root 107249664 Jul 3 18:13 kube-controller-manager-rwxr-xr-x 1 root root 43003904 Jul 3 18:15 kubectl-rwxr-xr-x 1 root root 42123264 Jul 3 18:13 kube-scheduler[root@node1 opt]# ln -s /opt/kubernetes/bin/kubectl /usr/bin/kubectl[root@node1 opt]# [root@node1 opt]# cp /opt/TLS/k8s/{ca-key.pem,ca.pem,server-key.pem,server.pem} /opt/kubernetes/ssl/[root@node1 opt]# ll /opt/kubernetes/ssl/total 16-rw------- 1 root root 1679 Jul 3 18:20 ca-key.pem-rw-r--r-- 1 root root 1359 Jul 3 18:20 ca.pem-rw------- 1 root root 1679 Jul 3 18:20 server-key.pem-rw-r--r-- 1 root root 1627 Jul 3 18:20 server.pem[root@node1 opt]#
3.配置api-server配置文件
[root@node1 opt]# vim /opt/kubernetes/cfg/kube-apiserver.confKUBE_APISERVER_OPTS="--logtostderr=false \--v=2 \--log-dir=/opt/kubernetes/logs \--etcd-servers=https://192.168.24.136:2379,https://192.168.24.137:2379,https://192.168.24.138:2379 \--bind-address=192.168.24.136 \--secure-port=6443 \--advertise-address=192.168.24.136 \--allow-privileged=true \--service-cluster-ip-range=10.0.0.0/24 \--enable-admission-plugins=NamespaceLifecycle,LimitRanger,ServiceAccount,ResourceQuota,NodeRestriction \--authorization-mode=RBAC,Node \--enable-bootstrap-token-auth=true \--token-auth-file=/opt/kubernetes/cfg/token.csv \--service-node-port-range=30000-32767 \--kubelet-client-certificate=/opt/kubernetes/ssl/server.pem \--kubelet-client-key=/opt/kubernetes/ssl/server-key.pem \--tls-cert-file=/opt/kubernetes/ssl/server.pem \--tls-private-key-file=/opt/kubernetes/ssl/server-key.pem \--client-ca-file=/opt/kubernetes/ssl/ca.pem \--service-account-key-file=/opt/kubernetes/ssl/ca-key.pem \--etcd-cafile=/opt/etcd/ssl/ca.pem \--etcd-certfile=/opt/etcd/ssl/server.pem \--etcd-keyfile=/opt/etcd/ssl/server-key.pem \--audit-log-maxage=30 \--audit-log-maxbackup=3 \--audit-log-maxsize=100 \--audit-log-path=/opt/kubernetes/logs/k8s-audit.log
参数参数解释
–logtostderr启用日志
–v日志等级
–log-dir日志目录
–etcd-serversetcd 集群地址
–bind-address监听地址
–secure-porthttps 安全端口
–advertise-address集群通告地址
–allow-privileged启用授权
–service-cluster-ip-rangeService 虚拟 IP 地址段
–enable-admission-plugins准入控制模块
–authorization-mode认证授权,启用 RBAC 授权和节点自管理
–enable-bootstrap-token-auth启用 TLS bootstrap 机制
–token-auth-filebootstrap token 文件
–service-node-port-rangeService nodeport 类型默认分配端口范围
–kubelet-client-xxxapiserver 访问 kubelet 客户端证书
–tls-xxx-fileapiserver https 证书
–etcd-xxxfile连接 Etcd 集群证书
–audit-log-xxx审计日志
启用 TLS Bootstrapping TLS Bootstrapping机制 TLS Bootstraping:Master apiserver 启用 TLS 认证后,Node 节点 kubelet 和 kube- proxy 要与 kube-apiserver 进行通信,必须使用 CA 签发的有效证书才可以,当 Node 节点很多时,这种客户端证书颁发需要大量工作,同样也会增加集群扩展复杂度。为了 简化流程,Kubernetes 引入了 TLS bootstraping 机制来自动颁发客户端证书,kubelet 会以一个低权限用户自动向 apiserver 申请证书,kubelet 的证书由 apiserver 动态签署。 所以强烈建议在 Node 上使用这种方式,目前主要用于 kubelet,kube-proxy 还是由我 们统一颁发一个证书。
4.创建token文件
格式:token,用户名,UID,用户组
[root@node1 ~]# head -c 16 /dev/urandom | od -An -t x | tr -d " "ef80e12f86c4e342f449e64e3f94f3a9[root@node1 opt]# vim /opt/kubernetes/cfg/token.csvc47ffb939f5ca36231d9e3121a252940,kubelet-bootstrap,10001,"system:node- bootstrapper"
5.systemd 管理 apiserver
[root@node1 opt]# vim /usr/lib/systemd/system/kube-apiserver.service[Unit]Description=Kubernetes API Server Documentation=https://github.com/kubernetes/kubernetes [Service]EnvironmentFile=/opt/kubernetes/cfg/kube-apiserver.confExecStart=/opt/kubernetes/bin/kube-apiserver $KUBE_APISERVER_OPTS Restart=on-failure[Install]WantedBy=multi-user.target[root@node1 opt]#
6.启动并设置开机启动
[root@node1 opt]# systemctl daemon-reload[root@node1 opt]# systemctl start kube-apiserver[root@node1 opt]# systemctl enable kube-apiserver
7.授权 kubelet-bootstrap 用户允许请求证书
[root@node1 opt]# kubectl create clusterrolebinding kubelet-bootstrap --clusterrole=system:node-bootstrapper --user=kubelet-bootstrap
五、部署kube-controller-manager(Master Node)
1. 创建配置文件
[root@node1 opt]# vim /opt/kubernetes/cfg/kube-controller-manager.confKUBE_CONTROLLER_MANAGER_OPTS="--logtostderr=false \--v=2 \--log-dir=/opt/kubernetes/logs \--leader-elect=true \--master=127.0.0.1:8080 \--bind-address=127.0.0.1 \--allocate-node-cidrs=true \--cluster-cidr=10.244.0.0/16 \--service-cluster-ip-range=10.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 \--experimental-cluster-signing-duration=87600h0m0s"
2. systemd 管理 controller-manager
[root@node1 opt]# vim /usr/lib/systemd/system/kube-controller-manager.service[Unit]Description=Kubernetes Controller ManagerDocumentation=https://github.com/kubernetes/kubernetes[Service]EnvironmentFile=/opt/kubernetes/cfg/kube-controller-manager.conf ExecStart=/opt/kubernetes/bin/kube-controller-manager $KUBE_CONTROLLER_MANAGER_OPTSRestart=on-failure[Install]WantedBy=multi-user.target
3. 启动并设置开机启动
[root@node1 opt]# systemctl daemon-reload [root@node1 opt]# systemctl start kube-controller-manager [root@node1 opt]# systemctl enable kube-controller-manager
六、部署 kube-scheduler(Master Node)
1. 创建配置文件
[root@node1 opt]# vim /opt/kubernetes/cfg/kube-scheduler.conf
2. systemd 管理 kube-scheduler
[root@node1 opt]# vim /usr/lib/systemd/system/kube-scheduler.service[Unit]Description=Kubernetes SchedulerDocumentation=https://github.com/kubernetes/kubernetes[Service]EnvironmentFile=/opt/kubernetes/cfg/kube-scheduler.confExecStart=/opt/kubernetes/bin/kube-scheduler $KUBE_SCHEDULER_OPTSRestart=on-failure[Install]WantedBy=multi-user.target
3. 启动并设置开机启动
[root@node1 opt]# systemctl daemon-reload[root@node1 opt]# systemctl status kube-scheduler[root@node1 opt]# systemctl enable kube-scheduler
七、查看集群状态
[root@node1 opt]# kubectl get csWarning: v1 ComponentStatus is deprecated in v1.19+NAME STATUS MESSAGE ERRORcontroller-manager Healthy ok scheduler Healthy ok etcd-1 Healthy {"health":"true"} etcd-0 Healthy {"health":"true"} etcd-2 Healthy {"health":"true"} [root@node1 opt]#
八、部署 kubelet(Worker Node)
1. 创建kubelet.conf配置文件
[root@node2 ~]# mkdir -p /opt/kubernetes/{bin,cfg,ssl,logs}[root@node2 ~]# vim /opt/kubernetes/cfg/kubelet.confKUBELET_OPTS="--logtostderr=false \--v=2 \--log-dir=/opt/kubernetes/logs \--hostname-override=node2 \--network-plugin=cni \--kubeconfig=/opt/kubernetes/cfg/kubelet.kubeconfig \--bootstrap-kubeconfig=/opt/kubernetes/cfg/bootstrap.kubeconfig \--config=/opt/kubernetes/cfg/kubelet-config.yml \--cert-dir=/opt/kubernetes/ssl \--pod-infra-container-image=lizhenliang/pause-amd64:3.0"
2.配置kubelet-config.yml参数文件
[root@node2 ~]# vim /opt/kubernetes/cfg/kubelet-config.ymlkind: KubeletConfigurationapiVersion: kubelet.config.k8s.io/v1beta1address: 0.0.0.0port: 10250readOnlyPort: 10255cgroupDriver: cgroupfsclusterDNS:- 10.0.0.2clusterDomain: cluster.localfailSwapOn: falseauthentication:anonymous:enabled: false webhook: cacheTTL: 2m0s enabled: true x509: clientCAFile: /opt/kubernetes/ssl/ca.pem authorization: mode: Webhook webhook: cacheAuthorizedTTL: 5m0scacheUnauthorizedTTL: 30s evictionHard: imagefs.available: 15% memory.available: 100Minodefs.available: 10% nodefs.inodesFree: 5%maxOpenFiles: 1000000maxPods: 110
3.生成bootstrap.kubeconfig 配置文件
[root@node1 ~]# scp -r /opt/kubernetes_package/kubernetes/server/bin/{kubectl,kubelet,kube-proxy} root@node2:/opt/kubernetes/bin/[root@node1 ~]# scp -r /opt/kubernetes/ssl/ca.pem root@node2:/opt/kubernetes/ssl/ [root@node2 ]# cd /opt/kubernetes/cfg [root@node2 cfg]# export KUBE_APISERVER="https://192.168.24.136:6443" 145 [root@node2 cfg]# export PORT TOKEN="c47ffb939f5ca36231d9e3121a252940"[root@node2 cfg]# /opt/kubernetes/bin/kubectl config set-cluster kubernetes \--certificate-authority=/opt/kubernetes/ssl/ca.pem \--embed-certs=true \--server=${KUBE_APISERVER} \--kubeconfig=bootstrap.kubeconfig[root@node2 cfg]# /opt/kubernetes/bin/kubectl config set-credentials "kubelet-bootstrap" \--token=${TOKEN} \--kubeconfig=bootstrap.kubeconfig [root@node2 cfg]# [root@node2 cfg]# /opt/kubernetes/bin/kubectl config set-context default \--cluster=kubernetes \--user="kubelet-bootstrap" \--kubeconfig=bootstrap.kubeconfig[root@node2 cfg]# /opt/kubernetes/bin/kubectl config use-context default --kubeconfig=bootstrap.kubeconfig[root@node2 cfg]# cat bootstrap.kubeconfig apiVersion: v1clusters:- cluster: certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUR2akNDQXFhZ0F3SUJBZ0lVRTdyUWVKS2wrNGdxOXNPMzQvclBKdDRpZ21Rd0RRWUpLb1pJaHZjTkFRRUwKQlFBd1pURUxNQWtHQTFVRUJoTUNRMDR4RURBT0JnTlZCQWdUQjBKbGFXcHBibWN4RURBT0JnTlZCQWNUQjBKbAphV3BwYm1jeEREQUtCZ05WQkFvVEEyczRjekVQTUEwR0ExVUVDeE1HVTNsemRHVnRNUk13RVFZRFZRUURFd3ByCmRXSmxjbTVsZEdWek1CNFhEVEl4TURjd016QTVORFl3TUZvWERUSTJNRGN3TWpBNU5EWXdNRm93WlRFTE1Ba0cKQTFVRUJoTUNRMDR4RURBT0JnTlZCQWdUQjBKbGFXcHBibWN4RURBT0JnTlZCQWNUQjBKbGFXcHBibWN4RERBSwpCZ05WQkFvVEEyczRjekVQTUEwR0ExVUVDeE1HVTNsemRHVnRNUk13RVFZRFZRUURFd3ByZFdKbGNtNWxkR1Z6Ck1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBcXdQcXFUM0RTZE1odVlGQUExVngKSFpkU1NBQ0pRVkN3Mmdvb2JHM0dTaGh3bmY3dzc2MDF0eE5NbUsraEpGNVRBWUNnS05PU2svQ3lUT0wwY0NuNgprcmQ3TEVwNkVzZzl6cXQzN2VaRzExN0MzRXZhR25lZmY0NHUyM2xJSUJQUEJMam84c2Myd2d4SFI4bGREbWlECng0bWhyY3VoVzBHdjluUllUbDdFR2Z0OHlFRFh4SXdFNDFhejgxR0dHN29jd0tZK3BoaUx4TjVkbWZEWFpCWU8KQmdmdEtBOHBjNU9QVVlrUHhXOUcyQStNdkhnTlhBa0xha2lrc0h1MGkxZUxobWQyRUhDeEttbVJLWW1ZUkYxYwpRcy9yd0ZQS1ZHRUpRUyt1NkVDbHZvTGpqZ1VPcE41Ty9aYWxIdjA0aUdkTGd5a2x3ZjJ3RlRqY1BwalYxSFJXCnBRSURBUUFCbzJZd1pEQU9CZ05WSFE4QkFmOEVCQU1DQVFZd0VnWURWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFqQWQKQmdOVkhRNEVGZ1FVdzIzZWN2UzJ6VVNrY0pSOEtPcG83eVRZaytzd0h3WURWUjBqQkJnd0ZvQVV3MjNlY3ZTMgp6VVNrY0pSOEtPcG83eVRZaytzd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFIUzE0ZVB5dGJ2VHZMc0E0Z3d3CmZqR09MeElRNi9iQ2hESml1Q3RxUG5XNld0VC9NdHBqbVFKN0xlMlFFejVMMitLbERsSmdWcE9HWFdqSkY2NHoKZUFDTHhyYlM0TEhhVFZZdnBHM3V0by8rdVNQRkYwTlU3QUdGZnBOVEtMK0I0TTdidUVuYUFBSnpKQnNYSXhqeQowdDdPeEljUWNlN05IRTNTUkhlaHVPbkw1Ymk0K09KbkpwaVYzK1I4ZUsvU3g3ZTRrRXFLdG9mYmY3M0dhbE9vClQzZEh3TzVkeFNkT1B4SzFCbUtHb2pZUEdtUTNrSnM2Nmw0ZmxFZGpKV2prSDd3MWdXcTZHaGx1ZXRFVFlUTzIKQzRlUVpJSTJjZnRRTkh6Q2hJcHM1cXVoNGxackYzaStITHJpbjlxR3Y2N0YwREtwRlAwMXgzVkFTUkwxK2xHcgpobUE9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K server: https://192.168.24.136:6443 name: kubernetescontexts:- context: cluster: kubernetes user: kubelet-bootstrap name: defaultcurrent-context: ""kind: Configpreferences: {}users:- name: kubelet-bootstrap user: token: c47ffb939f5ca36231d9e3121a252940[root@node2 cfg]#
4. systemd 管理 kubelet
[root@node2 cfg]# vim /usr/lib/systemd/system/kubelet.service[Unit]Description=Kubernetes KubeletAfter=docker.service[Service]EnvironmentFile=/opt/kubernetes/cfg/kubelet.confExecStart=/opt/kubernetes/bin/kubelet $KUBELET_OPTSRestart=on-failureLimitNOFILE=65536[Install]WantedBy=multi-user.target
5. 启动并设置开机启动
[root@node2 cfg]# systemctl daemon-reload[root@node2 cfg]# systemctl start kubelet[root@node2 cfg]# systemctl enable kubelet
6.批准 kubelet 证书申请并加入集群
[root@node1 cfg]# kubectl get csr[root@node1 cfg]# kubectl certificate approve node-csr-i-zpjwJ6gET9K_AN0-M8Wb7XpZxrqyBcNlUKGZLv35s[root@node1 cfg]# kubectl get nodeNAME STATUS ROLES AGE VERSIONnode2 NotReady80s v1.19.0[root@node1 cfg]# 注:由于网络插件还没有部署,节点会没有准备就绪 NotReady
九、部署 kube-proxy
1.创建kube-proxy.conf
[root@node2 cfg]# vim /opt/kubernetes/cfg/kube-proxy.confKUBE_PROXY_OPTS="--logtostderr=false \--v=2 \--log-dir=/opt/kubernetes/logs \--config=/opt/kubernetes/cfg/kube-proxy-config.yml"
2.配置参数文件
[root@node2 cfg]# vim /opt/kubernetes/cfg/kube-proxy-config.ymlkind: KubeProxyConfigurationapiVersion: kubeproxy.config.k8s.io/v1alpha1bindAddress: 0.0.0.0metricsBindAddress: 0.0.0.0:10249clientConnection: kubeconfig: /opt/kubernetes/cfg/kube-proxy.kubeconfighostnameOverride: node2clusterCIDR: 10.0.0.0/24
3.生成 kube-proxy.kubeconfig
# master节点上生成[root@node1 k8s]# cd /opt/TLS/k8s[root@node1 k8s]# vim kube-proxy-csr.json {"CN": "system:kube-proxy","hosts": [],"key": {"algo": "rsa","size": 2048},"names": [{"C": "CN","L": "BeiJing","ST": "BeiJing","O": "k8s","OU": "System"}]}[root@node1 k8s]# /usr/local/cfssl/cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes kube-proxy-csr.json | /usr/local/cfssl/cfssljson -bare kube-proxy[root@node1 k8s]# scp -r {kube-proxy-key.pem,kube-proxy.pem} root@node2:/opt/kubernetes/ssl/
4.生成kubeconfig
[root@node2 cfg]# export KUBE_APISERVER="https://192.168.24.136:6443"[root@node2 cfg]# /opt/kubernetes/bin/kubectl config set-cluster kubernetes \--certificate-authority=/opt/kubernetes/ssl/ca.pem \--embed-certs=true \--server=${KUBE_APISERVER} \--kubeconfig=kube-proxy.kubeconfig [root@node2 cfg]# /opt/kubernetes/bin/kubectl config set-credentials kube-proxy \--client-certificate=/opt/kubernetes/ssl/kube-proxy.pem \--client-key=/opt/kubernetes/ssl/kube-proxy-key.pem \--embed-certs=true \--kubeconfig=kube-proxy.kubeconfig [root@node2 cfg]# /opt/kubernetes/bin/kubectl config set-context default \--cluster=kubernetes \--user=kube-proxy \--kubeconfig=kube-proxy.kubeconfig [root@node2 cfg]# /opt/kubernetes/bin/kubectl config use-context default --kubeconfig=kube-proxy.kubeconfig
5. systemd 管理 kube-proxy
[root@node2 cfg]# vim /usr/lib/systemd/system/kube-proxy.service[Unit]Description=Kubernetes ProxyAfter=network.target[Service]EnvironmentFile=/opt/kubernetes/cfg/kube-proxy.confExecStart=/opt/kubernetes/bin/kube-proxy $KUBE_PROXY_OPTSRestart=on-failureLimitNOFILE=65536[Install]WantedBy=multi-user.target
6. 启动并设置开机启动
[root@node2 cfg]# systemctl daemon-reload[root@node2 cfg]# systemctl start kube-proxy[root@node2 cfg]# systemctl enable kube-proxy
十、部署 CNI 网络(Master Node)
master下载cni包,解压后,部署好网络插件,/opt/cni需要拷贝到其他节点上,其他节点也需要
[root@node1 opt]# wget https://github.com/containernetworking/plugins/releases/download/v0.8.6/cni-plugins-linux-amd64-v0.8.6.tgz[root@node1 opt]# tar -zxvf cni-plugins-linux-amd64-v0.8.6.tgz -C /opt/cni/bin/[root@node1 opt]# cd /opt/kubernetes/cfg [root@node1 cfg]# wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml#默认镜像地址无法访问,修改为 docker hub 镜像仓库。[root@node1 cfg]# sed -i -r "s#quay.io/coreos/flannel:.*-amd64#lizhenliang/flannel:v0.12.0-amd64#g" kube-flannel.yml[root@node1 cfg]# scp -r /opt/cni root@node2:/opt/[root@node1 cfg]# kubectl apply -f kube-flannel.yml[root@node1 cfg]# kubectl get pods -n kube-systemNAME READY STATUS RESTARTS AGEkube-flannel-ds-jcp6n 1/1 Running 0 6m22s[root@node1 cfg]# kubectl get nodeNAME STATUS ROLES AGE VERSIONnode2 Ready91m v1.19.0[root@node1 cfg]#
1.授权 apiserver 访问 kubelet
[root@node1 cfg]# vim apiserver-to-kubelet-rbac.yamlapiVersion: rbac.authorization.k8s.io/v1kind: ClusterRolemetadata: annotations: rbac.authorization.kubernetes.io/autoupdate: "true" labels: kubernetes.io/bootstrapping: rbac-defaults name: system:kube-apiserver-to-kubelet rules: - apiGroups: - "" resources: - nodes/proxy - nodes/stats - nodes/log - nodes/spec - nodes/metrics - pods/log verbs: - "*" --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: system:kube-apiserver namespace: "" roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: system:kube-apiserver-to-kubelet subjects: - apiGroup: rbac.authorization.k8s.io kind: User name: kubernetes
十一、部署node3节点
1. 拷贝已部署好的 Node 相关文件到新节点
[root@node2 opt]# scp -r /opt/kubernetes root@node3:/opt/[root@node2 opt]# scp -r /usr/lib/systemd/system/{kubelet,kube-proxy}.service root@node3:/usr/lib/systemd/system/
2. 删除 kubelet 证书和 kubeconfig 文件
[root@node3 cfg]# rm -rf /opt/kubernetes/cfg/kubelet.kubeconfig /opt/kubernetes/ssl/kubelet*[root@node3 cfg]#
注:这几个文件是证书申请审批后自动生成的,每个 Node 不同,必须删除重新生成。
3. 修改主机名
[root@node3 cfg]# vim /opt/kubernetes/cfg/kubelet.conf --hostname-override=node3[root@node3 cfg]# vim /opt/kubernetes/cfg/kube-proxy-config.yml hostnameOverride: node3[root@node3 cfg]#
4. 启动并设置开机启动
[root@node3 cfg]# systemctl daemon-reload[root@node3 cfg]# systemctl start kubelet[root@node3 cfg]# systemctl enable kubelet[root@node3 cfg]# systemctl start kube-proxy[root@node3 cfg]# systemctl enable kube-proxy
5. 在 Master 上批准新 Node kubelet 证书申请
[root@node1 cfg]# kubectl certificate approve node-csr-V5KygJs8u7OWvFB2QI2FyiqdLJNwVpDyHnBhVmrC4oQcertificatesigningrequest.certificates.k8s.io/node-csr-V5KygJs8u7OWvFB2QI2FyiqdLJNwVpDyHnBhVmrC4oQ approved
十二、验证测试
[root@node1 logs]# kubectl create deployment nginx --image=nginxdeployment.apps/nginx created[root@node1 logs]# kubectl expose deployment nginx --port=80 --type=NodePortservice/nginx exposed
总结说明
1.kubectl get node 不是Ready状态
我这里的问题是,/opt/cni/ 插件从节点机器上没有部署
标签:
相关推荐:
精彩放送:
- []环球观天下!悟空保是什么保险如何退保
- []过户车保险费为什么这么贵,原因有以下三点
- []当前热点-公允价值计量的交易性金融资产_公允价值计量
- []动态:思科瑞2022年净利9742.6万同比增长0.38% 总经理马卫东薪酬100万
- []民和股份:公司种鸡减值确认后不转回,待种鸡淘汰时转销对应的减值金额
- []焦点热门:GQY视讯:公司将在提升内部管理促进工作效能提升的同时,更积极主动应对市场机会
- []快来,在这条“樱花大道”邂逅春日浪漫!
- []环球速讯:气垫鞋跑步好吗(气垫鞋跑步好)
- []msci中国指数是什么意思
- []消息!公司一上市就发财了吗
- []世界热点!中国a股总市值
- []路程除以耗油量等于什么
- []当前焦点!重庆证券公司怎么样啊
- []【时快讯】究极绿宝石叉字蝠怎么进化?双腿变翅膀,论叉字蝠神奇的演化路线
- []世界热议:保利发展前三月销售1141.3亿?月内57亿新增四宗地块
- []观天下!公司名称翻译成英文怎么写_公司名称翻译成英文
- []6折人才房将成历史?深圳明确:取消安居房和人才房!
- []观焦点:迎大运动起来 全国劳模与成都职工代表乐动全城
- []当前报道:动态市盈率是什么
- []焦点短讯!gloryhole是什么
- []当前视讯!同花顺模拟炒股输光了需要投资者返还资金吗
- []热点聚焦:股市开盘是什么意思
- []世界最资讯丨福布斯发布2023全球亿万富豪榜;海底捞高层指考核方式升级;爱马仕计划加速扩张中国市场;淘宝APP首页测试新增99特卖频道
- []环球最资讯丨股市怎么样才能赚钱
- []焦点短讯!常青科技:募资加码研发创新,推动核心技术自主可控
- []星期六股票代码是多少
- []当前焦点!金价还会跌吗
- []【环球速看料】电子体温计测量哪个部位最准确
- []世界新消息丨中铁隧道股份有限公司是国企还是央企
- []科创50有哪些股票
- []鳄鱼有舌头吗(鳄鱼的舌头可以防止水倒灌吗)
- []当前观察:每日净值是什么意思
- []当前看点!债权投资减值准备能够转回吗
- []天天滚动:政府为什么不强制贾跃亭回国
- []当前聚焦:福州期货开户哪家公司比较好
- []视焦点讯!汗斑怎么治疗彻底根除_汗斑的最佳治疗方法
- []焦点日报:一季度国家铁路客货运输两旺
- []滚动:刚买了三者没买不计免赔怎么办
- []实时:公积金提前还款
- []医保比例单位和个人怎么计算
- []当前头条:房屋结构安全鉴定报告_房屋结构
- []环球热门:共创储能新时代|比亚迪储能荣膺第十一届储能国际峰会暨展览会ESIE2023多项大奖
- []权威发布:科华数能用户侧储能系统出货量TOP1
- []世界热议:“风起水涌,能量聚拢”| 科陆重磅发布Aqua、Aero、Byzer储能新品
- []特变电工新能源携光储新品亮相储能国际峰会
- []环球焦点!聚焦ESIE2023 | 兴储世纪与行业一起迈步新征程
- []每日热讯!蜂巢能源叠片短刀L500型325Ah储能专用电芯首次亮相储能国际峰会
- []教人开网店的骗局_网上教开网店是真是假
- []【天天聚看点】瑞源电气与您相约第十一届储能国际峰会,我们在6号馆(S86)等您!
- []全球焦点!1八成干的香肠冷冻能放多久?
- []今日热议:房子,竟然成了万恶之源
- []天天简讯:透露大模型进展以及英伟达合作情况,AI操作系统龙头亮了!这些高增长低估值股热度爆棚
- []快资讯:鑫铂股份:修订后的考核指标2应是增长至的概念,公司已就上述笔误进行了更正,详见巨潮资讯网
- []招商银行信用卡咖啡风暴10元来袭!
- []尉氏附近有好玩的地方吗 尉氏有什么好玩儿的吗 尉氏附近有好玩的地方吗在哪
- []空客在华获160架新飞机订单;新东方将布局文旅产业 | 大公司简报
- []天天新消息丨特锐德:有一定的出口外销,但对公司充电业务总收入的影响不大
- []全民推方块好玩吗 全民推方块玩法简介
- []世界信息:qdll基金是什么意思
- []股票分红分的是不是自己的钱
- []新股申购可以撤单吗
- []当前滚动:赵薇娱乐公司叫什么
- []做空为什么跌了还赚钱
- []【世界快播报】中国在台海军演可不是“炸鱼”,而是炸台独的心和胆,矫正美台对台海形势的预期
- []天天时讯:仅租金收入就高达百亿 新城控股连续五年经营性现金流净流入
- []视讯!企业为什么选择在科创板上市
- []【全球新要闻】TE Connectivity @2023年储能国际峰会暨展览会
- []长城是由谁建造的
- []【环球报资讯】创业板指数基金有哪些
- []跨国公司有哪些
- []今日热讯:工银价值是什么基金
- []保障额度是什么意思,保险金额
- []环球关注:被车撞了怎么跟保险公司沟通赔偿,有以下四步
- []当前资讯!社保买两年不买可退回钱吗,满足条件可以退
- []环球短讯!新能源汽车自燃保险公司赔付吗,购买了自燃险会赔付
- []私企有公积金吗,有
- []【环球时快讯】直击现场!沃太能源亮相北京ESIE展,"新一代"能源技术备受瞩目!
- []环球新消息丨a股和美股哪个适合散户
- []每日短讯:深化储能业务布局 首航携光储系统解决方案亮相ESIE2023
- []【独家】杠杆效应是什么
- []注册制有什么特点
- []风投基金是什么意思
- []“数”说数字政府建设“山东样本”
- []今日热议:ipo啥意思
- []创业板和科创板的区别
- []震荡股票怎么操作
- []环球播报:龙腾光电荣膺电博会金奖,卓越技术引领行业
- []前沿热点:股市大跌的原因
- []天天快消息!权重股是指哪些股票
- []权重股什么意思
- []观点:交通运输部部署开展2023年中国航海日活动
- []世界滚动:“豫”见恐龙骨架化石数字作品限量发行
- []腾讯视频与抖音达成合作,推动长短视频融合发展
- []每日信息:3600亿巨头出手!联手两大新能源公司,要干这件大事
- []【全球速看料】这群HUSTer,在山沟沟里种出“金坨坨”!
- []焦点短讯!买瓶洗发水送女票
- []国潮吸引创业者
- []每日报道:李国庆羡慕周鸿祎平和离婚背后,与俞渝离婚大战鸡飞狗跳
- []阳光车险为啥便宜,阳光车险的理赔流程有哪些
- []配置占比大幅提升 机构频频现身科创板股
- 世界热头条丨K8s安装部署怎么操作?K8S集群安装部署及操作说明
- 全球新资讯:合肥今起恢复公积金异地贷款
- 【世界播资讯】郑州公布2023年680个市重点建设项目名单 总投资1.08万亿元
- 今日热搜:深圳罗湖区发放5000万购车补贴 个人最高获10万元补贴
- 环球快看点丨TD早报 | 锦江与雅高签署谅解备忘录;广州会展业回暖激活商旅市场
- 环球视讯!2021年养老金计算公式 2021养老金计算公式是怎样的
- 焦点速看:双预警!通州明后天阵风8级!伴有沙尘!注意防范——
- 社保卡激活了是不是金融功能就开通了,不一定
- 解局 | 建发一周三城拿地记:“保守观望”和“规模扩张”
- 公积金可以取几次,有以下四种情况
- B站注册资本增幅400%至5亿 目前由陈睿全资持股
- 光源资本出任独家财务顾问 沐曦集成电路10亿元A轮融资宣告完成
- 巨轮智能2021年上半年营收11.24亿元 期内研发费用投入增长19.05%
- 红枣期货尾盘拉升大涨近6% 目前红枣市场总库存约30万吨
- 嘉银金科发布2021年Q2财报 期内净利润达1.27亿元同比增长208%
- 成都银行2021上半年净利33.89亿元 期内实现营收同比增长17.27亿元
- 汽车之家发布2021年第二季度业绩 期内新能源汽车品牌收入增长238%
- 中信银行上半年实现净利润290.31亿元 期末不良贷款余额706.82亿元
- 光伏概念掀起涨停潮交易价格创新高 全天成交额达1.29亿元
- 上半年生物药大增45% 关键财务指标好转营收账款持续下降
- 环球微资讯!股票行情快报:天元股份(003003)4月7日主力资金净买入55.04万元
- 中交地产2022年收入385亿?较上年增长164.52%
- 天天快报!LG化学金惠子:中国医美市场潜力巨大,高端市场尤需持续发力
- 天天报道:中交地产2022年净利润0.34亿元丨年报快讯
- 快讯:苏宁环球披露前期会计差错更正 涉及2021年度末未分配利润数据
- 天天观热点:新能源车险保费大增背后:赔付率超油车,行业如何提升利润?
- 天天新消息丨专访陆家嘴董事长徐而进:集团优质资产注入 三年内预计预收款项近400亿元
- 每日热讯!3月上海二手房成交套数达20个月新高:挂牌量充足,价格稳定
- 环球观察:专访:对中国经济长期向好充满信心——访美敦力全球高级副总裁顾宇韶
- 每日关注!招商蛇口一季度签约销售金额722.66亿元 同比增长超五成
- 当前快讯:严跃进:新力退市、蓝光预警,防范房企债务危机演变为股市危机
- 机构评3月非农:美国就业增长虽降温,但美联储5月加息不可避免?
- 云海金属:青阳项目按计划是今年投产
- 世界要闻:湖北能源:公司信息披露严格按照监管部门相关要求办理,无应披未披事项
- 全球百事通!运动品牌“双雄”安踏、李宁“失速”,成长性陷入瓶颈,高端化困难重重
- 国内游热度走高,全国多地知名景区官宣免票
- 城投控股一季度主要房地产项目新增签约金额4570万元
- 金融街预计2023年与控股股东关联交易不超3.1亿
- 当前短讯!郑州楼市再放大招!公积金最高可贷100万
- 天天百事通!天健集团按比例支付深圳坪山土地价款?代价4.84亿元
- 世界今日报丨鱼跃医疗:公司会根据对应产品所处阶段、业务推广的进度,合理安排产能配置
- 天天快看点丨融创房地产等被执行超12亿 融创房地产3天被执行69次
- 通裕重工:国有控股后,公司树立了“打造国际一流的能源装备制造商及知名的功能材料供应商”的战略目标
- 世界视讯!欧普康视:公司不是AI类企业,产品中会根据需要吸收采用必要的AI技术
- 世界观焦点:国任财险副总经理马昌明任职资格批复
- 民生银行参展“第十一届国际储能峰会”并举办“聚力储能 和合共生”金融论坛
- 财信发展为4家子公司提供181.03万元担保
- 全球播报:香江控股2022年营收60.55亿元 销售金额24.41亿元
- 头条焦点:振邦智能:目前微逆产品已完成样机的测试,目前正在进行型式测试、并网测试等,争取早日通过认证
- 今日关注:粤海股份:城启集团等五家企业破产清算案获得通过
- 中国电影前三月票房119亿 《流浪地球2》累计40.26亿
- 当前看点!陕天然气:公司目前正在开展天然气贸易前期准备工作,积极对接相关方,实质性贸易业务暂未开展
- 天天看点:香江控股:2022年营业收入为60.55亿元
- 热点聚焦:安徽首创“纳税信用绿卡” 将在长三角地区推广应用
- 告别日烧3亿的困局,三大航今年能否实现盈利?
- 财面儿丨合生创展:前3月实现合同销售额100.67亿元 同比增长25.5%
- 合肥百货:2022年归母净利润下降7.3%
- 焦点热门:招商蛇口完成发行10亿短期融资券 利率2.2%
- 新消息丨中环股份(002129.SZ):2020年度归母净利升20.51%至10.89亿元 拟10派0.6元
- ST泰禾:太原金尊府项目在属地政府及相关机构的大力支持和协助下,正在积极推进复工前期的各项工作
- 全球新资讯:郑州:承租公租房、保租房的家庭公积金提取金额最高可为3.6万元
- 环球最资讯丨兆威机电:公司积极把握汽车自主品牌和新能源汽车的发展机遇,充电枪锁驱动系统项目按计划稳步推进中
- 成渝双城首届社会办医创新发展大会在渝举行
- 环球新动态:直击现场!马应龙亮相世界大健康博览会
- 资讯推荐:新加坡旅游业等来了中国游客
- 微速讯:安徽高速地产9.51亿元资产支持ABS已获反馈
- 新消息丨中交地产:成功发行7亿元公司债券
- 全球热文:中国铁建拟挂牌转让3家项目公司股权 涉及四川成都、江苏淮安等地
- 今头条!浙江中成房地产4.79亿元竞得绍兴1宗地块
- 焦点关注:国电南自:市值管理核心是不断优化上市公司的资产质量和做优经营业绩以实现价值提升
- 环球快报:宏盛股份:股市有风险,入市需谨慎
- 京东拍卖春季法拍节开启 房产5.6折起拍、豪车7折起拍
- 突发!千亿黑马房企退市,此前老板“退出群聊”吓坏债权人
- 环球视点!南都物业:公司按要求定期披露股东户数,敬请留意定期报告相关内容
- 雁栖湖健康发展论坛在京召开
- 天天新动态:黄金比例身材是几几分
- 观热点:基金回报率一般多少
- 天天日报丨房地产板块涨幅第一!美女私募回应:这个锅我不背!
- 证券大涨是牛市到了吗
- 当前简讯:股息分红是利好吗
- 微动态丨上海第一家试行股份制经营的公司是
- 热点在线丨绍兴发布总额6000万元政府消费券 按“先申领后抽签”模式进行
- 每日快讯!津惠保是什么保险,普惠型补充医疗险
- 天天百事通!中南置地:2023年第一季度累计交付1.5万套房屋
- 世界焦点!电子医保卡第一次怎么用,有以下六个步骤
- 北京洛娃大厦二次拍卖流拍 当前价7.67亿元
- 焦点资讯:房地产板块走强 天保基建涨停
- 焦点信息:绿城水务(601368)4月7日主力资金净买入178.16万元
- 【全球播资讯】农村社会养老保险怎么买最划算,有以下两点
- 4月7日西子洁能涨停分析:光热发电,创投,钒电池概念热股
- 环球今热点:中国人寿生存金多久拿一次,三年或是一年领取一次
- 订单险买家退货怎么赔,赔付的是商品的价格
- 【环球报资讯】4月7日麦格米特涨停分析:呼吸机,智能制造,充电桩概念热股
- 4月7日首药控股涨停分析:创新药,医药概念热股
- 4月7日三维化学涨停分析:光热发电,异丙醇,石油化工概念热股
- 环球报道:回落是上升还是下降
- 券商龙头股票有哪些
- 未成年可以炒股吗
- 环球微速讯:macd顶背离和底背离是什么
- 世界消息!股份制银行有哪些
- 铸储能品质标杆|晶科能源新一代SunGiga液冷工商业储能解决方案重磅来袭
- 钱小乐:是“借钱三巨头”之一,也是小而美的信贷新星
- 世界实时:浙江湖州:2023年将再增1.53万套保障性租赁住房
- 【世界速看料】天力锂能:碳酸锂价格持续下跌,影响到下游采购需求,直接影响到订单下滑,导致开工率下降
- 焦点快播:专家称金价创新高只是时间问题,短期须警惕3月就业和通胀报告
- 世界快看:中国金茂一季度签约增幅40% 产品+服务筑基精益发展底盘
- 万达地产集团新增两则被执行人信息,执行标的近10.87亿元
- 京东京造正式布局元宇宙 打造"京造元宇宙"虚拟世界
- 天天日报丨京东京造正式布局元宇宙 打造"京造元宇宙"虚拟世界
- A股电影娱乐板块走强 上海电影涨停、华谊兄弟、博纳影业等上扬
- 全球看点:英镑见顶了?机构反驳:还有200点上涨空间
- 世界热文:浙农股份:公司在浙江省嘉善县西塘镇开展现代粮食产业园建设,打造未来耘农场,目前种植有万亩水稻
- 快消息!银行卡里边定期的钱可以转活期吗
- 世界今日讯!诺基亚市值最高峰多少
- 当前动态:微众银行有年费吗
- 仁恒置地首季度合约预售金额约81.29亿 同比下降49.9%
- 世界新资讯:中国交建:分拆设计业务打造行业龙头上市公司平台
- 每日聚焦:北京海淀区上地西路39号部分土地及房产二次挂牌 起拍价降至6.86亿
- 焦点热议:赣州城投30亿元私募债券项目更新为“已反馈”
- 北京:废止房屋拆迁许可证制度 应采取房屋安置等方式予以补偿