基于kubeasz3.2.0搭建k8s:v1.23.1
1)环境准备
注意:
- 由于安装过程需要githar拉取镜像,建议先将所有镜像都下载下来,push到自己的服务harbor服务器上,这样可以大大缩短部署时间;
- 安装过程中,一些config.yml中的组件版本变量需要替换,请提前替换完成,不然会05之后会因为变量未替换二造成镜像下载失败;
所有机器centos7(需升级内核)
A类地址:10.0.0.0 ~ 10.255.255.255
B类地址:172.16.0.0 ~ 172.31.255.255
C类地址:192.168.0.0 ~ 192.168.255.255
规划机器和地址:
server网段使用:10.200.0.0/16
node的网段:172.20.0.0/16
vip:192.168.37.220
组件及版本:
kubeasz_3.2.0.tar
docker-20.10.9.tgz
metrics-server_v0.5.2.tar
metrics-scraper_v1.0.7.tar
coredns_1.8.6.tar
k8s-dns-node-cache_1.21.1.tar
nfs-provisioner_v4.0.2.tar
dashboard_v2.4.0.tar
pause_3.6.tar
calico_v3.19.3.tar
flannel_v0.15.1.tar
k8s:v1.23.1
- 升级centos7的内核:
# 载入公钥 rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org # 安装ELRepo rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm # 载入elrepo-kernel元数据 yum --disablerepo=\* --enablerepo=elrepo-kernel repolist # 查看可用的rpm包 yum --disablerepo=\* --enablerepo=elrepo-kernel list kernel* # 安装长期支持版本的kernel yum --disablerepo=\* --enablerepo=elrepo-kernel install -y kernel-lt.x86_64 # 删除旧版本工具包 yum remove kernel-tools-libs.x86_64 kernel-tools.x86_64 -y # 安装新版本工具包 yum --disablerepo=\* --enablerepo=elrepo-kernel install -y kernel-lt-tools.x86_64 #查看默认启动顺序 awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg

#默认启动的顺序是从0开始,新内核是从头插入(目前位置在0,而4.4.4的是在1),所以需要选择0。 grub2-set-default 0 #重启并检查 reboot
#完成后可以删除旧的内核,查看系统中全部的内核RPM包:
rpm -qa | grep kernel
- 修改主机名称
hostnamectl set-hostname k8s-haproxy1.taozi.net
更新yum源:
cat > /etc/yum.repos.d/epel.repo << EOF [tengxun] name=tengxun epel baseurl=https://mirrors.cloud.tencent.com/centos/\$releasever/os/\$basearch/ gpgcheck = 1 gpgkey = https://mirrors.cloud.tencent.com/centos/\$releasever/os/\$basearch/RPM-GPG-KEY-CentOS-$releasever enabled = 1 [qinghua] name=qinghua epel baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/\$releasever/os/\$basearch/ #1表示开启,0表示关闭 gpgcheck = 1 gpgkey = https://mirrors.tuna.tsinghua.edu.cn/centos/\$releasever/os/\$basearch/RPM-GPG-KEY-CentOS-$releasever enabled = 1 [ali] name=sohu epel baseurl=http://mirrors.aliyun.com/epel/7/\$basearch gpgcheck = 0 enabled = 1 [sohu] name=sohu epel baseurl=http://mirrors.sohu.com/fedora-epel/7/x86_64/ gpgcheck = 0 enabled = 1 EOF yum clean all yum repolist all
安装运行环境,在每个master和node安装python2(ubuntu是python2.7):
yum install -y conntrack-tools ipvsadm nfs-utils psmisc rsync socat python
时间同步:
ntpdate time1.aliyun.com && hwclock -w
- 准备haproxy的代理:
#在105和106上安装keepalived和haproxy
yum install keepalived haproxy -y
#配置keepalived
#在106上修改keepalived的配置文件,先复制
cp /usr/share/doc/keepalived-1.3.5/samples/keepalived.conf.vrrp /etc/keepalived/keepalived.conf vim /etc/keepalived/keepalived.conf
systemctl restart keepalived.service ip a
在107上同样进行配置:
修改拷贝105上的配置文件修改被备用节点和优先级即可;
vim /etc/keepalived/keepalived.conf
验证:停止106主节点的keepalived服务,验证VIP漂移正常;
配置haproxy:
listen k8s_api_node_6443 bind 192.168.37.220:6443 #这里mode一定要选用tcp协议 mode tcp server k8s-master1 192.168.37.102:6443 check inter 2000 fall 3 rise 5 #server k8s-master2 192.168.37.103:6443 check inter 2000 fall 3 rise 5 #server k8s-master3 192.168.37.104:6443 check inter 2000 fall 3 rise 5 listen haproxy-status bind :9999 stats enable #stats hide-version stats uri /haproxy-status stats realm HAProxy\ Stats\ Page #stats auth haadmin:123456 stats auth admin:123456 #stats refresh 30 #stats admin if TRUR #修改内核参数,因为keepalived,没有拿到VIP的主机,将会无法启动haproxy echo "net.ipv4.ip_nonlocal_bind = 1" > /etc/sysctl.d/99-sysctl.conf sysctl -p systemctl enable --new haproxy.servic
107上执行同样操作。
- haror仓库准备:
清华园最新安装包下载地址:https://mirrors.tuna.tsinghua.edu.cn/github-release/
1)安装docker
安装依赖3个源:
wget -O /etc/yum.repos.d/Docker-Centos-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo wget -O /etc/yum.repos.d/Docker-epel.repo http://mirrors.aliyun.com/repo/epel-7.repo wget -O /etc/yum.repos.d/Docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#列出历史版本的docker
yum search --showduplicates docker
#选出对应版本进行安装
yum install docker-ce-19.03.5-3.el7 docker-ce-cli-19.03.5-3.el7 -y systemctl enable --now docker docker version
查看docker版本
#使用阿里做镜像加速
mkdir -p /etc/docker cat > /etc/docker/daemon.json <<EOF
{ "registry-mirrors": ["https://si7y70hh.mirror.aliyuncs.com"] }
EOF
2)安装docker-compose
#方法1: 官网直接下载,版本较新docker_compose,推荐使用
#curl -L https://github.com/docker/compose/releases/download/1.25.3/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose curl -L https://github.com/docker/compose/releases/download/v2.2.2/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose docker-compose --version
#方法2: 直接安装,版本较旧docker-compose,不推荐使用
yum -y install docker-compose docker-compose --version
3)配置文件和生成证书,安装harbor.v2.1.0.tar.gz
tar xvf harbor-offline-installer-v2.1.0.tgz -C /apps/harbor/ cp /apps/harbor/harbor.yml.tmpl /apps/harbor/harbor.yml vim /apps/harbor/harbor.yml
#修改hostname证书路径
#修改登录密码:
#生成证书文件
mkdir /apps/harbor/certs/ cd /apps/harbor/certs/ #生成秘钥和自签名根证书: openssl req -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -subj "/CN=ca.taozi.net" -days 7300 -out ca.crt #由于gogo1.15版本以后废弃CommonName,下面的生成harbor的证书命令已不能使用,(生成harbor主机的证书申请) #openssl req -newkey rsa:4096 -nodes -sha256 -subj "/CN=k8s-harbor.taozi.net" -keyout k8s-harbor.taozi.net.key -out k8s-harbor.taozi.net.csr #由于gogo1.15版本以后废弃CommonName,下面的生成harbor的证书命令已不能使用,给harbor主机颁发证书 #openssl x509 -req -in k8s-harbor.taozi.net.csr -CA ca.crt -CAkey ca.key -CAcreateserial -days 7300 -out k8s-harbor.taozi.net.crt #新本的申请方法如下: #用根的秘钥生成申请文件: openssl req -new -sha256 \ -key ca.key \ -subj "/C=CN/ST=sahnxi/L=xian/O=UnitedStack/OU=Devops/CN=k8s-harbor.taozi.net" \ -reqexts SAN \ -config <(cat /etc/pki/tls/openssl.cnf\ <(printf "[SAN]\nsubjectAltName=DNS:k8s-harbor.taozi.net")) \ -out k8s-harbor.taozi.ne.csr #用申请文件来申请证书: openssl x509 -req -days 365000 \ -in k8s-harbor.taozi.ne.csr -CA ca.crt -CAkey ca.key -CAcreateserial \ -extfile <(printf "subjectAltName=DNS:k8s-harbor.taozi.net") \ -out k8s-harbor.taozi.net.crt cd /apps/harbor/ ./install.sh
#harbor自启动:
cat > /lib/systemd/system/harbor.service <<EOF [Unit] Description=Harbor After=docker.service systemd-networkd.service systemd-resolved.service Requires=docker.service Documentation=http://github.com/vmware/harbor [Service] Type=simple Restart=on-failure RestartSec=5 ExecStart=/usr/bin/docker-compose -f /apps/harbor/docker-compose.yml up ExecStop=/usr/bin/docker-compose -f /apps/harbor/docker-compose.yml down [Install] WantedBy=multi-user.target EOF systemctl daemon-reload systemctl enable harbor
修改 harbor 配置生效方法:
建议修改配置方法:
systemctl stop harbor vim harbor.yml cd /apps/harbor/ vim harbor.yml . /apps/harbor/prepare systemctl start harbor
或者
cd /apps/harbor/ docker-compose stop docker ps -a vim harbor.yml ./apps/harbor/prepare docker-compose start
或者:
/apps/harbor/install.sh
#登录实验:
docker login k8s-harbor.taozi.net
#在master1上安装ansable,免密登录和拷贝hosts文件:
yum install ansible -y #脚本分发公钥和docker证书 ssh-keygen yum -y install sshpass vim scp.sh #!/bin/bash . /etc/init.d/functions HarborHostname=k8s-harbor.taozi.net #目标主机列表,只需要所有master和node节点即可,包括本机 IP=" 192.168.37.102 192.168.37.103 192.168.37.104 192.168.37.105 192.168.37.106 192.168.37.107 192.168.37.108 192.168.37.109 192.168.37.110 " scp_key(){ for node in $IP;do sshpass -p lijian ssh-copy-id ${node} -o StrictHostKeyChecking=no &>/dev/null if [ 0 -eq 0 ];then action "${node}秘钥copy完成" else action "${node}秘钥copy失败" fi done } scp_hosts(){ for node in $IP;do sshpass ${node} if [ 0 -eq 0 ];then scp /etc/hosts ${node}:/etc/hosts action "host 文件拷贝完成" scp -r /root/.docker ${node}:/root/ # else # action "${node} hosts文件copy失败" fi done } scp_srt(){ for node in $IP;do sshpass ${node} if [ 0 -eq 0 ];then ssh ${node} "mkdir /etc/docker/certs.d/${HarborHostname} -p" action "Harbor 证书目录创建成功!" scp /apps/harbor/certs/${HarborHostname}/${HarborHostname}.crt ${node}:/etc/docker/certs.d/${HarborHostname}/harbor-ca.crt action "Harbor 证书拷贝成功!" #scp -r /root/.docker ${node}:/root/ #action "Harbor 认证文件拷贝完成!" # else # action "${node} 证书copy失败" fi done } scp_key scp_hosts #scp_srt
验证节点成功:
2)在部署节点编排k8s安装
可以提前在每个节点上安装需要的工具:
yum install -y conntrack-tools ipvsadm nfs-utils psmisc rsync socat
说明:对比之前版本配置文件,该版本将大部分的变量集成在./example/config.yml文件中,配置部分解释:
MASTER_CERT_HOSTS: - 如果需要外部访问 apiserver,可选在config.yml配置 MASTER_CERT_HOSTS
CA_EXPIRY: "876000h" - 证书的有效期配置
NODE_CIDR_LEN: - node 节点上 pod 网段掩码长度(决定每个节点最多能分配的pod ip地址)
INSTALL_SOURCE: "offline" - 配置使用离线安装系统包(需要ezdown -P 下载离线系统软件)
NODE_CIDR_LEN - ode 节点上 pod 网段掩码长度(决定每个节点最多能分配的pod ip地址)
时间可能较长,一些镜像需要去官网下载,本次拉去运行./ezdown -D花费将近3个小时;可以在正式部署之前选用离线模式先把各种镜像拉取下来./ezdown -P
# 下载工具脚本ezdown,举例使用kubeasz版本3.0.0 export release=3.2.0 wget https://github.com/easzlab/kubeasz/releases/download/${release}/ezdown chmod +x ./ezdown # 使用工具脚本下载 ./ezdown -D
cp和修改hosts文件:
cd /etc/kubeasz cp /etc/kubeasz/example/hosts.multi-node hosts grep ^[^#] hosts [etcd] 192.168.37.102 192.168.37.103 [kube_master] 192.168.37.102 192.168.37.103 [kube_node] 192.168.37.108 192.168.37.109 [harbor] [ex_lb] 192.168.37.106 LB_ROLE=master EX_APISERVER_VIP=192.168.37.220 EX_APISERVER_PORT=6443 192.168.37.107 LB_ROLE=backup EX_APISERVER_VIP=192.168.37.220 EX_APISERVER_PORT=6443 [chrony] [all:vars] SECURE_PORT="6443" CONTAINER_RUNTIME="docker" CLUSTER_NETWORK="flannel" PROXY_MODE="ipvs" SERVICE_CIDR="172.20.0.0/16" CLUSTER_CIDR="10.10.0.0/16" NODE_PORT_RANGE="30000-60000" CLUSTER_DNS_DOMAIN="taizo.local" bin_dir="/usr/bin" base_dir="/etc/kubeasz" cluster_dir="{{ base_dir }}/clusters/_cluster_name_" ca_dir="/etc/kubernetes/ssl"
hosts文件解释:
[etcd] 192.168.3.147 NODE_NAME=etcd1 #etcd集群中,每个节点需要有一个独一无二的名称,不能重复 [kube-master] 192.168.3.141 #master节点 [kube-node] #node节点 192.168.3.144 [ex-lb] #主要指定apiserver的使用的高可用的VIP; 192.168.3.221 LB_ROLE=master EX_APISERVER_VIP=192.168.3.188 EX_APISERVER_PORT=6443 192.168.3.222 LB_ROLE=backup EX_APISERVER_VIP=192.168.3.188 EX_APISERVER_PORT=6443 CONTAINER_RUNTIME="docker" #指定使用的容器运行时 # Secure port for apiservers SECURE_PORT="6443" #指定在master上运行的apiserver的端口 CLUSTER_NETWORK="flannel" #指定网络插件 PROXY_MODE="ipvs" #指定service类型使用ipvs SERVICE_CIDR="172.31.0.0/16" #指定service网段 CLUSTER_CIDR="10.10.0.0/16" #pod网段 NODE_PORT_RANGE="30000-60000" #nodeport端口范围 CLUSTER_DNS_DOMAIN="taizo.local." #service的域名后缀,凡是后期创建所有service的后缀都是这个, bin_dir="/usr/bin" #指定二进制程序路径,把安装的二进制程序存放到各个节点的/usr/bin/下,后期当进入master或者node上可直接执行这些程序 ca_dir="/etc/kubernetes/ssl" #证书路径 base_dir="/etc/ansible" #kubeasz的工作路径
准备开始执行playbook,修改playbooks/01.prepare.yml,因为前期已经同步了时间和部署了负载均衡,所以将这两条注释了
vim playbooks/01.prepare.yml
证书的申请信息放这里面,CA_EXPIRY变量是证书有效期时间:
ll roles/deploy/templates/ca-csr.json.j2 #过滤该变量,变量时间文件 grep CA_EXPIRY . -R
内核优化参数文件:roles/prepare/templates/95-k8s-sysctl.conf.j2 需要修改可以提前修改。
开始部署:
执行01,安装证书及初始化:
这里提示了一个错误,显示本机有ca的两个时间变量未定义,但本机为102机器,已全部运行成功,故先暂时不处理。
该版本需使用ezctl进行安装,安装之前先命名集群名称,该名称为k8s-01,安装尽量将所有的错误都解决;
cd /etc/kubeasz #将改好的hosts和config.yml文件放到/k8s-01中; ./ezctl new k8s-01 cp hosts /etc/kubeasz/clusters/k8s-01/hosts cp example/config.yml /etc/kubeasz/clusters/k8s-01/config.yml #01步骤不要轻易执行,会改变证书 ./ezctl setup k8s-01 01
执行02,安装etcd:
./ezctl setup k8s-01 02
完成后在103上查看etcd进程
#官方的检查for循环有问题,应该是旧版本的脚本,没有修改路径,下边是修改后的心跳检查脚本;
export NODE_IPS="192.168.37.102 192.168.37.103 192.168.37.104" for ip in ${NODE_IPS}; do ETCDCTL_API=3 etcdctl \ --endpoints=https://${ip}:2379 \ --cacert=/etc/kubernetes/ssl/ca.pem \ --cert=/etc/kubernetes/ssl/etcd.pem \ --key=/etc/kubernetes/ssl/etcd-key.pem \ endpoint health; done
报错分析:
"error":"cluster ID mismatch"
之前这个节点上安装了etcd,需要将--data_dir中的所有数据清空即可
rm -rf /var/lib/etcd/
执行03,创建容器运行时:
#roles/docker/templates/daemon.json.j2已配置国内镜像加速,需要的可以修改:
前面因为部署得harbor是基于https的,所以牵扯harbor的证书问题,可以两种方法解决:
1)安装docker完成后用上面的分发脚本在harbor上进行分发
将证书放到每个node和需要打镜像的服务器上(可以使用前面的脚本分发):
#在每个node和需要打镜像的服务器创建 mkdir -pv /etc/docker/certs.d/k8s-harbor.taozi.net/ -p #将证书文件复制到本地: scp -r k8s-harbor.taozi.net:/apps/harbor/certs/k8s-harbor.taozi.net.crt /etc/docker/certs.d/k8s-harbor.taozi.net/ca.crt
2)将harbor上的证书拷贝到本机,在官方的playbook上加上拷贝任务,在进行03执行:
cd /etc/kubeasz/roles/docker/files scp 192.168.37.105:/etc/docker/certs.d/k8s-harbor.taozi.net/ca.crt . vim /etc/kubeasz/roles/docker/tasks/main.yml #在/etc/kubeasz/roles/docker/tasks/main.yml文件的最后加上拷贝的任务; - name: mkdir datadir file: path=/etc/docker/certs.d/k8s-harbor.taozi.net/ state=directory - name: 下载harbor的证书文件 copy: src=ca.crt dest=/etc/docker/certs.d/k8s-harbor.taozi.net/k8s-harbor.taozi.net mode=0644 ./ezctl setup k8s-01 03
在其他节点上验证是否能push镜像:
docker tag easzlab/kubeasz:3.2.0 k8s-harbor.taozi.net/test/easzlab/kubeasz:3.2.0 docker push k8s-harbor.taozi.net/test/easzlab/kubeasz:3.2.0
#查看docker的版本
./bin/docker version
执行04:,安装master节点:
证书相关信息放在roles/kube-master/templates/kubernetes-csr.json.j2内,如需要修改可以自行修改:
kubernetes apiserver 使用对等证书,创建时hosts字段需要配置:
- 如果配置 ex_lb,需要把 EX_APISERVER_VIP 也配置进去
- 如果需要外部访问 apiserver,可选在config.yml配置 MASTER_CERT_HOSTS
- kubectl get svc 将看到集群中由api-server 创建的默认服务 kubernetes,因此也要把 kubernetes 服务名和各个服务域名也添加进去
./ezctl setup k8s-01 04
注意:往master会请求VIP,这里要注意haproxy的配置一定要正确,后端服务器如果专项不对,master会起不来;
kubectl get node
执行05:,安装node节点:
注意:在roles/kube-node/templates/kubelet.service.j2里面有个基础容器
- --pod-infra-container-image 指定基础容器(负责创建Pod 内部共享的网络、文件系统等)镜像,K8S每一个运行的 POD里面必然包含这个基础容器,如果它没有运起来那么你的POD 肯定创建不了,kubelet日志里面会看到类似 FailedCreatePodSandBox 错误,可用docker images 查看节点是否已经下载到该镜像
这个选项是一个变量SANDBOX_IMAGE,查询这个变量,在/clusters/k8s-01/config.yml找到:
注意:这一步需要修改两个的值:
在运行脚本下载的时候,使用的是ezdown这个,里面存在一些下划线的变量值,下载时ezdown和ezctl会相互调用,ezctl脚本内把类似于”__flannel__“的镜像版本变量值全部替换具体的值,如下图,
但是在进行到步骤05和06的时候,并没有调用把这些变量替换,造成k8s在run的时候全部是镜像无法拉下来,如下图:
需要修改easzlab/pause版本(对应变量SANDBOX_IMAGE)和easzlab/flannel版本(对应变量flannelVer)镜像版本的值;
先docker images查询已经下载的这两个镜像的的版本:
进行修改:
vim clusters/k8s-01/config.yml
grep easzlab/flannel . -R vim clusters/_cluster_name_/yml/flannel.yaml
在每个节点查询有无easzlab/pause镜像:
docker images
./ezctl setup k8s-01 05 kubectl get node
执行06,安装网络组件:(只能选一种组件)
使用flannel支持网络需要修改变量flannelver的值,这里修改为:flannelVer: "v0.15.1"
使用calico支持网络需要修改变量calico_ver的值,这里修改为:calico_ver: "v3.15.5"
./ezctl setup k8s-01 06
完成后等待容器都running
查看kubelet状态
journalctl -f -u kubelet
查命令:
查命令: kubectl describe pod net-test1 --namespace=default kubectl describe pod kube-flannel-ds-8zdb8 --namespace=kube-system kubectl get svc kubectl get endpoints kubernetes --namespace=default -o yaml 删除pod: kubectl delete pod kube-flannel-ds-jqcqk --namespace=kube-system 检查日志: kubectl logs --namespace=kube-system kube-flannel-ds-5d7jf kubectl get events 查看kube-controller-manager启动状态 systemctl status kube-controller-manager -l
启动后需要验证网络通不通
1. 启动deploy
kubectl create deployment deployment-nginx --image=k8s-harbor.taozi.net/test/nginx:1.14-alpine
2. scale 3个
kubectl scale --replicas=3 deployments.apps/deployment-nginx
3. 查看位于不同节点的pod 能否基于端口通信
查看3个pod的地址,条算任意一个进去
kubectl exec -it deployment-nginx-7fd9bb74cc-9f68b -- sh
验证内网:
验证外网:
增加和删除节点:
新增kube_node节点大致流程为:(参考ezctl 里面add-node函数 和 playbooks/22.addnode.yml)
ezctl add-node k8s-01 192.168.37.110 # 假设待增加节点为 192.168.37.110,如需要重新加该节点,请删除hosts文件的该节点IP ezctl del-node k8s-01 192.168.37.110 # 假设待删除节点为 192.168.37.110
配置 ssh 免密码登录新增节点,然后执行 (假设待增加节点为 192.168.1.11, 集群名称test-k8s):
$ ezctl add-master test-k8s 192.168.1.11 $ ezctl del-master test-k8s 192.168.1.11 # 假设待删除节点 192.168.1.11
版本升级:
先备份目前的二进制文件:
master:kube-apiserver kubectl kube-proxy kube-controller-manager kubelet kube-scheduler
node:kubectl kubelet kube-proxy
执行07,安装k8s的组件
安装DNS和dashboard:
/ # cat /etc/resolv.conf nameserver 169.254.20.10 search default.svc.taizo.local svc.taizo.local taizo.local taozi.net options ndots:5
生产环境的推荐DNS的容器配置:2和4G
修改vim clusters/k8s-01/config.yml中的几个变量:
vim clusters/k8s-01/config.yml dashboard_install: "yes" dns_install: "yes" corednsVer: "1.8.6" dnsNodeCacheVer: "1.21.1" LOCAL_DNS_CACHE: "169.254.20.10" metricsVer: "v0.5.2" dashboardVer: "v2.4.0" dashboardMetricsScraperVer: "v1.0.7"
相当于修改这里的yml文件(不建议这样修改,ansible已执行,就会重新生成yaml文件,所以还是该上面的变量)
image: easzlab/k8s-dns-node-cache:__dns_node_cache__ clusters/_cluster_name_/yml/nodelocaldns.yaml
image: easzlab/metrics-server:__metrics__ clusters/_cluster_name_/yml/metrics-server.yaml
image: coredns/coredns:__coredns__ clusters/_cluster_name_/yml/coredns.yaml
image: kubernetesui/dashboard:__dashboard__ clusters/_cluster_name_/yml/dashboard/kubernetes-dashboard.yaml
image: kubernetesui/metrics-scraper:__dash_metrics__ clusters/_cluster_name_/yml/dashboard/kubernetes-dashboard.yaml
#如果是生产环境的话,将下面一行修改成,forward修改为公司内部的dns服务器
vim roles/cluster-addon/templates/dns/nodelocaldns-ipvs.yaml.j2 #forward . __PILLAR__UPSTREAM__SERVERS__ forward . 223.6.6.6
参考资料-在 Kubernetes 集群中使用 NodeLocal DNSCache:https://kubernetes.io/zh/docs/tasks/administer-cluster/nodelocaldns/
执行ansible:
ezctl setup k8s-01 07
测试DNS:
kubectl exec -it deployment-nginx-7fd9bb74cc-9f68b -- sh ping kube-dns-upstream.kube-system.svc.taozi.local ping kube-dns.kube-system.svc.taozi.localping www.jd.com -c1
安装dashboard先查询兼容情况:https://github.com/kubernetes/dashboard/releases
dashboard的最新版本是v2.4.0只兼容到k8s:1.21,现在使用的k8s:1.23,应该是兼容性的问题,造成无法进入dashboard:
查看dashboard的打开的端口
kubectl get svc -A
网页进行登录:
查看令牌:
kubectl get secret -A | grep admin
kubectl describe secret -n kube-system admin-user-token-r9qtc
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)