<p>I'm just trying to create a simple service account. Theoretically, kubectl automatically creates the secret and token for service accounts... But, not in my case... I've done this in <code>kube-system</code>, <code>default</code>, and new/other namespaces.</p>
<pre><code>me@mymachine ~ % kubectl create serviceaccount my-acct
serviceaccount/my-acct created
me@mymachine ~ % kubectl describe serviceaccount my-acct
Name:                my-acct
Namespace:           default
Labels:              &lt;none&gt;
Annotations:         &lt;none&gt;
Image pull secrets:  &lt;none&gt;
Mountable secrets:   &lt;none&gt;
Tokens:              &lt;none&gt;
Events:              &lt;none&gt;
</code></pre>
<p>I have reset the Kubernetes system. Uninstalled, removed ./kube/ and removed the Library...
Still no secret created. All of my developers machines (MAC as well, both Intel and M1) automatically create the account secret.
Any ideas?</p>

<p><strong>Disclaimer</strong>: This answer will not &quot;fix&quot; the automatic creation of secrets for service accounts, but shows how you can associate a secret to a service account.</p>
<p>For the newer Docker Desktop 4.8.1 (for Mac), you can create the secret manually:</p>
<pre><code>kubectl apply -f - &lt;&lt;EOF
apiVersion: v1
kind: Secret
metadata:
  name: default-secret
  annotations:
    kubernetes.io/service-account.name: default
type: kubernetes.io/service-account-token
EOF
</code></pre>
<p>And then you can associate the secret to the service account by editing the service account configuration, run:</p>
<pre><code>kubectl edit serviceaccounts default
</code></pre>
<p>There you can add the secret, at the end, like:</p>
<pre><code>apiVersion: v1
kind: ServiceAccount
metadata:
  creationTimestamp: &quot;XXXX-XX-XXTXX:XX:XXZ&quot;
  name: default
  namespace: default
  resourceVersion: &quot;XXXX&quot;
  uid: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
secrets:
- name: default-secret
</code></pre>
<p>After that, you'll be able to use the token for the required purposes.</p>
