synchronization
This commit is contained in:
46
使用文档/K8s-Svc代理外部服务.md
Normal file
46
使用文档/K8s-Svc代理外部服务.md
Normal file
@@ -0,0 +1,46 @@
|
||||
> 本文作者:丁辉
|
||||
>
|
||||
|
||||
# K8s-Svc代理外部服务
|
||||
|
||||
> 本文以 Mysql 为例
|
||||
|
||||
1. 编辑文件
|
||||
|
||||
```bash
|
||||
vi mysql-svc.yaml
|
||||
```
|
||||
|
||||
内容如下
|
||||
|
||||
```yaml
|
||||
apiVersion: v1
|
||||
kind: Endpoints
|
||||
metadata:
|
||||
name: mysql-proxy
|
||||
namespace: default
|
||||
subsets:
|
||||
- addresses:
|
||||
- ip: 192.168.1.1
|
||||
- ip: 192.168.1.2
|
||||
ports:
|
||||
- port: 3306
|
||||
protocol: TCP
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: mysql-proxy
|
||||
namespace: default
|
||||
spec:
|
||||
ports:
|
||||
- port: 3306
|
||||
targetPort: 3306
|
||||
type: ClusterIP
|
||||
```
|
||||
|
||||
2. 部署 svc
|
||||
|
||||
```bash
|
||||
kubectl apply -f mysql-svc.yaml
|
||||
```
|
64
使用文档/Kubectl配置多集群.md
Normal file
64
使用文档/Kubectl配置多集群.md
Normal file
@@ -0,0 +1,64 @@
|
||||
> 本文作者:丁辉
|
||||
|
||||
# Kubectl配置多集群
|
||||
|
||||
## 基础命令
|
||||
|
||||
- 查看和显示当前配置的Kubernetes集群、用户和上下文等信息
|
||||
|
||||
```bash
|
||||
kubectl config view
|
||||
```
|
||||
|
||||
- 查看当前上下文(context)的名称
|
||||
|
||||
```bash
|
||||
kubectl config current-context
|
||||
```
|
||||
|
||||
- 切换当前 `kubectl` 上下文(context)
|
||||
|
||||
```bash
|
||||
kubectl config use-context $cluster-name
|
||||
```
|
||||
|
||||
## 配置Kubectl多集群
|
||||
|
||||
> 前提条件:
|
||||
>
|
||||
> 使用 `kubectl config view` 命令查看
|
||||
>
|
||||
> 1. 集群 `cluster-name` 不同(现有:cluster1 和 cluster2)
|
||||
> 2. 集群 `cluster-user` 不同(现有:kube-admin-cluster1 和 kube-admin-cluster2)s备份config文件
|
||||
|
||||
1. cluster1 和 cluster2 备份config文件
|
||||
|
||||
```bash
|
||||
cp ~/.kube/config ~/.kube/config.bak
|
||||
```
|
||||
|
||||
2. 拷贝 cluster2 config 文件到 cluster1 节点上
|
||||
|
||||
```bash
|
||||
scp ~/.kube/config root@cluster1:/root
|
||||
```
|
||||
|
||||
3. 合并配置文件
|
||||
|
||||
```bash
|
||||
KUBECONFIG=~/.kube/config:/root/config kubectl config view --flatten > /tmp/config
|
||||
```
|
||||
|
||||
4. 替换 cluster1 config 文件
|
||||
|
||||
```bash
|
||||
\mv /tmp/config ~/.kube/config
|
||||
```
|
||||
|
||||
5. 测试,在 cluster1 上切换到 cluster2
|
||||
|
||||
```bash
|
||||
kubectl config use-context cluster2
|
||||
```
|
||||
|
||||
|
73
使用文档/Kubernetes内配置域名解析.md
Normal file
73
使用文档/Kubernetes内配置域名解析.md
Normal file
@@ -0,0 +1,73 @@
|
||||
>本文作者:丁辉
|
||||
|
||||
# Kubernetes内配置域名解析
|
||||
|
||||
## 更改 Coredns 配置
|
||||
|
||||
> 不同部署方式的集群可能 Coredns 配置文件的名称也不同, 需要按照自身集群情况修改
|
||||
>
|
||||
> ```bash
|
||||
> kubectl get cm -n kube-system | grep coredns
|
||||
> ```
|
||||
|
||||
1. 备份原配置
|
||||
|
||||
```bash
|
||||
kubectl get cm coredns -n kube-system -o yaml > /root/coredns.yaml
|
||||
```
|
||||
|
||||
2. 编辑 Yaml 文件
|
||||
|
||||
```bash
|
||||
kubectl edit cm -n kube-system coredns
|
||||
```
|
||||
|
||||
添加如下内容
|
||||
|
||||
```yaml
|
||||
apiVersion: v1
|
||||
data:
|
||||
Corefile: |
|
||||
.:53 {
|
||||
errors
|
||||
health {
|
||||
lameduck 5s
|
||||
}
|
||||
ready
|
||||
kubernetes cluster.local in-addr.arpa ip6.arpa {
|
||||
pods insecure
|
||||
fallthrough in-addr.arpa ip6.arpa
|
||||
}
|
||||
|
||||
#加这一段
|
||||
#---------------------------
|
||||
hosts {
|
||||
192.168.1.10 www.demo.com
|
||||
fallthrough
|
||||
}
|
||||
#---------------------------
|
||||
|
||||
prometheus :9153
|
||||
#forward . 192.168.1.10 #或者在这里添加DNS
|
||||
forward . "/etc/resolv.conf"
|
||||
cache 30
|
||||
loop
|
||||
reload
|
||||
loadbalance
|
||||
} # STUBDOMAINS - Rancher specific change
|
||||
kind: ConfigMap
|
||||
···
|
||||
```
|
||||
|
||||
3. 重启集群内所有 Coredns 立即生效
|
||||
|
||||
> 当然这在生产并不可取, 尽量让他自行生效, 但过程较慢
|
||||
|
||||
- Rke集群
|
||||
|
||||
```bash
|
||||
kubectl delete pod -l k8s-app=kube-dns -n kube-system
|
||||
```
|
||||
|
||||
- 其他集群待写
|
||||
|
80
使用文档/Kubernetes常用命令.md
Normal file
80
使用文档/Kubernetes常用命令.md
Normal file
@@ -0,0 +1,80 @@
|
||||
> 本文作者:丁辉
|
||||
|
||||
# Kubernetes常用命令
|
||||
|
||||
- 查看资源定义都有哪些字段
|
||||
|
||||
```bash
|
||||
kubectl explain deployments.spec
|
||||
```
|
||||
|
||||
- 查看最近的事件
|
||||
|
||||
```bash
|
||||
kubectl get events --sort-by='.lastTimestamp'
|
||||
```
|
||||
|
||||
- 列出 Kubernetes 集群中可用的 API 资源
|
||||
|
||||
```bash
|
||||
kubectl api-resources
|
||||
```
|
||||
|
||||
- 设置 Kubernetes 默认命名空间
|
||||
|
||||
> 这样在执行命令的时候就可以不用指定命名空间啦
|
||||
|
||||
```bash
|
||||
kubectl config set-context --current --namespace=命名空间名称
|
||||
```
|
||||
|
||||
- 将 Kubernetes 集群的配置信息(包括集群、用户、凭据等)导出到 `~/.kube/config` 文件中
|
||||
|
||||
```bash
|
||||
kubectl config view --raw > ~/.kube/config
|
||||
```
|
||||
|
||||
- 获取 svc 的 clusterIP
|
||||
|
||||
```bash
|
||||
kubectl get svc kubernetes -o jsonpath='{.spec.clusterIP}'
|
||||
```
|
||||
|
||||
- 获取 Kubernetes 集群内部域名后缀
|
||||
|
||||
```bash
|
||||
kubectl -n kube-system get configmap/coredns -o jsonpath='{.data.Corefile}' | grep 'kubernetes' | sed 's/{//'
|
||||
```
|
||||
|
||||
- 显示有关 Kubernetes 集群的基本信息,包括控制平面组件的地址、服务的端点等
|
||||
|
||||
```bash
|
||||
kubectl cluster-info
|
||||
```
|
||||
|
||||
- 用于生成有关 Kubernetes 集群的详尽信息的完整转储
|
||||
|
||||
```bash
|
||||
kubectl cluster-info dump
|
||||
```
|
||||
|
||||
- 获取集群 Name
|
||||
|
||||
```bash
|
||||
kubectl config view --minify -o "jsonpath={.clusters[0].name}"
|
||||
```
|
||||
|
||||
- 获取集群用户
|
||||
|
||||
```bash
|
||||
kubectl config view --minify -o "jsonpath={.users[*].name}"
|
||||
```
|
||||
|
||||
- 获取集群组
|
||||
|
||||
```bash
|
||||
kubectl config view --minify -o "jsonpath={.contexts[*].context.user}"
|
||||
```
|
||||
|
||||
|
||||
|
116
使用文档/Kubernetes强制删除资源.md
Normal file
116
使用文档/Kubernetes强制删除资源.md
Normal file
@@ -0,0 +1,116 @@
|
||||
> 本文作者:丁辉
|
||||
|
||||
# Kubernetes强制删除资源
|
||||
|
||||
## 卸载 Mount 挂载
|
||||
|
||||
```bash
|
||||
umount $(mount | grep /var/lib/kubelet/pods | awk '{print $3}')
|
||||
```
|
||||
|
||||
## 强制删除 Pod
|
||||
|
||||
**指定你的 Pod 名称**
|
||||
|
||||
```bash
|
||||
POD_NAME=
|
||||
```
|
||||
|
||||
- 强制删除 Terminating Pod
|
||||
|
||||
```bash
|
||||
kubectl delete pod ${POD_NAME} --force
|
||||
```
|
||||
|
||||
- 立刻终止并强制删除 Terminating Pod
|
||||
|
||||
```bash
|
||||
kubectl delete pod ${POD_NAME} --grace-period=0 --force
|
||||
```
|
||||
|
||||
- 通过修改系统参数删除 Terminating Pod(仅Centos)
|
||||
|
||||
> 通过设置 `fs.may_detach_mounts=1` , Linux内核可以允许卸载这些挂载点,即使它们仍然被一些进程占用。
|
||||
|
||||
```bash
|
||||
sysctl -w fs.may_detach_mounts=1
|
||||
```
|
||||
|
||||
- 通过修改 finalizers 删除 Terminating Pod
|
||||
|
||||
> 当你删除一个资源(比如 Pod)时,Kubernetes 会将该资源的 finalizers 字段设置为一个非空的数组,这些 finalizers 是用来执行删除操作的一系列步骤。一旦这些步骤全部完成,Kubernetes 就会将资源完全删除。但是,有时候 Pod 可能会被卡在 Terminating 状态,无法正常删除,这可能是因为某些 finalizers 的执行未能成功完成,从而导致 Pod 无法被删除。
|
||||
|
||||
```bash
|
||||
kubectl patch pod ${POD_NAME} -p '{"metadata":{"finalizers":null}}'
|
||||
```
|
||||
|
||||
## 强制删除当前 Namespace 下所有 Pvc Pv
|
||||
|
||||
- 设置变量
|
||||
|
||||
```bash
|
||||
export YOURNAMESPACE=你的名称空间
|
||||
```
|
||||
|
||||
- 删除 Pvc
|
||||
|
||||
```bash
|
||||
for line in $(kubectl get pvc -n $YOURNAMESPACE | awk ' NR > 1{print $1}') ;do kubectl delete pvc $line -n $YOURNAMESPACE ; echo $line; done
|
||||
```
|
||||
|
||||
- 删除 Pv
|
||||
|
||||
```bash
|
||||
for line in $(kubectl get pv -n $YOURNAMESPACE | awk ' NR > 1{print $1}') ;do kubectl delete pv $line -n $YOURNAMESPACE ; echo $line; done
|
||||
```
|
||||
|
||||
- 若发现 Pv 还是删除不了
|
||||
|
||||
```bash
|
||||
for line in $(kubectl get pv -n $YOURNAMESPACE | awk ' NR > 1{print $1}') ;do kubectl patch pv $line -p '{"metadata":{"finalizers":null}}' -n $YOURNAMESPACE ; kubectl delete pv $line -n $YOURNAMESPACE ;echo $line; done
|
||||
```
|
||||
|
||||
## 强制删除 Namespace
|
||||
|
||||
**方法一**
|
||||
|
||||
- 先手动强制删除试试
|
||||
|
||||
```bash
|
||||
kubectl delete ns $YOURNAMESPACE --force --grace-period=0
|
||||
```
|
||||
|
||||
**方法二**
|
||||
|
||||
- 导出 JSON 文件
|
||||
|
||||
```bash
|
||||
kubectl get namespace $YOURNAMESPACE -o json > ns.json
|
||||
```
|
||||
|
||||
- 编辑 ns.josn 删除 finalizers 字段的值
|
||||
|
||||
```yaml
|
||||
"spec": {
|
||||
"finalizers": []
|
||||
},
|
||||
```
|
||||
|
||||
- 开启proxy
|
||||
|
||||
```bash
|
||||
kubectl proxy --port=8081
|
||||
```
|
||||
|
||||
- 删除
|
||||
|
||||
```bash
|
||||
curl -k -H "Content-Type:application/json" -X PUT --data-binary @ns.json http://127.0.0.1:8081/api/v1/namespaces/$YOURNAMESPACE/finalize
|
||||
```
|
||||
|
||||
## 删除Evicted pod
|
||||
|
||||
```bash
|
||||
kubectl get pod -A | grep Evicted | awk '{print $2" -n "$1}' | xargs kubectl delete pod
|
||||
```
|
||||
|
94
使用文档/Kubernetes拷贝文件.md
Normal file
94
使用文档/Kubernetes拷贝文件.md
Normal file
@@ -0,0 +1,94 @@
|
||||
> 本文作者:丁辉
|
||||
|
||||
# Kubernetes 拷贝文件
|
||||
|
||||
## 拷贝容器内文件到本地
|
||||
|
||||
### 方法一
|
||||
|
||||
**使用 kubectl cp 拷贝**
|
||||
|
||||
```bash
|
||||
kubectl -n 命名空间 cp 容器名:/容器内文件路径 ./拷贝到本地文件名
|
||||
```
|
||||
|
||||
> 示例:
|
||||
>
|
||||
> ```bash
|
||||
> kubectl -n test cp nginx-6db97db958-zrb7r:etc/nginx/nginx.conf ./nginx.conf
|
||||
> ```
|
||||
>
|
||||
> **执行命令提示**
|
||||
>
|
||||
> ```bash
|
||||
> tar: Removing leading `/' from member names
|
||||
> ```
|
||||
>
|
||||
> 这是在提示你在 `kubectl -n 命名空间 cp 容器名:<这里开头不用加 "/" >`
|
||||
|
||||
### 方法二
|
||||
|
||||
**寻找到本地 Docker 持久化存储 拷贝文件到本地**
|
||||
|
||||
- 获取容器 ID
|
||||
|
||||
```bash
|
||||
CONTAINER_ID=$(kubectl -n 命名空间 describe pod 容器名 | grep "Container ID:" | awk -F '/' '{print $3}')
|
||||
```
|
||||
|
||||
> 示例:
|
||||
>
|
||||
> ```bash
|
||||
> CONTAINER_ID=$(kubectl -n test describe pod nginx-6db97db958-zrb7r | grep "Container ID:" | awk -F '/' '{print $3}')
|
||||
> ```
|
||||
|
||||
- 获取存储路径
|
||||
|
||||
```bash
|
||||
docker inspect -f '{{.GraphDriver.Data.UpperDir}}' $CONTAINER_ID
|
||||
```
|
||||
|
||||
|
||||
### 方法三
|
||||
|
||||
- 获取容器名称
|
||||
|
||||
```bash
|
||||
kubectl -n 命名空间 describe pod 容器名 | grep "Containers:" -A 1
|
||||
```
|
||||
|
||||
> 示例:
|
||||
>
|
||||
> ```
|
||||
> kubectl -n test describe pod nginx-6db97db958-zrb7r | grep "Containers:" -A 1
|
||||
> ```
|
||||
|
||||
- 寻找 Docker 容器
|
||||
|
||||
```bash
|
||||
docker ps | grep 容器名称
|
||||
```
|
||||
|
||||
- 拷贝容器内文件
|
||||
|
||||
```bash
|
||||
docker cp 容器名称:/容器内路径 ./本地路径
|
||||
```
|
||||
|
||||
|
||||
## 拷贝本地文件到容器内
|
||||
|
||||
**使用 kubectl cp 拷贝**
|
||||
|
||||
```bash
|
||||
kubectl -n 命名空间 cp ./本地文件名 容器名:/容器内路径
|
||||
```
|
||||
|
||||
> 示例:
|
||||
>
|
||||
> ```bash
|
||||
> kubectl -n test cp ./default.conf nginx-6db97db958-zrb7r:/etc/nginx/conf.d/
|
||||
> ```
|
||||
|
||||
|
||||
|
34
使用文档/Kubernetes无状态容器副本管理.md
Normal file
34
使用文档/Kubernetes无状态容器副本管理.md
Normal file
@@ -0,0 +1,34 @@
|
||||
> 本文作者:丁辉
|
||||
|
||||
# Kubernetes无状态容器副本管理
|
||||
|
||||
- 更新版本
|
||||
|
||||
```bash
|
||||
kubectl rollout restart deployment $deployment
|
||||
```
|
||||
|
||||
- 查看更新状态
|
||||
|
||||
```bash
|
||||
kubectl rollout status deployment/$deployment
|
||||
```
|
||||
|
||||
- 查看版本信息
|
||||
|
||||
```bash
|
||||
kubectl rollout history deployment/$deployment
|
||||
```
|
||||
|
||||
- 撤消当前上线并回滚到以前的修订版本
|
||||
|
||||
```bash
|
||||
kubectl rollout undo deployment/$deployment
|
||||
```
|
||||
|
||||
- 回滚到指定版本
|
||||
|
||||
```bash
|
||||
kubectl rollout undo deployment/$deployment --to-revision=2
|
||||
```
|
||||
|
61
使用文档/Kubernetes节点常用操作.md
Normal file
61
使用文档/Kubernetes节点常用操作.md
Normal file
@@ -0,0 +1,61 @@
|
||||
> 本文作者:丁辉
|
||||
|
||||
# Kubernetes节点常用操作
|
||||
|
||||
## 允许节点加入集群
|
||||
|
||||
1. 查看待加入节点
|
||||
|
||||
```bash
|
||||
kubectl get csr
|
||||
```
|
||||
|
||||
2. 查看节点信息
|
||||
|
||||
```bash
|
||||
kubectl describe csr $name
|
||||
```
|
||||
|
||||
3. 批准加入
|
||||
|
||||
```bash
|
||||
kubectl certificate approve $name
|
||||
```
|
||||
|
||||
4. 查看结果
|
||||
|
||||
```bash
|
||||
kubectl get csr
|
||||
#CONDITION=Approved,Issued
|
||||
```
|
||||
|
||||
## 删除节点
|
||||
|
||||
> 在删除节点前,要先排空节点上POD
|
||||
|
||||
1. 排空POD
|
||||
|
||||
```bash
|
||||
kubectl drain <node name> --delete-local-data --force --ignore-daemonsets
|
||||
```
|
||||
|
||||
2. 删除节点
|
||||
|
||||
```bash
|
||||
kubectl delete node <node name>
|
||||
```
|
||||
|
||||
## 给节点打标签
|
||||
|
||||
- `Master` 打标签
|
||||
|
||||
```bash
|
||||
kubectl label node 192.168.1.10 node-role.kubernetes.io/master='k8s-master1'
|
||||
```
|
||||
|
||||
- `Node` 打标签
|
||||
|
||||
```bash
|
||||
kubectl label node ${node} node-role.kubernetes.io/worker=true
|
||||
```
|
||||
|
62
使用文档/Kubernetes跨命名空间访问Service.md
Normal file
62
使用文档/Kubernetes跨命名空间访问Service.md
Normal file
@@ -0,0 +1,62 @@
|
||||
> 本文作者:丁辉
|
||||
|
||||
# Kubernetes跨命名空间访问Service
|
||||
|
||||
## 使用完全限定域名 (FQDN)
|
||||
|
||||
> 在 Kubernetes 中,跨命名空间访问服务可以通过使用服务的完全限定域名 (FQDN) 或者创建服务的别名(Service Alias)来实现。下面是一些具体的方法和步骤。
|
||||
|
||||
**格式**
|
||||
|
||||
```bash
|
||||
<service-name>.<namespace>.svc.cluster.local
|
||||
```
|
||||
|
||||
**示例**
|
||||
|
||||
```bash
|
||||
kubernetes.default.svc.cluster.local:443
|
||||
```
|
||||
|
||||
**解释**
|
||||
|
||||
- **kubernetes**:这是服务 Service 的名称。
|
||||
- **default**:这指的是服务所在的命名空间。
|
||||
- **svc**:这表示这是一个服务(Service)。在 Kubernetes 中,服务是定义一组逻辑上相关的 Pod 访问规则的抽象,它允许外部访问或集群内部的负载均衡和服务发现。
|
||||
- **cluster.local**:这是集群的默认域名。在 Kubernetes 集群中,所有的内部服务都默认位于这个域。
|
||||
- **443**:这是端口号。
|
||||
|
||||
## 创建服务别名(Service Alias)
|
||||
|
||||
1. **创建一个 `Service` 对象**:在目标命名空间中创建一个新的服务对象,该对象会将流量转发到原始服务。
|
||||
|
||||
```bash
|
||||
vi service-alias.yaml
|
||||
```
|
||||
|
||||
内容如下
|
||||
|
||||
```yaml
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: kubernetes-service-alias
|
||||
namespace: default
|
||||
spec:
|
||||
type: ExternalName
|
||||
externalName: kubernetes.default.svc.cluster.local
|
||||
```
|
||||
|
||||
2. 部署 Yaml
|
||||
|
||||
```bash
|
||||
kubectl apply -f service-alias.yaml
|
||||
```
|
||||
|
||||
3. **使用别名访问服务**
|
||||
|
||||
现在,`default` 命名空间中的 Pod 可以通过 `kubernetes-service-alias` 这个服务名来访问 `kubernetes` 服务。
|
||||
|
||||
# 总结
|
||||
|
||||
通过以上方法,你可以在 Kubernetes 集群中实现跨命名空间访问服务。使用 FQDN 是最直接的方法,而使用服务别名则提供了更大的灵活性。如果需要更严格的网络控制,可以结合 NetworkPolicy 来管理跨命名空间的访问。根据你的具体需求选择合适的方法。
|
26
使用文档/挂载Configmap配置文件.md
Normal file
26
使用文档/挂载Configmap配置文件.md
Normal file
@@ -0,0 +1,26 @@
|
||||
> 本文作者:丁辉
|
||||
>
|
||||
|
||||
# 挂载Configmap配置文件
|
||||
|
||||
> 解决Kubernetes ConfigMap挂载导致容器目录覆盖的问题
|
||||
|
||||
- 创建 Configmap
|
||||
|
||||
```bash
|
||||
kubectl create configmap demo-config --from-file=./config.js
|
||||
```
|
||||
|
||||
- 编辑 POD 容器
|
||||
|
||||
```yaml
|
||||
volumeMounts:
|
||||
- name: file
|
||||
mountPath: /opt/config.js #挂载到容器内的路径
|
||||
subPath: config.js #目录内其他内容不会被清理掉
|
||||
volumes:
|
||||
- name: file
|
||||
configMap:
|
||||
name: demo-config
|
||||
```
|
||||
|
34
使用文档/查看Kubernetes内所有特权容器.md
Normal file
34
使用文档/查看Kubernetes内所有特权容器.md
Normal file
@@ -0,0 +1,34 @@
|
||||
> 本文作者:丁辉
|
||||
|
||||
# 查看Kubernetes内所有特权容器
|
||||
|
||||
1. 安装 JQ
|
||||
|
||||
- Centos
|
||||
|
||||
```bash
|
||||
yum -y install jq
|
||||
```
|
||||
|
||||
- Ubuntu
|
||||
|
||||
```bash
|
||||
apt -y install jq
|
||||
```
|
||||
|
||||
2. 查找特权容器
|
||||
|
||||
- 查找特权容器并输出命名空间、容器名
|
||||
|
||||
```bash
|
||||
kubectl get pods --all-namespaces -o json | jq '.items[] | select(.spec.containers[].securityContext.privileged==true) | {namespace: .metadata.namespace, pod: .metadata.name}'
|
||||
```
|
||||
|
||||
- 查找特权容器并输出命名空间、容器名、容器端口
|
||||
|
||||
```bash
|
||||
kubectl get pods --all-namespaces -o json | jq '.items[] | select(.spec.containers[].securityContext.privileged==true) | {namespace: .metadata.namespace, pod: .metadata.name, ports: .spec.containers[].ports}'
|
||||
```
|
||||
|
||||
|
||||
|
42
使用文档/跨Namespace同步Secret和ConfigMap.md
Normal file
42
使用文档/跨Namespace同步Secret和ConfigMap.md
Normal file
@@ -0,0 +1,42 @@
|
||||
> 本文作者:丁辉
|
||||
|
||||
# 跨Namespace同步Secret和ConfigMap
|
||||
|
||||
> 示例:同步 `test` 命名空间下的 `demo-secret` 到 `default` 命名空间下
|
||||
|
||||
## JQ实现
|
||||
|
||||
1. 准备依赖 `jq`
|
||||
|
||||
- Centos
|
||||
|
||||
```bash
|
||||
yum install jq -y
|
||||
```
|
||||
|
||||
- Ubuntu
|
||||
|
||||
```bash
|
||||
apt install jq -y
|
||||
```
|
||||
|
||||
2. 执行命令
|
||||
|
||||
```bash
|
||||
kubectl get secret demo-secret -n test -o json \
|
||||
| jq 'del(.metadata["namespace","creationTimestamp","resourceVersion","selfLink","uid"])' \
|
||||
| kubectl apply -n default -f -
|
||||
```
|
||||
|
||||
## SED实现
|
||||
|
||||
```bash
|
||||
kubectl get secret demo-secret -n test -o json \
|
||||
| jq 'del(.metadata["namespace","creationTimestamp","resourceVersion","selfLink","uid"])' \
|
||||
| kubectl apply -n default -f -
|
||||
```
|
||||
|
||||
## Helm部署Config-Syncer实现自动同步
|
||||
|
||||
请查看此文档:[Helm部署Config-Syncer](https://gitee.com/offends/Kubernetes/blob/main/Helm/Helm%E9%83%A8%E7%BD%B2Config-Syncer.md)
|
||||
|
Reference in New Issue
Block a user