Merge branch 'master' into down-detect
commit
5bf84cc282
36
CHANGELOG.md
36
CHANGELOG.md
|
@ -1,5 +1,41 @@
|
|||
# Release Notes
|
||||
|
||||
## Version 1.9.0-beta.2 - 2020-03-21
|
||||
|
||||
New features & improvements
|
||||
|
||||
* 🎉 Experimental multi-node support 🎊 [#6787](https://github.com/kubernetes/minikube/pull/6787)
|
||||
* Add kubectl desc nodes to minikube logs [#7105](https://github.com/kubernetes/minikube/pull/7105)
|
||||
* bumpup helm-tiller v2.16.1 → v2.16.3 [#7130](https://github.com/kubernetes/minikube/pull/7130)
|
||||
* Update Nvidia GPU plugin [#7132](https://github.com/kubernetes/minikube/pull/7132)
|
||||
* bumpup istio & istio-provisoner addon 1.4.0 → 1.5.0 [#7120](https://github.com/kubernetes/minikube/pull/7120)
|
||||
* New addon: registry-aliases [#6657](https://github.com/kubernetes/minikube/pull/6657)
|
||||
* Upgrade buildroot minor version [#7101](https://github.com/kubernetes/minikube/pull/7101)
|
||||
* Skip kubeadm if cluster is running & properly configured [#7124](https://github.com/kubernetes/minikube/pull/7124)
|
||||
* Make certificates per-profile and consistent until IP or names change [#7125](https://github.com/kubernetes/minikube/pull/7125)
|
||||
|
||||
Bugfixes
|
||||
|
||||
* Prevent minikube from crashing if namespace or service doesn't exist [#5844](https://github.com/kubernetes/minikube/pull/5844)
|
||||
* Add warning if both vm-driver and driver are specified [#7109](https://github.com/kubernetes/minikube/pull/7109)
|
||||
* Improve error when docker-env is used with non-docker runtime [#7112](https://github.com/kubernetes/minikube/pull/7112)
|
||||
* provisioner: only reload docker if necessary, don't install curl [#7115](https://github.com/kubernetes/minikube/pull/7115)
|
||||
|
||||
Thank you to our contributors:
|
||||
|
||||
- Anders F Björklund
|
||||
- Iso Kenta
|
||||
- Kamesh Sampath
|
||||
- Kenta Iso
|
||||
- Prasad Katti
|
||||
- Priya Wadhwa
|
||||
- Sharif Elgamal
|
||||
- Tacio Costa
|
||||
- Thomas Strömberg
|
||||
- Zhongcheng Lao
|
||||
- rajula96reddy
|
||||
- sayboras
|
||||
|
||||
## Version 1.9.0-beta.1 - 2020-03-18
|
||||
|
||||
New features
|
||||
|
|
2
Makefile
2
Makefile
|
@ -15,7 +15,7 @@
|
|||
# Bump these on release - and please check ISO_VERSION for correctness.
|
||||
VERSION_MAJOR ?= 1
|
||||
VERSION_MINOR ?= 9
|
||||
VERSION_BUILD ?= 0-beta.1
|
||||
VERSION_BUILD ?= 0-beta.2
|
||||
RAW_VERSION=$(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_BUILD)
|
||||
VERSION ?= v$(RAW_VERSION)
|
||||
|
||||
|
|
|
@ -42,9 +42,6 @@ spec:
|
|||
- name: device-plugin
|
||||
hostPath:
|
||||
path: /var/lib/kubelet/device-plugins
|
||||
- name: dev
|
||||
hostPath:
|
||||
path: /dev
|
||||
containers:
|
||||
- image: "nvidia/k8s-device-plugin:1.0.0-beta4"
|
||||
command: ["/usr/bin/nvidia-device-plugin", "-logtostderr"]
|
||||
|
@ -54,11 +51,11 @@ spec:
|
|||
cpu: 50m
|
||||
memory: 10Mi
|
||||
securityContext:
|
||||
privileged: true
|
||||
allowPrivilegeEscalation: false
|
||||
capabilities:
|
||||
drop: ["ALL"]
|
||||
volumeMounts:
|
||||
- name: device-plugin
|
||||
mountPath: /var/lib/kubelet/device-plugins
|
||||
- name: dev
|
||||
mountPath: /dev
|
||||
updateStrategy:
|
||||
type: RollingUpdate
|
||||
|
|
|
@ -94,16 +94,14 @@ func GenerateKubeadmYAML(cc config.ClusterConfig, n config.Node, r cruntime.Mana
|
|||
EtcdDataDir: EtcdDataDir(),
|
||||
ClusterName: cc.Name,
|
||||
//kubeadm uses NodeName as the --hostname-override parameter, so this needs to be the name of the machine
|
||||
NodeName: driver.MachineName(cc, n),
|
||||
CRISocket: r.SocketPath(),
|
||||
ImageRepository: k8s.ImageRepository,
|
||||
ComponentOptions: componentOpts,
|
||||
FeatureArgs: kubeadmFeatureArgs,
|
||||
NoTaintMaster: false, // That does not work with k8s 1.12+
|
||||
DNSDomain: k8s.DNSDomain,
|
||||
NodeIP: n.IP,
|
||||
// NOTE: If set to an specific VM IP, things may break if the IP changes on host restart
|
||||
// For multi-node, we may need to figure out an alternate strategy, like DNS or hosts files
|
||||
NodeName: driver.MachineName(cc, n),
|
||||
CRISocket: r.SocketPath(),
|
||||
ImageRepository: k8s.ImageRepository,
|
||||
ComponentOptions: componentOpts,
|
||||
FeatureArgs: kubeadmFeatureArgs,
|
||||
NoTaintMaster: false, // That does not work with k8s 1.12+
|
||||
DNSDomain: k8s.DNSDomain,
|
||||
NodeIP: n.IP,
|
||||
ControlPlaneAddress: cp.IP,
|
||||
}
|
||||
|
||||
|
|
|
@ -157,6 +157,30 @@ func (k *Bootstrapper) createCompatSymlinks() error {
|
|||
return nil
|
||||
}
|
||||
|
||||
// clearStaleConfigs clears configurations which may have stale IP addresses
|
||||
func (k *Bootstrapper) clearStaleConfigs(cfg config.ClusterConfig) error {
|
||||
cp, err := config.PrimaryControlPlane(&cfg)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
paths := []string{
|
||||
"/etc/kubernetes/admin.conf",
|
||||
"/etc/kubernetes/kubelet.conf",
|
||||
"/etc/kubernetes/controller-manager.conf",
|
||||
"/etc/kubernetes/scheduler.conf",
|
||||
}
|
||||
|
||||
endpoint := fmt.Sprintf("https://%s", net.JoinHostPort(cp.IP, strconv.Itoa(cp.Port)))
|
||||
for _, path := range paths {
|
||||
_, err := k.c.RunCmd(exec.Command("sudo", "/bin/bash", "-c", fmt.Sprintf("grep %s %s || sudo rm -f %s", endpoint, path, path)))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// StartCluster starts the cluster
|
||||
func (k *Bootstrapper) StartCluster(cfg config.ClusterConfig) error {
|
||||
err := bsutil.ExistingConfig(k.c)
|
||||
|
@ -208,10 +232,8 @@ func (k *Bootstrapper) StartCluster(cfg config.ClusterConfig) error {
|
|||
|
||||
}
|
||||
|
||||
// Remove the previous kubeadm kubeconfig as the IP may have changed
|
||||
_, err = k.c.RunCmd(exec.Command("sudo", "rm", "-f", "/etc/kubernetes/admin.conf"))
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "deleting admin.conf")
|
||||
if err := k.clearStaleConfigs(cfg); err != nil {
|
||||
return errors.Wrap(err, "clearing stale configs")
|
||||
}
|
||||
|
||||
conf := bsutil.KubeadmYamlPath
|
||||
|
@ -319,8 +341,8 @@ func (k *Bootstrapper) WaitForNode(cfg config.ClusterConfig, n config.Node, time
|
|||
|
||||
// needsReset returns whether or not the cluster needs to be reconfigured
|
||||
func (k *Bootstrapper) needsReset(conf string, ip string, port int, client *kubernetes.Clientset) bool {
|
||||
if _, err := k.c.RunCmd(exec.Command("sudo", "diff", "-u", conf, conf+".new")); err != nil {
|
||||
glog.Infof("needs reset: configs differ")
|
||||
if rr, err := k.c.RunCmd(exec.Command("sudo", "diff", "-u", conf, conf+".new")); err != nil {
|
||||
glog.Infof("needs reset: configs differ:\n%s", rr.Output())
|
||||
return true
|
||||
}
|
||||
|
||||
|
@ -384,10 +406,8 @@ func (k *Bootstrapper) restartCluster(cfg config.ClusterConfig) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
// Remove the previous kubeadm kubeconfig as the IP may have changed
|
||||
_, err = k.c.RunCmd(exec.Command("sudo", "rm", "-f", "/etc/kubernetes/admin.conf"))
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "deleting admin.conf")
|
||||
if err := k.clearStaleConfigs(cfg); err != nil {
|
||||
return errors.Wrap(err, "clearing stale configs")
|
||||
}
|
||||
|
||||
if _, err := k.c.RunCmd(exec.Command("sudo", "mv", conf+".new", conf)); err != nil {
|
||||
|
|
Loading…
Reference in New Issue