Skip to main content

16 posts tagged with "Kubernetes"

View All Tags

Kubernetes 1.13.3 external etcd clean up | Kubernetes外部etcd数据清除

· 2 min read

Kubernetes 配置过程中如果出了问题, 可以用 kubeadm reset 重置 Kubernetes cluster 状态, 但如果使用了外部 etcd cluster, 则执行 kubeadm reset 不会清除外部 etcd cluster 中的数据, 也就意味着如果再次执行 kubeadm init, 则会看到上一个 kubenetes cluster 中的数据。

查询和手动清除外部 etcd cluster 的方式如下(以 Kubernetes 1.13.3 为例):

1. 查询所有数据:

docker run --rm -it --net host -v /etc/kubernetes:/etc/kubernetes -e ETCDCTL_API=3 k8s.gcr.io/etcd:3.2.24 etcdctl --cert="/etc/kubernetes/pki/etcd/healthcheck-client.crt" --key="/etc/kubernetes/pki/etcd/healthcheck-client.key" --cacert="/etc/kubernetes/pki/etcd/ca.crt" --endpoints https://etcd1.cloud.k8s:2379 get "" --prefix

2. 删除所有数据:

docker run --rm -it --net host -v /etc/kubernetes:/etc/kubernetes -e ETCDCTL_API=3 k8s.gcr.io/etcd:3.2.24 etcdctl --cert="/etc/kubernetes/pki/etcd/healthcheck-client.crt" --key="/etc/kubernetes/pki/etcd/healthcheck-client.key" --cacert="/etc/kubernetes/pki/etcd/ca.crt" --endpoints https://etcd1.cloud.k8s:2379 del "" --prefix

指令中的几个关键点:

  1. 运行使用 docker 镜像 k8s.gcr.io/etcd:3.2.24 中的 etcdctl 指令, 也可以使用外部的
  2. 通过 docker -e 参数设置环境变量 ETCDCTL_API=3 设置 API Version 为 3
  3. 挂载外部的 etcd ca 和客户端证书连接 etcd cluster

参考:

External etcd clean up: https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-reset/#external-etcd-clean-up

Configuring /etc/hosts/in Kubernetes Depolyment/Pod

· One min read

Example of Pod:

apiVersion: v1
kind: Pod
metadata:
name: hostaliases-pod
spec:
restartPolicy: Never
hostAliases:
- ip: "127.0.0.1"
hostnames:
- "foo.local"
- "bar.local"
- ip: "10.1.2.3"
hostnames:
- "foo.remote"
- "bar.remote"
containers:
- name: cat-hosts
image: busybox
command:
- cat
args:
- "/etc/hosts"

Example of Deployment

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: hostaliases-deployment
spec:
template:
spec:
hostAliases:
- ip: "127.0.0.1"
hostnames:
- "foo.local"
- "bar.local"
- ip: "10.1.2.3"
hostnames:
- "foo.remote"
- "bar.remote"
containers:
- name: a-aspnetcore-app
image: aspnetcore-app:v1.0.0
env:
- name: ASPNETCORE_ENVIRONMENT
value: Development
ports:
- containerPort: 80
imagePullSecrets:
- name: docker-secret

See the result in Kubernetes container

# cat /etc/hosts
# Kubernetes-managed hosts file.
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
fe00::0 ip6-mcastprefix
fe00::1 ip6-allnodes
fe00::2 ip6-allrouters
192.168.240.234 hostaliases-deployment-65d5c48f7c-pqqvn

# Entries added by HostAliases.
127.0.0.1 foo.local bar.local
10.1.2.3 foo.remote bar.remote

reference: add-entries-to-pod-etc-hosts-with-host-aliases

ClustrMaps