k8s-相关问题

附1:配置dokcer socks5代理

mkdir /lib/systemd/system/docker.service.d/

cat >/lib/systemd/system/docker.service.d/socks5-proxy.conf<

附2:开启Pod Preset

  • 特性状态:Kubernetes v1.6 [alpha]

Pod Preset 是一种 API 资源,在 Pod 创建时,用户可以用它将额外的运行时需求信息注入 Pod。 使用标签选择算符 来指定 Pod Preset 所适用的 Pod。

  1. 已启用 API 类型 settings.k8s.io/v1alpha1/podpreset。 例如,这可以通过在 API 服务器的 --runtime-config 配置项中包含
  2. 已启用准入控制器 PodPreset。 启用的一种方式是在 API 服务器的 --enable-admission-plugins 配置项中包含 PodPreset
20c20
<     - --enable-admission-plugins=NodeRestriction,PodPreset
---
>     - --enable-admission-plugins=NodeRestriction
42d41
<     - --runtime-config=settings.k8s.io/v1alpha1/podpreset

附3:证书年限修改

查看当前证书使用年限

cd /etc/kubernetes/pki/
openssl x509 -in apiserver.crt -text -noout

cfssl-certinfo -cert apiserver.crt

配置go语言环境go下载地址

tar axf go1.15.3.linux-amd64.tar.gz  -C  /usr/local/
cat >>/etc/profile<<\EOF
export PATH=$PATH:/usr/local/go/bin
EOF
go version

# 下载kubeadm源码
git clone  https://github.com/kubernetes/kubernetes.git
# 查看本机kubeadm版本
kubeadm version

# 切换版本
git checkout -b remotes/origin/release-1.19.2  v1.19.2 

# 编辑cmd/kubeadm/app/util/pkiutil/pki_helpers.go 在1.14版本前是staging/src/k8s.io/client-go/util/cert/cert.go 
# 在此行func NewSignedCert   下面添加
        const duration3650d = time.Hour * 24 * 365 * 10
# 修改此行
                NotAfter:     time.Now().Add(duration3650d).UTC(),


make WHAT=cmd/kubeadm GOFLAGS=-v


# 将kubeadm进行替换
mv  /usr/bin/kubeadm /usr/bin/kubeadm.old
cp _output/bin/kubeadm /usr/bin/kubeadm
chmod a+x /usr/bin/kubeadm
cp -r /etc/kubernetes/pki/  /etc/kubernetes/pki.old
cd /etc/kubernetes/pki

# 您可以随时使用该kubeadm alpha certs renew命令手动续订证书。
# 如果您正在运行HA群集,则需要在所有控制平面节点上执行此命令
kubeadm alpha certs renew all --config=/root/kubeadm-config.yaml  # kubeadm-config.yaml是安装时配置用的yaml文件
 
cd /etc/kubernetes/pki
# 查看更改后结果 
openssl x509 -in apiserver.crt -text -noout | grep Not

# 可以使用check-expiration子命令来检查证书何时过期,kubeadm无法管理由外部CA签名的证书。
kubeadm alpha certs check-expiration

附4:docker相关

更改docker存储目录

/lib/systemd/system/docker.service

ExecStart=/usr/bin/dockerd-current --graph /data/docker

用户名称空间user namespace

  • 运行docker deamon进程的时候加入参数--userns-remap=default,如:ubuntu中是修改/etc/default/docker中的DOCKER_OPTS,追加配置--userns-remap=default
  1. 容器内,看上去仍然是root用户.即:有了user namespace之后,可以将宿主机上的普通用户映射为容器的root用户.

  2. 默认docker新建了一个用户和用户组都叫做dockremap容器内的root用户映射到宿主机的这个dockremap用户上.cat /etc/passwd

  3. 自定义映射用户首先在宿主机上创建用户及用户组,在启动docker deamon的时候传入如下参数.

--userns-remap=
--userns-remap=:
--userns-remap=
--userns-remap=:


4. 有些情况下我们可能需要回到没有开启用户隔离的场景,这时可以通过 --userns=host 参数为单个的容器禁用用户隔离功能



### 附5:Token失效



```sh
# 创建新的token         --ttl duration     默认值:24h0m0s   0永不过期
kubeadm token create --ttl 0

# 查看创建的token
kubeadm token list

# 获取--discovery-token-ca-cert-hash值
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'


# 在master上生成用于新master加入的证书    phase 指定项目初始化
# 使用以下阶段将控制平面证书上传到集群。默认情况下,证书和加密密钥会在两个小时后过期
kubeadm init phase upload-certs --upload-certs

你可能感兴趣的:(k8s-相关问题)