kubeadm HA master(v1.13.0)离线包 + 自动化脚本 + 常用插件 For Centos/Fedora

0x00 文章楔子

本文停止后续维护,请转至:

kubeadm HA master(v1.14.0)离线包 + 自动化脚本 + 常用插件 For Centos/Fedora

本文面向具有一定K8s使用经验的读者

1.13.0版本的kubeadm有了一个较大的发展,kubeadm配置文件的API已经进入了beta阶段。
并且kubeadm已经实验性的启用了直接通过kubeadm join命令构建HA master的功能,很大程度上简化了HA master的构建过程。
另一方面,heapster项目已经被废弃并从1.13.0版本开始停止支持,未来建议使用metrics和Prometheus代替。

本系列从1.13.0版本开始将直接使用kubeadm join实现HA master,也不再提供heapster插件,而是使用metrics替代之。
本方案中升级内核是必要的,为私有仓库单独准备一台机器也是必要的,如果私自跳过步骤或调整结构,个人对脚本运行的结果不做保证

本文中的自动化部署脚本可以在Lentil1016/kubeadm-ha找到,欢迎Star/Fork/提issue和PR。
在我的环境上进行示例自动化部署的录像可以在该链接查看

集群方案:

  • 发行版:CentOS 7
  • 容器运行时:Docker-17.03.2-ce
  • 内核: 4.19.6-300.fc29.x86_64
  • 版本:Kubernetes: 1.13.0
  • 网络方案: Calico
  • kube-proxy mode: IPVS
  • master高可用方案:keepalived LVS
  • DNS插件: CoreDNS
  • metrics插件:metrics-server
  • 界面:kubernetes-dashboard
  • ingress控制器:traefik

0x01 Kubernetes集群搭建

集群结构摘要

此处为举列说明,假定各个机器的主机信息以及IP分布如下,需要额外说明的是,由于私有仓库需要占用80端口,与ingress controller冲突,因此为私有仓库单独准备一台机器是必要的:

Host Name Role IP
registry image registry 10.130.38.80
centos-7-x86-64-29-80 master-1 10.130.29.80
centos-7-x86-64-29-81 master-2 10.130.29.81
centos-7-x86-64-29-82 master-3 10.130.29.82
Virtual IP 10.130.29.83
node1 worker 10.130.38.105
node2 worker 10.130.38.106
node3 worker 10.130.38.107

进行系统配置

在所有机器上下载内核rpm包,并且执行下面的脚本,配置注记:

  • 关闭防火墙、selinux
  • 关闭系统的Swap,Kubernetes 1.8开始要求。
  • 关闭linux swap空间的swappiness
  • 配置L2网桥在转发包时会被iptables的FORWARD规则所过滤,该配置被CNI插件需要,更多信息请参考Network Plugin Requirements
  • 升级内核到最新,原因见issue#19
  • 开启IPVS
# 所有主机:基本系统配置

# 关闭Selinux/firewalld
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
 
# 关闭交换分区
swapoff -a
yes | cp /etc/fstab /etc/fstab_bak
cat /etc/fstab_bak |grep -v swap > /etc/fstab
 
# 设置网桥包经IPTables,core文件生成路径
echo """
vm.swappiness = 0
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
""" > /etc/sysctl.conf
sysctl -p
 
# 同步时间
yum install -y ntpdate
ntpdate -u ntp.api.bz
 
# 升级内核
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm ;yum --enablerepo=elrepo-kernel install kernel-ml-devel kernel-ml -y
 
# 检查默认内核版本是否大于4.14,否则请调整默认启动参数
grub2-editenv list
 
#重启以更换内核
reboot
 
# 确认内核版本后,开启IPVS
uname -a
cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
ipvs_modules="ip_vs ip_vs_lc ip_vs_wlc ip_vs_rr ip_vs_wrr ip_vs_lblc ip_vs_lblcr ip_vs_dh ip_vs_sh ip_vs_fo ip_vs_nq ip_vs_sed ip_vs_ftp nf_conntrack"
for kernel_module in \${ipvs_modules}; do
 /sbin/modinfo -F filename \${kernel_module} > /dev/null 2>&1
 if [ $? -eq 0 ]; then
 /sbin/modprobe \${kernel_module}
 fi
done
EOF
chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep ip_vs

执行sysctl -p报错请参考centos7添加bridge-nf-call-ip6tables出现No such file or directory

Kubernetes要求集群中所有机器具有不同的Mac地址、产品uuid、Hostname。可以使用如下命令查看Mac和uuid

# 所有主机:检查UUID和Mac

cat /sys/class/dmi/id/product_uuid
ip link

安装配置Docker

Docker从1.13版本开始调整了默认的防火墙规则,禁用了iptables filter表中FOWARD链,这样会引起Kubernetes集群中跨Node的Pod无法通信,因此docker安装完成后,还需要手动修改iptables规则。

安装私有镜像库

如果不能翻墙,需要使用本文提供的私有镜像源,则还需要为docker做如下配置,将K8s官方镜像库的几个域名设置为insecure-registry,然后设置hosts使它们指向私有源。

# 所有主机:http私有源配置

# 为Docker配置一下私有源
mkdir -p /etc/docker
echo -e '{\n"insecure-registries":["k8s.gcr.io", "gcr.io", "quay.io"]\n}' > /etc/docker/daemon.json
systemctl restart docker
 
# 此处应当修改为registry所在机器的IP
REGISTRY_HOST="10.130.38.80"
# 设置Hosts
yes | cp /etc/hosts /etc/hosts_bak
cat /etc/hosts_bak|grep -vE '(gcr.io|harbor.io|quay.io)' > /etc/hosts
echo """
$REGISTRY_HOST gcr.io harbor.io k8s.gcr.io quay.io """ >> /etc/hosts

下载链接:链接:https://pan.baidu.com/s/1ZdmgnrYGVobc22FX__vYwg 提取码:69gq ,随后将该文件放置到registry机器上,并在registry主机上加载、启动该镜像

# registry:启动私有镜像库
docker load -i /path/to/k8s-repo-1.13.0
docker run --restart=always -d -p 80:5000 --name repo harbor.io:1180/system/k8s-repo:v1.13.0

该镜像库中包含如下镜像,全部来源于官方镜像站。

1.13.0版本镜像列表

安装配置kubernetes

基本安装

首先下载链接:链接:https://pan.baidu.com/s/1t3EWAt4AET7JaIVIbz-zHQ 提取码:djnf ,并放置在k8s各个master和worker主机上

# master & worker:安装kubernetes

yum install -y socat keepalived ipvsadm
cd /path/to/downloaded/file
tar -xzvf k8s-v1.13.0-rpms.tgz
cd k8s-v1.13.0
rpm -Uvh * --force
systemctl enable kubelet
kubeadm version -o short

配置免密码登陆

# master-1:生成ssh密钥对

ssh-keygen
# 三次回车后,密钥生成完成
cat ~/.ssh/id_rsa.pub
# 得到该机器的公钥如下图

将该公钥复制,并分别登陆到master-1 master-2 master-3的root用户,将它令起一行粘贴到 ~/.ssh/authorized_keys 文件中,包括master-1自己

复制完成后,从master-1上分别登陆master-1 master-2 master-3测试是否可以免密码登陆(请不要跳过这一步),可以的话便可以继续执行下一步

部署HA Master

HA Master的部署过程已经自动化,请在master-1上执行如下命令,并注意修改IP

# 部署HA master

cd ~/
 
# 创建集群信息文件
echo """
CP0_IP=10.130.29.80
CP1_IP=10.130.29.81
CP2_IP=10.130.29.82
VIP=10.130.29.83
NET_IF=eth0
CIDR=10.244.0.0/16
""" > ./cluster-info
 
bash -c "$(curl -fsSL https://raw.githubusercontent.com/Lentil1016/kubeadm-ha/1.13.0/kubeha-gen.sh)"
# 该步骤将可能持续2到10分钟,在该脚本进行安装部署前,将有一次对安装信息进行检查确认的机会

可以在该链接查看我在自己的环境上安装全过程的录像,安装结束后会打印出如下的信息,最后一行为加入集群的命令。

访问dashboard

如果需要访问kubernetes dashboard或traefik dashboard,只需要在浏览器所在机器上配置到任意master的hosts解析,然后访问对应域名即可。

echo """
10.130.29.80 dashboard.multi.io ingress.multi.io""" >> /etc/hosts

测试发现有时kubernetes dashboard容器会不响应请求,如果出现该情况请尝试删除dashboard的pod以重新启动该pod,即可解决该问题。

安装helm

如果需要安装helm,请先下载离线包链接:链接:https://pan.baidu.com/s/1B7WHuomXOmZKhHai4tV5MA 提取码:kgzi

cd /path/to/helm-v2.12.0-linux-amd64.tar/
tar -xzvf helm-v2.12.0-linux-amd64.tar
cd linux-amd64
cp helm /usr/local/bin
helm init --service-account=kubernetes-dashboard-admin --skip-refresh --upgrade
helm version

加入work node

现在可以将各节点入编到集群中。join command是由kubeadm动态生成的,其基本形式如下

# worker:将worker编入集群
kubeadm join 10.130.29.83:6443 --token 4n3hvt.sb8qjmno6l47tsww --discovery-token-ca-cert-hash sha256:a7f1de577bd8677a5d7fe4d765993645ae25d8b52a63a1133b74a595a7bb2e0f

其中包含了节点入编集群所需要携带的验证token,以防止外部恶意的节点进入集群。每个token自生成起24小时后过期。届时如果需要加入新的节点,则需要重新生成新的join token,请使用下面的命令生成,注意改写IP:

# master-1:生成指向VIP的Join Command
kubeadm token create --print-join-command|sed 's/${LOCAL_IP}/${VIP}/g'

随后到worker节点执行刚刚生成的join command即可将该节点编入集群。

至此,HA master Kubernetes 集群搭建完毕

K8S中文社区微信公众号

评论 75

登录后评论

立即登录  

  1. #25

    谢谢博主,初学者受益匪浅。终端界面非常好看,能分享一下怎么弄的吗?

    Bowen5年前 (2018-12-10)
    • 安装zsh和oh-my-zsh后,使用我的主题https://github.com/Lentil1016/lent-dotfile/blob/master/.zshrc即可

      lentil10165年前 (2018-12-11)
  2. #24

    不需要

    lentil10165年前 (2018-12-11)
    • [root@master1 k8s-v1.13.0]# rpm -Uvh *
      warning: 26d0db769cb8f64b417c3bbdcb24b7214f63d211fb889de55fe2fecc440e8fa7-kubelet-1.13.0-0.x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID 3e1ba8d5: NOKEY
      error: Failed dependencies:
      cri-tools >= 1.11.0 is needed by kubeadm-1.13.0-0.x86_64

      大规模地5年前 (2018-12-11)
      • 我重新打包上传了k8s-v1.13.0-rpms.tgz,烦请重新下载一下
        链接:https://pan.baidu.com/s/1t3EWAt4AET7JaIVIbz-zHQ 提取码:djnf

        lentil10165年前 (2018-12-11)
        • 我已经解决了,TKS;
          另外最上方的表格中:– Virtual IP 10.130.29.83
          是什么意思?

          大规模地5年前 (2018-12-11)
        • 创建完成后,dashboard要访问这个Virtual IP吗,可是出现以下错误:{
          “kind”: “Status”,
          “apiVersion”: “v1”,
          “metadata”: {},
          “status”: “Failure”,
          “message”: “forbidden: User \”system:anonymous\” cannot get path \”/\””,
          “reason”: “Forbidden”,
          “details”: {},
          “code”: 403
          }

          大规模地5年前 (2018-12-11)
          • kube-system traefik-ingress-controller-4zv69 0/1 Error 3 45s
            一共三个。始终有一个ingress起不来

            大规模地5年前 (2018-12-11)
          • 访问dashboard的方式文章里有写

            lentil10165年前 (2018-12-11)
  3. #23

    bash -c “$(curl -fsSL https://raw.githubusercontent.com/Lentil1016/kubeadm-ha/1.13.0/kubeha-gen.sh)”
    # 该步骤将可能持续2到10分钟,在该脚本进行安装部署前,将有一次对安装信息进行检查确认的机会
    ======
    这个脚本我运了三次,没有影响吧

    大规模地5年前 (2018-12-11)
  4. #22

    在设置好集群ip,执行脚本时出现了一系列错误:

    1.Common Name (eg, your name or your server’s hostname) []:*.multi.io
    Email Address []:lentil1016@gmail.com
    Error from server (InternalError): an error on the server (“”) has prevented the request from succeeding
    unable to recognize “https://raw.githubusercontent.com/Lentil1016/kubeadm-ha/1.13.0/plugin/traefik.yaml”: an error on the server (“”) has prevented the request from succeeding

    2.cp: 无法创建普通文件”:/etc/keepalived/keepalived.conf”: 没有那个文件或目录
    ssh: Could not resolve hostname
    systemctl restart keepalived
    kubeadm reset -f
    rm -rf /etc/kubernetes/pki/: Name or service not known
    apiServer.certSANs: Invalid value: “”: altname is not a valid dns label or ip address
    cp: 无法获取”/etc/kubernetes/admin.conf” 的文件状态(stat): 没有那个文件或目录

    3.unable to recognize “STDIN”: an error on the server (“”) has prevented the request from succeeding

    Bowen5年前 (2018-12-11)
  5. #21

    [root@master1 k8s]# chmod 755 /lib/modules/ipvs.modules && bash /lib/modules/ipvs.modules && lsmod | grep ip_vs
    modprobe: FATAL: Module ip_vs_fo not found.

    大规模地5年前 (2018-12-11)
    • 内核没升级

      lentil10165年前 (2018-12-11)
    • 参考:https://github.com/coreos/bugs/issues/2518
      好像内核不支持,运行modprobe nf_conntrack就行

      will5年前 (2018-12-11)
      • 他的是另一个模块,是ip_vs_fo找不到,他用的是3.10内核。另外内核nf_conntrack模块的问题已经在1.13.0版本中修复,参考https://github.com/Lentil1016/kubeadm-ha/issues/14。我的脚本中加载的也是nf_conntrack,理应没有问题。

        lentil10165年前 (2018-12-11)
  6. #20

    大哥,k8s的百度云盘链接失效了,再给分享一下吧,谢谢。

    will5年前 (2018-12-11)
    • 不好意思看错了,链接没问题。

      will5年前 (2018-12-11)
  7. #19

    您好,请问这个Master 1 ,Master 2,Master 3 的 ip地址是怎么来的,是虚拟机的IP地址吗,还是自己定的, 而且VIP 和 NODE的 IP 又都是怎么来的呢?

    lIlIlIlI5年前 (2018-12-11)
    • 全部要自己规划

      lentil10165年前 (2018-12-11)
      • 比方说,我的虚拟机的IP地址是111.111.111.111,那么我想让这个虚拟机作为master1 那么我的master1的ip地址必须也是111.111.111.111吗?

        IIllliII5年前 (2018-12-11)
        • 是的

          lentil10165年前 (2018-12-12)
          • cluster-info:
            master-01: 192.168.47.5
            master-02:
            master-02:
            VIP: 192.168.47.4
            Net Interface: ens33
            CIDR: 192.168.0.0/16
            这样为什么不可以

            IIllliII5年前 (2018-12-12)
  8. #18

    最后总是提示这个:
    [discovery] Failed to request cluster info, will try again: [Get https://192.168.92.59:6443/api/v1/namespaces/kube-public/configmaps/cluster-info: dial tcp 192.168.92.59:6443: connect: connection refused]

    will5年前 (2018-12-11)
    • 看一下keepalived有没有启动

      lentil10165年前 (2018-12-12)
      • 你好,我也遇到同样的问题,查看keepalived是起来了,但是keepalived日志中有报错信息
        Dec 12 01:39:36 cassandra-4 Keepalived_healthcheckers[10679]: HTTP status code success to [10.0.221.128]:6443 url(1).
        Dec 12 01:39:36 cassandra-4 Keepalived_healthcheckers[10679]: Remote Web server [10.0.221.128]:6443 succeed on service.
        Dec 12 01:39:36 cassandra-4 Keepalived_healthcheckers[10679]: Adding service [10.0.221.128]:6443 to VS [10.0.221.250]:6443
        Dec 12 01:39:36 cassandra-4 Keepalived_healthcheckers[10679]: IPVS (cmd 1159, errno 2): No such file or directory

        muye5年前 (2018-12-12)
        • 解决了么?我的也一样,Master的HA切换不正常

          406120255年前 (2018-12-26)
        • keepalived.conf里的 nat_mask 255.255.255.0错了,改为 net_mask 255.255.255.0,就可以了

          benny_zeng5年前 (2019-01-25)
          • 一个是他变量名写错了,应该是net_mask
            另一个是掩码不应该给24位,改成255.255.255.255,即可!这是个主机地址,不能给网段

            Wolcen3年前 (2020-12-17)
      • 我也一样

        Steven5年前 (2018-12-12)
        • 可能是由于在keepalived启动的时候ipvs没有开启成功,首先请尝试再次运行“确认内核版本后,开启IPVS”部分的代码确认ipvs已经开启。
          然后尝试在各个节点上执行
          systemctl stop keepalived
          systemctl enable keepalived
          systemctl start keepalived

          然后查看是否依然存在该问题

          lentil10165年前 (2018-12-12)
      • keepalived.conf里的 nat_mask 255.255.255.0错了,改为 net_mask 255.255.255.0,就可以了

        benny_zeng5年前 (2019-01-25)
    • NET_IF=eht1 这个地方更改下,会识别你的网卡

      最后一个提示5年前 (2018-12-13)
  9. #17

    参考了本文和回复,现在已经成功搭好了集群,问题出在VPN的privoxy代理上,挂了代理后访问会出问题,把代理关了就好了。但是关了代理又不能科学上网了…不知道您有没有什么解决方法?试过在profile的no_porvoxy选项中加入ip地址,但是没有作用。1

    Bowen5年前 (2018-12-12)
  10. #16

    百度很贱的,不安装百度网盘就经常下载报错,建议换个别的方式。

    greenhand0005年前 (2018-12-12)
  11. #15

    k8s 1.13.0 最高支持 18.06吧。你这个不会出现不兼容吗

    yz5年前 (2018-12-13)
    • 我不清楚你是从哪里得到的消息,1.13.0的release note里写的是:kubeadm now properly recognizes Docker 18.09.0 and newer, but still treats 18.06 as the default supported version.

      lentil10165年前 (2018-12-13)
  12. #14

    感谢博主,搭建成功了,但是遇到一个小问题,docker最高支持18.6 如果直接装,可能装到18.9提示不支持.

    sagaris5年前 (2018-12-13)
    • good to know. 我没有试过,但是kubernetes 1.13.0的release note里明确的写了会识别18.09.0

      lentil10165年前 (2018-12-13)
  13. #13

    请问楼主,我的脚本成功执行了,但是get nodes的主节点只有一个master角色呢?怎么处理?

    ftlk5年前 (2018-12-14)
  14. #12

    10.192.30.114:6443: connect: connection refused [VIP]那个节点始终连不上reset] Unable to fetch the kubeadm-config ConfigMap, using etcd pod spec as fallback: failed to get config map: Get https://10.192.30.114:6443/api/v1/namespaces/kube-system/configmaps/kubeadm-config: dial tcp 10.192.30.114:6443: connect: connection refused

    stardust5年前 (2018-12-14)
  15. #11

    private registry 做上面那些配置是必要的吗 还是任何机器有docker起起来就可以了?

    stardust5年前 (2018-12-14)
    • 我不清楚这里的“那些配置”是指哪些配置,但我比较确定上面没有多余的配置,因为我一直在尝试让这篇文章变短。

      lentil10165年前 (2018-12-14)
  16. #10

    docker load -i /path/to/k8s-repo-1.13.0,执行这个命令,启动私有镜像,一直报错,请问是不是文件有问题呢?
    报错内容:Error processing tar file(exit status 1): archive/tar: invalid tar header

    docker新兵5年前 (2018-12-15)
    • 有没有试过重新下载呢?这个文件应该大多数使用这篇文章搭建的人都下过,你的包下的过程中出问题的可能性更大一些。

      lentil10165年前 (2018-12-15)
      • 你的文件没有tar后缀么?

        docker新兵5年前 (2018-12-16)
        • linux里文件名后缀不重要,你想要tar后缀可以自己加。。。。附上MD5校验值,You might need it.
          md5sum k8s-repo-1.13.0
          e281b9bbd648fa60a1793d53acd6c6e7 k8s-repo-1.13.0

          lentil10165年前 (2018-12-16)
  17. #9

    [kubelet-check] Initial timeout of 40s passed.
    [kubelet-check] It seems like the kubelet isn’t running or healthy.
    [kubelet-check] The HTTP call equal to ‘curl -sSL http://localhost:10248/healthz‘ failed with error: Get http://localhost:10248/healthz: dial tcp: lookup localhost on [::1]:53: read udp [::1]:50025->[::1]:53: read: connection refused.
    [kubelet-check] It seems like the kubelet isn’t running or healthy.
    [kubelet-check] The HTTP call equal to ‘curl -sSL http://localhost:10248/healthz‘ failed with error: Get http://localhost:10248/healthz: dial tcp: lookup localhost on [::1]:53: read udp [::1]:46286->[::1]:53: read: connection refused.
    [kubelet-check] It seems like the kubelet isn’t running or healthy.
    [kubelet-check] The HTTP call equal to ‘curl -sSL http://localhost:10248/healthz‘ failed with error: Get http://localhost:10248/healthz: dial tcp: lookup localhost on [::1]:53: read udp [::1]:43995->[::1]:53: read: connection refused.
    [kubelet-check] It seems like the kubelet isn’t running or healthy.
    [kubelet-check] The HTTP call equal to ‘curl -sSL http://localhost:10248/healthz‘ failed with error: Get http://localhost:10248/healthz: dial tcp: lookup localhost on [::1]:53: read udp [::1]:44364->[::1]:53: read: connection refused.
    [kubelet-check] It seems like the kubelet isn’t running or healthy.
    [kubelet-check] The HTTP call equal to ‘curl -sSL http://localhost:10248/healthz‘ failed with error: Get http://localhost:10248/healthz: dial tcp: lookup localhost on [::1]:53: read udp [::1]:52741->[::1]:53: read: connection refused.

    Unfortunately, an error has occurred:
    timed out waiting for the condition

    This error is likely caused by:
    – The kubelet is not running
    – The kubelet is unhealthy due to a misconfiguration of the node in some way (required cgroups disabled)

    If you are on a systemd-powered system, you can try to troubleshoot the error with the following commands:
    – ‘systemctl status kubelet’
    – ‘journalctl -xeu kubelet’

    Additionally, a control plane component may have crashed or exited when started by the container runtime.
    To troubleshoot, list all containers using your preferred container runtimes CLI, e.g. docker.
    Here is one example how you may list all Kubernetes containers running in docker:
    – ‘docker ps -a | grep kube | grep -v pause’
    Once you have found the failing container, you can inspect its logs with:
    – ‘docker logs CONTAINERID’
    error execution phase wait-control-plane: couldn’t initialize a Kubernetes cluster
    The connection to the server raw.githubusercontent.com was refused – did you specify the right host or port?
    curl: (6) Could not resolve host: raw.githubusercontent.com; Unknown error
    error: no objects passed to apply

    leejia5年前 (2018-12-22)
  18. #8

    大神,摸索了幾天,總算成功搭建了3個master節點的k8s集群,通過kubectl get pods -n kube-system
    命令查看pod也都正常運行,但無法通過瀏覽器訪問dashboard控制台,查看dashboard的pod日誌,報這個錯Metric client health check failed: the server could not find the requested resource (get services heapster),望大神可以指點下,謝謝。

    liujunfei9805年前 (2018-12-25)
  19. #7

    集群已经部署完成可以正常运行,不过Master配置了两个节点。目前的问题是试了一下HA,把Master01节点shutdown后,集群就不能用了,执行“kubectl get nodes”会卡死,直到Master01恢复正常。这个跟ETCD没有做集群有关系么?

    406120255年前 (2018-12-26)
  20. #6

    测试阶段一个master 一个node 可以吗

    ccoralaa5年前 (2019-01-16)
  21. #5

    你好,询问一下您的这套部署方案是否可以上生产环境?,

    ccoralaa5年前 (2019-01-16)
  22. #4

    修改私有镜像仓库端口后,新增work node时,pull镜像失败。请问要修改什么配置才能够访问私有镜像仓库?

    豁哥哥5年前 (2019-02-27)
  23. #3

    非常感谢!
    但是我执行完最后的脚本之后,用kubectl get nodes查看的到只有两个master,
    我确信已经改了cluster-info中的ip信息了
    还有哪里有配置么?或者可以再加一个master么?

    Ralph wong5年前 (2019-02-27)
  24. #2

    您好,非常荣幸看到你这篇文章,我按照你的脚本进行了编辑,将kubernetes版本升级到了1.13.4,一切貌似都很ok,但是安装了dashboard之后,进行dashboard token登录的时候就出现了Error during global settings reload: {data: “MSG_LOGIN_UNAUTHORIZED_ERROR↵”, status: 401, headers: ƒ, config: {…}, statusText: “Unauthorized”, …}
    GET http://dashboard.xxx.com/api/v1/rbac/status 401 (Unauthorized)
    (anonymous) @ vendor.bd425c26.js:6
    b @ vendor.bd425c26.js:6
    c @ vendor.bd425c26.js:6
    l @ vendor.bd425c26.js:6
    (anonymous) @ vendor.bd425c26.js:6
    $digest @ vendor.bd425c26.js:6
    $apply @ vendor.bd425c26.js:6
    t @ vendor.bd425c26.js:6
    s @ vendor.bd425c26.js:6
    i @ vendor.bd425c26.js:6
    ut @ vendor.bd425c26.js:6
    ct @ vendor.bd425c26.js:6
    (anonymous) @ vendor.bd425c26.js:6
    n @ vendor.bd425c26.js:6
    vendor.bd425c26.js:6 Possibly unhandled rejection: {“data”:”MSG_LOGIN_UNAUTHORIZED_ERROR\n”,”status”:401,”config”:{“method”:”GET”,”transformRequest”:[null],”transformResponse”:[null],”jsonpCallbackParam”:”callback”,”url”:”api/v1/rbac/status”,”headers”:{“Accept”:”application/json, text/plain, */*”}},”statusText”:”Unauthorized”,”xhrStatus”:”complete”,”resource”:{}}
    (anonymous) @ vendor.bd425c26.js:6
    (anonymous) @ vendor.bd425c26.js:6
    c @ vendor.bd425c26.js:6
    $digest @ vendor.bd425c26.js:6
    $apply @ vendor.bd425c26.js:6
    l @ vendor.bd425c26.js:6
    v @ vendor.bd425c26.js:6
    t @ vendor.bd425c26.js:6
    load (async)
    (anonymous) @ vendor.bd425c26.js:6
    b @ vendor.bd425c26.js:6
    c @ vendor.bd425c26.js:6
    l @ vendor.bd425c26.js:6
    (anonymous) @ vendor.bd425c26.js:6
    $digest @ vendor.bd425c26.js:6
    $apply @ vendor.bd425c26.js:6
    t @ vendor.bd425c26.js:6
    s @ vendor.bd425c26.js:6
    i @ vendor.bd425c26.js:6
    ut @ vendor.bd425c26.js:6
    ct @ vendor.bd425c26.js:6
    (anonymous) @ vendor.bd425c26.js:6
    n @ vendor.bd425c26.js:6

    flyor5年前 (2019-03-15)
  25. #1

    按照博主的例子装好了,非常感谢,辛苦博主了,不过注意几点就是用最新的18.09提示不支持,最新的5.1linux内核也是不支持,后面装的朋友注意一下。

    vincent5年前 (2019-07-07)