kubernetes - Kubernetes:如何配置 hostnetwork pod IP 地址?
问题描述
我正在尝试设置 IPv6 kubernetes 集群。我有两个 IPv6 接口和一个 docker 接口(172.17.0.1)。docker 接口由 docker 自己设置。
kahou@kahou-master:~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:50:56:af:1d:25 brd ff:ff:ff:ff:ff:ff
inet6 2001:420:293:242d:250:56ff:feaf:1d25/64 scope global dynamic mngtmpaddr noprefixroute
valid_lft 2591949sec preferred_lft 604749sec
inet6 fe80::250:56ff:feaf:1d25/64 scope link
valid_lft forever preferred_lft forever
3: ens224: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:50:56:af:a5:15 brd ff:ff:ff:ff:ff:ff
inet6 2000::250:56ff:feaf:a515/64 scope global dynamic mngtmpaddr noprefixroute
valid_lft 2591933sec preferred_lft 604733sec
inet6 2000::3/64 scope global
valid_lft forever preferred_lft forever
inet6 fe80::250:56ff:feaf:a515/64 scope link
valid_lft forever preferred_lft forever
4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:53:f2:46:8c brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever
5: tunl0@NONE: <NOARP,UP,LOWER_UP> mtu 1440 qdisc noqueue state UNKNOWN group default qlen 1000
link/ipip 0.0.0.0 brd 0.0.0.0
当我通过 kubeadm 初始化集群时,所有主机网络 pod IP 都使用 docker IP 地址:
etcd-kahou-master 1/1 Running 0 177m 172.17.0.1 kahou-master <none>
kube-apiserver-kahou-master 1/1 Running 0 177m 172.17.0.1 kahou-master <none>
kube-controller-manager-kahou-master 1/1 Running 0 177m 172.17.0.1 kahou-master <none>
kube-proxy-pnq7g 1/1 Running 0 178m 172.17.0.1 kahou-master <none>
kube-scheduler-kahou-master 1/1 Running 0 177m 172.17.0.1 kahou-master <none>
是否可以告诉kubeadm我在安装过程中使用哪个接口?
下面是我的 api-server 调用(由 kubeadm 生成)
kube-apiserver --authorization-mode=Node,RBAC --bind-address=2001:420:293:242d:250:56ff:feaf:1d25 --service-cluster-ip-range=fd03::/112 --advertise-address=2001:420:293:242d:250:56ff:feaf:1d25 --allow-privileged=true --client-ca-file=/etc/kubernetes/pki/ca.crt --enable-admission-plugins=NodeRestriction --enable-bootstrap-token-auth=true --etcd-cafile=/etc/kubernetes/pki/etcd/ca.crt --etcd-certfile=/etc/kubernetes/pki/apiserver-etcd-client.crt --etcd-keyfile=/etc/kubernetes/pki/apiserver-etcd-client.key --etcd-servers=https://127.0.0.1:2379 --insecure-port=0 --kubelet-client-certificate=/etc/kubernetes/pki/apiserver-kubelet-client.crt --kubelet-client-key=/etc/kubernetes/pki/apiserver-kubelet-client.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --proxy-client-cert-file=/etc/kubernetes/pki/front-proxy-client.crt --proxy-client-key-file=/etc/kubernetes/pki/front-proxy-client.key --requestheader-allowed-names=front-proxy-client --requestheader-client-ca-file=/etc/kubernetes/pki/front-proxy-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6443 --service-account-key-file=/etc/kubernetes/pki/sa.pub --tls-cert-file=/etc/kubernetes/pki/apiserver.crt --tls-private-key-file=/etc/kubernetes/pki/apiserver.key
这是我的 kubeadm 配置文件:
apiVersion: kubeadm.k8s.io/v1alpha2
kind: MasterConfiguration
api:
advertiseAddress: 2001:420:293:242d:250:56ff:feaf:1d25
apiServerExtraArgs:
bind-address: 2001:420:293:242d:250:56ff:feaf:1d25
service-cluster-ip-range: fd03::/112
controllerManagerExtraArgs:
node-cidr-mask-size: "96"
cluster-cidr: fd02::/80
service-cluster-ip-range: fd03::/112
networking:
serviceSubnet: fd03::/112
nodeRegistration:
node-ip: 2001:420:293:242d:250:56ff:feaf:1d25
解决方案
node-ip
关于配置通过 kubeadm 配置文件传递给 kubelet的有用说明:根据https://godoc.org/k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta1和一些实验,它应该是在kubeletExtraArgs
该nodeRegistration
部分下(使用配置文件中的 IP 的示例):
apiVersion: kubeadm.k8s.io/v1beta2
kind: InitConfiguration
nodeRegistration:
kubeletExtraArgs:
node-ip: 2001:420:293:242d:250:56ff:feaf:1d25
推荐阅读
- php - 使用 PHP 将 Foreach 内部的 Foreach 推送到相同的 Keys 对象中
- google-sheets - 水平范围...内部(垂直)ARRAYFORMULA?
- python - configparser -- 从 ini 导入后 SQL 查询中的额外 witespaces
- forms - 表单执行时会重建 Imagepicker,丢失所选图像
- vue.js - 在 Vue-tables-2 中从下拉选择中选择选项时过滤表列(不是行)
- ruby-on-rails - Rails 安装失败并出现名称错误
- .net - 如何使用 IHostedService 访问控制台应用程序中的命令行参数?
- html - 在 Safari 上,如果一个祖先有 'display: flex' 和一个后代 'position:sticky',它只会坚持它的包装器的高度
- javascript - 将 MUI Collapse 组件默认设置为“collapsed”
- python - 如何在不单击每个元素的情况下获取下拉选项(Selenium 和 Python)