目录

    主要记录最近遇到的一些开发问题,解决方法。

    1. 打开 OS X 原生 NTFS 支持

    1. 插上磁盘,查看盘符
    diskutil list
    diskutil list
    /dev/disk2 (external, physical):
       #:                       TYPE NAME                    SIZE       IDENTIFIER
       0:     FDisk_partition_scheme                        *96.9 GB   disk2
       1:               Windows_NTFS SSD                      96.8 GB   disk2s1
    

    这里的 SSD 就是 Volume Name。

    1. 更新 /etc/fstab文件
    sudo nano /etc/fstab
    

    输入密码,然后输入 LABEL=SSD none ntfs rw,auto,nobrowse,其中 SSD 为 Volume Name。

    按 Ctrl + X,接着按 Y 保存。

    1. 创建访问链接
    sudo ln -s /Volumes/SSD ~/Desktop/SSD
    

    SSD 为 Volume Name ,需要更具具体情况替换。

    2. Docker 内部访问宿主机服务

    在 Docker 中,直接使用 localhost 访问宿主机服务,报错网络不通,需要借助 docker0 。

    • 在 Linux 中,查看宿主机 docker0 的 IP 地址,执行命令:
    ip addr show docker0
    
    • 在 OS X 中,可以直接使用地址。
    docker.for.mac.host.internal
    

    3. Kubectl 配置多个集群

    在进行 Kubernetes 相关开发时,通常会涉及多个集群的管理。Kubectl 提供了多集群上下文管理的功能。

    通常 Kubectl 的配置信息在 $HOME/.kube/config/etc/kubernetes/admin.conf 。登陆机器,查看集群的配置信息,按照下面的格式进行编辑。

    kubeconfig 配置格式

    apiVersion: v1
    kind: Config
    preferences: {}
    
    clusters:
    - cluster:
        certificate-authority-data: xxx
        server: xxx
      name: {cluster-name1}
    - cluster:
        certificate-authority-data: xxx
        server: xxx
      name: {cluster-name2}
    
    users:
    - name: {user-name1}
      user: xxx
    - name: {user-name2}
      user: xxx
    
    contexts:
    - context:
        cluster: {cluster-name1}
        user: {user-name1}
      name: {context-name1}
    - context:
        cluster: {cluster-name2}
        user: {user-name2}
      name: {context-name2}
    
    current-context: {context-name1}
    

    查看集群

    kubectl config get-contexts
    

    查看 config 信息

    kubectl config view
    

    切换集群

    kubectl config use-context {context-name}
    

    4. helm 提示 cannot get resource “namespaces”

    使用 helm 安装应用:

    helm install --name prometheus-operator --namespace=monitoring stable/prometheus-operator
    Error: namespaces "monitoring" is forbidden: User "system:serviceaccount:kube-system:default" cannot get resource "namespaces" in API group "" in the namespace "monitoring"
    

    解决办法,添加服务账号:

    kubectl create serviceaccount --namespace kube-system tiller
    kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
    kubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'