一、文章推荐

kubectl入门命令

二、images

1.imagePullSecrets

1.1 前言

Kubernetes常用的Secret有以下3种,本章节的主要讲kubernetes.io/dockercfg也就是imagePullSecrets对应的Secret类型。
Opaque(default): 任意字符串
kubernetes.io/service-account-token: 作用于ServiceAccount,就是上面说的。
kubernetes.io/dockercfg: 作用于Docker registry,用户下载docker镜像认证使用。

1.2 docker客户端认证

docker私服镜像的拉取认证配置文件默认在~/.docker/config.json
可以通过cat ~/.docker/config.json命令查询认证内容
其中auth属性使用 base64加密(可逆)。

{
    "auths": {
        "192.168.10.122": {
            "auth": "YWRtaW46SGFyYm9yMTIzNDU="
        }
    },
    "HttpHeaders": {
        "User-Agent": "Docker-Client/19.03.1 (linux)"
    }
}
  • 加密过程
echo -n "admin:Harbor12345" | base64
  • 解密过程
echo -n "YWRtaW46SGFyYm9yMTIzNDU=" | base64 -d
1.3 Docker registry Secret创建

Docker registry Secret创建有以下几种方式

  • 使用客户端认证配置文件~/.docker/config.json创建
kubectl create secret generic harborsecret \
    --from-file=.dockerconfigjson=/root/.docker/config.json \
    --type=kubernetes.io/dockerconfigjson

  • 使用密码创建
kubectl create secret docker-registry harborsecret --docker-server=<your-registry-server> --docker-username=<your-name> --docker-password=<your-pword> --docker-email=<your-email>
  • 复制现有apply -f harborsecret.yaml
kubectl -n test get secret othersecret -o yaml
apiVersion: v1
kind: Secret
metadata:
  name: harborsecret
  namespace: test
data:
  .dockerconfigjson: ewoJImF1dGhzIjogewoJCSIxOTIuMTY4LjEwLjEyMiI6IHsKCQkJImF1dGgiOiAiWVdSdGFXNDZTR0Z5WW05eU1USXpORFU9IgoJCX0KCX0sCgkiSHR0cEhlYWRlcnMiOiB7CgkJIlVzZXItQWdlbnQiOiAiRG9ja2VyLUNsaWVudC8xOS4wMy4xIChsaW51eCkiCgl9Cn0=
type: kubernetes.io/dockerconfigjson
kubectl -n test apply -f harborsecret.yaml

最终生成的Secret使用base64加密(可逆)

  • 加密过程

将整个客户端认证配置文件~/.docker/config.json内容通过base64加密之后,作为.dockerconfigjson属性值

cat ~/.docker/config.json | base64
  • 解密过程
kubectl get secrets harborsecret --output="jsonpath={.data.\.dockerconfigjson}" | base64 -d

三、host映射

      hostAliases:
      - ip: "192.168.1.100"
        hostnames:
        - "client1.org.com"

三、版本及资源

  • 客户端和服务端版本号
kubectl version -o json
  • api-resources版本
kubectl api-resources |grep deployment

extensions/v1beta1apps/v1区别:
extensions/v1beta1 和 apps/v1 是 Kubernetes 中的两个不同的 API 版本,用于部署和管理应用程序。它们之间的主要区别在于 API 的可用功能和使用的 Kubernetes 版本。
extensions/v1beta1 是旧版本的 API,已从 Kubernetes 1.16 版本起弃用。 它仍然可用于较早的 Kubernetes 版本,但现在已不再推荐使用。其中一个主要的资源是 Deployment,还有其他如 Ingress 和 ReplicaSet 等资源。
apps/v1 是新版本的 API,已从 Kubernetes 1.9 版本起开始引入,是部署应用程序的新标准。 其中一个主要的资源是 Deployment,还有包括 StatefulSet 在内的其他控制器。apps/v1 还引入了一些新功能,如 Rolling Updates 和 Rollbacks 等。
因此,建议使用 apps/v1 而不是 extensions/v1beta1,以便使用更多功能并保持对 Kubernetes 最新版本的兼容性

参考:
k8s的imagePullSecrets如何生成及使用
k8s deployment 添加hosts

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐