kubernetes/kops · error

error reading file %q: %v

Error message

error reading file %q: %v

What it means

Reading the hosts file contents failed even though stat succeeded; concurrent removal/replacement, permission changes, or I/O errors on the bind-mounted /etc/hosts.

Source

Thrown at pkg/dns/hosts/hosts.go:121

	}

	m.records = newRecords
}

// UpdateHostsFileWithRecords updates /etc/hosts by applying the given mutation function.
func UpdateHostsFileWithRecords(p string, mutator func(guarded []string) (*HostMap, error)) error {
	// For safety / sanity, we avoid concurrent updates from one process
	hostsFileMutex.Lock()
	defer hostsFileMutex.Unlock()

	stat, err := os.Stat(p)
	if err != nil {
		return fmt.Errorf("error getting file status of %q: %v", p, err)
	}

	data, err := os.ReadFile(p)
	if err != nil {
		return fmt.Errorf("error reading file %q: %v", p, err)
	}

	var guarded []string
	var out []string
	inGuardBlock := false
	for _, line := range strings.Split(string(data), "\n") {
		k := strings.TrimSpace(line)
		if k == GUARD_BEGIN {
			if inGuardBlock {
				klog.Warningf("/etc/hosts guard-block begin seen while in guard block; will ignore")
			}
			inGuardBlock = true
		}

		if inGuardBlock {
			guarded = append(guarded, line)
		} else {
			out = append(out, line)

View on GitHub (pinned to 4c8573c808)

Solutions

  1. Retry — the file may have been transiently replaced by another writer
  2. Check the health of the /etc/hosts bind mount (it may be revoked or read-only)
  3. Ensure the process retains read access
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at pkg/dns/hosts/hosts.go:121 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of kubernetes/kops@4c8573c808 (2026-09-05). Data as JSON: /api/errors/8a8ce93aadef7da9. Report an issue: GitHub.