[kubernetes]-k8s in k8s
k8s
·
导语:感觉k8s in k8s 很高大上,但是没有特别好的资料。看到一个有点类似的,虽然没有最后执行成功 记录一下。
使用kind安装k8s
wget -c https://kind.sigs.k8s.io/dl/v0.11.1/kind-linux-amd64
mv kind-linux-amd64 kind
chmod +x ./kind
cp ./kind /usr/local/bin/kind
kind create cluster # 如果不指定名字则默认为kind
kind create cluster --name kind-2
curl -LO https://dl.k8s.io/release/v1.21.1/bin/linux/amd64/kubectl
chmod +x kubectl
cp kubectl /usr/bin/
cp kubectl /usr/local/bin/
kubectl cluster-info --context kind-kind
kubectl get pods -A
apiVersion: v1
kind: Pod
metadata:
name: dind
spec:
containers:
- image: jieyu/dind-buster:v0.1.8
name: dind
stdin: true
tty: true
args:
- /bin/bash
volumeMounts:
- mountPath: /var/lib/docker
name: varlibdocker
securityContext:
privileged: true
volumes:
- name: varlibdocker
emptyDir: {}
到这里为止在k8s的pod中运行docker都是ok的
直接在最外层的k8s中创建k8s
yaml如下
apiVersion: v1
kind: Pod
metadata:
name: kind-cluster
spec:
containers:
- image: jieyu/kind-cluster-buster:v0.1.0
name: kind-cluster
stdin: true
tty: true
args:
- /bin/bash
env:
- name: API_SERVER_ADDRESS
valueFrom:
fieldRef:
fieldPath: status.podIP
volumeMounts:
- mountPath: /var/lib/docker
name: varlibdocker
- mountPath: /lib/modules
name: libmodules
readOnly: true
securityContext:
privileged: true
ports:
- containerPort: 30001
name: api-server-port
protocol: TCP
readinessProbe:
failureThreshold: 15
httpGet:
path: /healthz
port: api-server-port
scheme: HTTPS
initialDelaySeconds: 120
periodSeconds: 20
successThreshold: 1
timeoutSeconds: 1
volumes:
- name: varlibdocker
emptyDir: {}
- name: libmodules
hostPath:
path: /lib/modules
启动过程比较久。健康检查需要比较长的时间才能过。
下面在pod中运行docker容器再创建k8s coredns通信 会有一些问题
准备在pod中使用docker再装一个k8s
kubectl cp /srv/kind dind:/srv/
kubectl cp /srv/kubectl dind:/srv/
cp /srv/k* /usr/bin/
docker run -ti --name=123 --rm --privileged jieyu/dind-buster:v0.1.8 /bin/bash
docker run -ti --name=123 --rm --privileged --network=host jieyu/dind-buster:v0.1.8 /bin/bash
如图这个是在k8s的bind容器中
最终会有报错 不知道是不是因为我network=host的缘故
不清楚是不是少了这一步。
RUN update-alternatives --set iptables /usr/sbin/iptables-legacy || true && \
update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy || true && \
update-alternatives --set arptables /usr/sbin/arptables-legacy || true
在pod中执行
apt update
apt-get install -y iptables arptables ebtables
update-alternatives --set iptables /usr/sbin/iptables-legacy
update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
update-alternatives --set arptables /usr/sbin/arptables-legacy
update-alternatives --set ebtables /usr/sbin/ebtables-legacy
安装完成之后coredns依旧有问题
尝试删除coredns的configmap下的loop也没用,虽然不报错了,但是容器创建依旧有问题。
参考
https://cloud.tencent.com/developer/article/1648372
https://d2iq.com/blog/running-kind-inside-a-kubernetes-cluster-for-continuous-integration
更多推荐
已为社区贡献84条内容
所有评论(0)