<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>https://wiki.linuxsa.org/index.php?action=history&amp;feed=atom&amp;title=Install_and_Configure_Kubernetes_%28k8s%29_on_debian10</id>
	<title>Install and Configure Kubernetes (k8s) on debian10 - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.linuxsa.org/index.php?action=history&amp;feed=atom&amp;title=Install_and_Configure_Kubernetes_%28k8s%29_on_debian10"/>
	<link rel="alternate" type="text/html" href="https://wiki.linuxsa.org/index.php?title=Install_and_Configure_Kubernetes_(k8s)_on_debian10&amp;action=history"/>
	<updated>2026-04-20T10:53:34Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://wiki.linuxsa.org/index.php?title=Install_and_Configure_Kubernetes_(k8s)_on_debian10&amp;diff=481&amp;oldid=prev</id>
		<title>Evan：​/* trouble2 重启一下机器就坏 */</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxsa.org/index.php?title=Install_and_Configure_Kubernetes_(k8s)_on_debian10&amp;diff=481&amp;oldid=prev"/>
		<updated>2022-07-07T06:30:47Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;trouble2 重启一下机器就坏&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= 思路2020=&lt;br /&gt;
先在围墙外的机器 pull下来   然后 push到自己的hub.docker   最后在内网的机器再pull 下来  再tag一下  &lt;br /&gt;
&lt;br /&gt;
参考一下 然后写成脚本吧 &lt;br /&gt;
[https://blog.csdn.net/shykevin/article/details/98811021 ubuntu 使用阿里云镜像源快速搭建kubernetes 1.15.2集群]&lt;br /&gt;
&lt;br /&gt;
 初始化时 指定aliyun  mirrors  本来是指定 1。17。1版本的 我改了新的&lt;br /&gt;
    kubeadm init --apiserver-advertise-address=192.168.11.184 --image-repository registry.aliyuncs.com/google_containers --ignore-preflight-errors=all  --kubernetes-version v1.17.3 --service-cidr=10.96.0.0/16 --pod-network-cidr=10.244.0.0/16&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Problem 3: 一个小尾巴，关闭版本探测&lt;br /&gt;
&lt;br /&gt;
kubeadm init --kubernetes-version=v1.11.3&lt;br /&gt;
&lt;br /&gt;
否则kubeadm会访问一个墙外的文件，找这个版本， 也会卡住。&lt;br /&gt;
&lt;br /&gt;
然后就可以愉快的玩k8s了，真呀嘛真好用，不浪费这一番折腾。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 pull images 后还init还不成功的原因 &lt;br /&gt;
程序会访问https://dl.k8s.io/release/stable-1.txt获取最新的k8s版本，访问这个连接需要FQ，如果无法访问，则会使用kubeadm client的版本作为安装的版本号，使用kubeadm version查看client版本。也可以使用--kubernetes-version明确指定版本&lt;br /&gt;
&lt;br /&gt;
=[[Docker国内镜像的配置及使用]]=&lt;br /&gt;
&lt;br /&gt;
=images 准备 =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#不过如果用aliyun mirrors 应该也不用理这个的 初始化是会自己拉&lt;br /&gt;
root@k8s-master:~# kubeadm config images list&lt;br /&gt;
W0304 10:05:03.567343   26153 validation.go:28] Cannot validate kube-proxy config - no validator is available&lt;br /&gt;
W0304 10:05:03.567442   26153 validation.go:28] Cannot validate kubelet config - no validator is available&lt;br /&gt;
k8s.gcr.io/kube-apiserver:v1.17.3&lt;br /&gt;
k8s.gcr.io/kube-controller-manager:v1.17.3&lt;br /&gt;
k8s.gcr.io/kube-scheduler:v1.17.3&lt;br /&gt;
k8s.gcr.io/kube-proxy:v1.17.3&lt;br /&gt;
k8s.gcr.io/pause:3.1&lt;br /&gt;
k8s.gcr.io/etcd:3.4.3-0&lt;br /&gt;
k8s.gcr.io/coredns:1.6.5&lt;br /&gt;
&lt;br /&gt;
由上面的 list 得知 &lt;br /&gt;
好办，我们先找台海外服务器，把相应的镜像拉下来，推到我们自己的私有仓库里，再pull,然后改tag。没有私有仓库也不要紧，我已经把1.15.1推到hub.docker.com了。&lt;br /&gt;
&lt;br /&gt;
找一台能连接k8s.gcr.io的服务器:&lt;br /&gt;
&lt;br /&gt;
docker pull k8s.gcr.io/kube-apiserver:v1.17.3&lt;br /&gt;
docker pull  k8s.gcr.io/kube-controller-manager:v1.17.3&lt;br /&gt;
docker pull  k8s.gcr.io/kube-scheduler:v1.17.3&lt;br /&gt;
docker pull  k8s.gcr.io/kube-proxy:v1.17.3&lt;br /&gt;
docker pull  k8s.gcr.io/pause:3.1&lt;br /&gt;
docker pull  k8s.gcr.io/etcd:3.4.3-0&lt;br /&gt;
docker pull  k8s.gcr.io/coredns:1.6.5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
docker login &lt;br /&gt;
evan886  evan2240881&lt;br /&gt;
&lt;br /&gt;
docker tag  k8s.gcr.io/kube-apiserver:v1.17.3    evan886/kube-apiserver:v1.17.3&lt;br /&gt;
&lt;br /&gt;
docker push  evan886/kube-apiserver:v1.17.3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
docker tag  k8s.gcr.io/kube-controller-manager:v1.17.3 evan886/kube-controller-manager:v1.17.3&lt;br /&gt;
docker tag  k8s.gcr.io/kube-scheduler:v1.17.3   evan886/kube-scheduler:v1.17.3  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
docker tag  k8s.gcr.io/kube-proxy:v1.17.3 evan886/kube-proxy:v1.17.3&lt;br /&gt;
docker tag  k8s.gcr.io/pause:3.1 evan886/pause:3.1&lt;br /&gt;
docker tag  k8s.gcr.io/etcd:3.4.3-0  evan886/etcd:3.4.3-0&lt;br /&gt;
docker tag  k8s.gcr.io/coredns:1.6.5  evan886/coredns:1.6.5 &lt;br /&gt;
&lt;br /&gt;
#push 自己的hub.docker &lt;br /&gt;
docker push  evan886/kube-apiserver:v1.17.3&lt;br /&gt;
docker push  evan886/kube-controller-manager:v1.17.3  &lt;br /&gt;
docker push evan886/kube-scheduler:v1.17.3&lt;br /&gt;
docker push evan886/kube-proxy:v1.17.3&lt;br /&gt;
docker push evan886/pause:3.1&lt;br /&gt;
docker push  evan886/etcd:3.4.3-0&lt;br /&gt;
docker push evan886/coredns:1.6.5&lt;br /&gt;
   &lt;br /&gt;
   &lt;br /&gt;
   #on k8s master &lt;br /&gt;
 docker pull evan886/etcd:3.4.3-0&lt;br /&gt;
 docker pull  evan886/coredns:1.6.5&lt;br /&gt;
 docker pull evan886/kube-proxy:v1.17.3&lt;br /&gt;
   &lt;br /&gt;
   &lt;br /&gt;
   再tag 回k8s.gcr.io &lt;br /&gt;
  &lt;br /&gt;
docker tag   evan886/kube-proxy:v1.17.3  k8s.gcr.io/kube-proxy:v1.17.3&lt;br /&gt;
docker tag  evan886/etcd:3.4.3-0  k8s.gcr.io/etcd:3.4.3-0  &lt;br /&gt;
docker tag  evan886/coredns:1.6.5   k8s.gcr.io/coredns:1.6.5  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
可优化的脚本 &lt;br /&gt;
运行脚本是这样的：&lt;br /&gt;
&lt;br /&gt;
MY_REGISTRY=registry.cn-hangzhou.aliyuncs.com/google_containers&lt;br /&gt;
#registry.cn-hangzhou.aliyuncs.com/google-images&lt;br /&gt;
VERSION=v1.11.3&lt;br /&gt;
&lt;br /&gt;
## 拉取镜像&lt;br /&gt;
docker pull ${MY_REGISTRY}/kube-apiserver-amd64:${VERSION}&lt;br /&gt;
docker pull ${MY_REGISTRY}/kube-controller-manager-amd64:${VERSION}&lt;br /&gt;
docker pull ${MY_REGISTRY}/kube-scheduler-amd64:${VERSION}&lt;br /&gt;
docker pull ${MY_REGISTRY}/kube-proxy-amd64:${VERSION}&lt;br /&gt;
docker pull ${MY_REGISTRY}/etcd-amd64:3.2.18&lt;br /&gt;
docker pull ${MY_REGISTRY}/pause-amd64:3.1&lt;br /&gt;
docker pull ${MY_REGISTRY}/coredns:1.1.3&lt;br /&gt;
docker pull ${MY_REGISTRY}/pause:3.1&lt;br /&gt;
&lt;br /&gt;
## 添加Tag&lt;br /&gt;
docker tag ${MY_REGISTRY}/kube-apiserver-amd64:${VERSION} k8s.gcr.io/kube-apiserver-amd64:${VERSION}&lt;br /&gt;
docker tag ${MY_REGISTRY}/kube-scheduler-amd64:${VERSION} k8s.gcr.io/kube-scheduler-amd64:${VERSION}&lt;br /&gt;
docker tag ${MY_REGISTRY}/kube-controller-manager-amd64:${VERSION} k8s.gcr.io/kube-controller-manager-amd64:${VERSION}&lt;br /&gt;
docker tag ${MY_REGISTRY}/kube-proxy-amd64:${VERSION} k8s.gcr.io/kube-proxy-amd64:${VERSION}&lt;br /&gt;
docker tag ${MY_REGISTRY}/etcd-amd64:3.2.18 k8s.gcr.io/etcd-amd64:3.2.18&lt;br /&gt;
docker tag ${MY_REGISTRY}/pause-amd64:3.1 k8s.gcr.io/pause-amd64:3.1&lt;br /&gt;
docker tag ${MY_REGISTRY}/coredns:1.1.3 k8s.gcr.io/coredns:1.1.3&lt;br /&gt;
docker tag ${MY_REGISTRY}/pause:3.1 k8s.gcr.io/pause:3.1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        不同的版本需要特定version的image，如果长期跟踪kubeadm和kubectl，要注意维护这个image列表&lt;br /&gt;
        如果使用代理方案，注意 http_proxy=&amp;lt;proxy address&amp;gt;:&amp;lt;proxy port&amp;gt; docker pull 并不能生效，而是要让docker daemon感知到proxy的存在。这是一个坑点，但不是docker的设计缺陷，而是image pull的操作是docker服务进程管理的，当然代理要让这个进程使用。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=info=&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat &amp;gt;&amp;gt;/etc/hosts &amp;lt;&amp;lt;EOF&lt;br /&gt;
192.168.11.184  k8s-master&lt;br /&gt;
192.168.88.31  k8s-node1&lt;br /&gt;
192.168.88.32  k8s-node2&lt;br /&gt;
EOF&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
每台机器最少2GB内存，2CPUs。&lt;br /&gt;
集群中所有机器之间网络连接正常。&lt;br /&gt;
打开相应的端口，详见： [ Check required ports https://kubernetes.io/docs/setup/independent/install-kubeadm/#check-required-ports]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kubernetes要求集群中所有机器具有不同的Mac地址、产品uuid、Hostname。可以使用如下命令查看：&lt;br /&gt;
&lt;br /&gt;
# UUID&lt;br /&gt;
 cat /sys/class/dmi/id/product_uuid&lt;br /&gt;
&lt;br /&gt;
# Mac地址&lt;br /&gt;
 ip link&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=FQ=&lt;br /&gt;
[[Ubuntu利用shadowsocks和polipo终端翻墙]]&lt;br /&gt;
&lt;br /&gt;
=pre=&lt;br /&gt;
搞个离线的吧 可以先学习着 &lt;br /&gt;
&lt;br /&gt;
[[K8s镜像]]&lt;br /&gt;
&lt;br /&gt;
[[使用kubeadm离线部署kubernetesv1.9.0]]&lt;br /&gt;
&lt;br /&gt;
=Set Hostname and update hosts file=&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo hostnamectl set-hostname &amp;quot;k8s-master&amp;quot;&lt;br /&gt;
sudo hostnamectl set-hostname k8s-node1&lt;br /&gt;
sudo hostnamectl set-hostname k8s-node2&lt;br /&gt;
&lt;br /&gt;
#Add the following lines in /etc/hosts file on all three systems,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=翻墙=&lt;br /&gt;
[[Debian利用shadowsocks和polipo终端代理翻墙]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
cat /etc/profile #最好就是这个写成 Privoxy 先安装在kali就行了 (polipo可能放弃 )那台机器的IP就行了，其它机器就不用再搞 ss  polipo了&lt;br /&gt;
#这 这里填写  polipo那台机器的ip &lt;br /&gt;
export http_proxy=&amp;quot;http://PrivoxyIP:8118/&amp;quot;&lt;br /&gt;
export https_proxy=$http_proxy&lt;br /&gt;
#export no_proxy=&amp;quot;localhost,127.0.0.1,192.168.88.58,10.96.0.0,10.224.0.0&amp;quot;&lt;br /&gt;
 export no_proxy=&amp;quot;localhost,127.0.0.1,192.168.88.58,10.96.0.0,10.224.0.0,10.224.*&amp;quot;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
如果不想翻墙 请参考[https://www.cnblogs.com/RainingNight/p/using-kubeadm-to-create-a-cluster-1-12.html 使用Kubeadm搭建Kubernetes(1.12.2)集群]&lt;br /&gt;
&lt;br /&gt;
=ins docker=&lt;br /&gt;
 #docker-compose 直接用官方的二进制包 &lt;br /&gt;
&lt;br /&gt;
==debian9 or 10==&lt;br /&gt;
&lt;br /&gt;
===.Install using the repository on debian ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Aug 17 2021 &lt;br /&gt;
&lt;br /&gt;
sudo apt-get install     apt-transport-https     ca-certificates     curl     gnupg     lsb-release&lt;br /&gt;
&lt;br /&gt;
  curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg&lt;br /&gt;
 echo   &amp;quot;deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \&lt;br /&gt;
  $(lsb_release -cs) stable&amp;quot; | sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null&lt;br /&gt;
  sudo apt-get install docker-ce docker-ce-cli containerd.io&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sudo apt-get install docker-ce docker-ce-cli containerd.io&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
如果是kali 2020 &lt;br /&gt;
cat /etc/apt/sources.list.d/docker.list &lt;br /&gt;
deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian   buster  stable&lt;br /&gt;
#deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian   kali-rolling stable&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#old &lt;br /&gt;
apt  install software-properties-common&lt;br /&gt;
&lt;br /&gt;
apt-get remove docker docker-engine docker.io containerd runc&lt;br /&gt;
&lt;br /&gt;
sudo apt-get install \&lt;br /&gt;
    apt-transport-https \&lt;br /&gt;
    ca-certificates \&lt;br /&gt;
    curl \&lt;br /&gt;
    gnupg2 \&lt;br /&gt;
    software-properties-common -y &lt;br /&gt;
&lt;br /&gt;
 curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -&lt;br /&gt;
&lt;br /&gt;
 sudo apt-key fingerprint 0EBFCD88&lt;br /&gt;
 sudo add-apt-repository    &amp;quot;deb [arch=amd64] https://download.docker.com/linux/debian \&lt;br /&gt;
   $(lsb_release -cs) \&lt;br /&gt;
   stable&amp;quot;&lt;br /&gt;
 apt-get update&lt;br /&gt;
sudo apt-get install docker-ce docker-ce-cli containerd.io&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
https://docs.docker.com/engine/install/debian/&lt;br /&gt;
https://docs.docker.com/install/linux/docker-ce/debian/&lt;br /&gt;
&lt;br /&gt;
===2.install-from-a-package on debian===&lt;br /&gt;
&lt;br /&gt;
Go to https://download.docker.com/linux/debian/dists/, choose your Debian version, browse to pool/stable/, choose either amd64 or armhf, and download the .deb file for the Docker CE version you want to install.&lt;br /&gt;
&lt;br /&gt;
I am  stretch so&lt;br /&gt;
 apt install libltdl7&lt;br /&gt;
&lt;br /&gt;
http://mirrors.aliyun.com/docker-ce/linux/debian/dists/stretch/pool/stable/amd64/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Docker入门]]&lt;br /&gt;
&lt;br /&gt;
=docker代理设置=&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#不要少了开头的service 还要记得check一个代理成功不  昨天就是 另外两台机器 也写了 127.0.0.1 丢人&lt;br /&gt;
mkdir -p /etc/systemd/system/docker.service.d&lt;br /&gt;
vi /etc/systemd/system/docker.service.d/http-proxy.conf&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Environment=&amp;quot;HTTPS_PROXY=http://192.168.10.158:8118/&amp;quot; &amp;quot;HTTP_PROXY=http://127.0.0.1:8118/&amp;quot; &amp;quot;NO_PROXY=localhost,127.0.0.1,192.168.88.67,10.96.0.0,10.224.0.0&amp;quot;&lt;br /&gt;
#Environment=&amp;quot;HTTPS_PROXY=http://127.0.0.1:8123/&amp;quot; &amp;quot;HTTP_PROXY=http://127.0.0.1:8123/&amp;quot; &amp;quot;NO_PROXY=localhost,127.0.0.1,192.168.88.67,10.96.0.0,10.224.0.0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#Environment=&amp;quot;HTTP_PROXY=http://proxy.example.com:80/&amp;quot; &amp;quot;HTTPS_PROXY=http://proxy.example.com:80/&amp;quot;&amp;quot;NO_PROXY=localhost,127.0.0.1,docker-registry.somecorporation.com&amp;quot;&lt;br /&gt;
&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl restart docker &lt;br /&gt;
systemctl enable docker&lt;br /&gt;
&lt;br /&gt;
systemctl show --property=Environment docker&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
other&lt;br /&gt;
evan@k8s-master:~$ sudo systemctl enable docker &lt;br /&gt;
Synchronizing state of docker.service with SysV service script with /lib/systemd/systemd-sysv-install.&lt;br /&gt;
Executing: /lib/systemd/systemd-sysv-install enable docker&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[https://docs.docker.com/config/daemon/systemd/ docker http-proxy]&lt;br /&gt;
&lt;br /&gt;
[https://www.jianshu.com/p/1cb70b8ea2d7 docker 代理设置]&lt;br /&gt;
&lt;br /&gt;
[https://blog.frognew.com/2017/01/docker-http-proxy.html docker代理配置-透过代理服务器pull镜像]&lt;br /&gt;
&lt;br /&gt;
[http://silenceper.com/blog/201809/over-the-wall-pull-docker-mirror/ docker pull 翻墙下载镜像]&lt;br /&gt;
&lt;br /&gt;
[https://blog.csdn.net/northeastsqure/article/details/60143144 docker设置代理]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://www.cnblogs.com/atuotuo/p/7298673.html docker - 设置HTTP/HTTPS 代理]&lt;br /&gt;
&lt;br /&gt;
=ins 在所有节点上=&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
swapoff -a;  sudo usermod -a -G docker $USER&lt;br /&gt;
&lt;br /&gt;
sudo apt update &amp;amp;&amp;amp; sudo apt install apt-transport-https ca-certificates curl software-properties-common -y&lt;br /&gt;
&lt;br /&gt;
修改docker cgroup driver为systemd&lt;br /&gt;
&lt;br /&gt;
根据文档CRI installation中的内容，对于使用systemd作为init system的Linux的发行版，使用systemd作为docker的cgroup driver可以确保服务器节点在资源紧张的情况更加稳定，因此这里修改各个节点上docker的cgroup driver为systemd。&lt;br /&gt;
&lt;br /&gt;
创建或修改/etc/docker/daemon.json&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;exec-opts&amp;quot;: [&amp;quot;native.cgroupdriver=systemd&amp;quot;]&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
重启docker：&lt;br /&gt;
&lt;br /&gt;
systemctl restart docker&lt;br /&gt;
&lt;br /&gt;
docker info | grep Cgroup&lt;br /&gt;
Cgroup Driver: systemd&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#国内版&lt;br /&gt;
cat &amp;lt;&amp;lt;EOF &amp;gt;/etc/apt/sources.list.d/kubernetes.list&lt;br /&gt;
deb https://mirrors.huaweicloud.com/kubernetes/apt/ kubernetes-xenial main&lt;br /&gt;
EOF&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
apt  install gnupg  -y  &lt;br /&gt;
 curl -s https://mirrors.huaweicloud.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -&lt;br /&gt;
#4、更新索引文件并安装kubernetes&lt;br /&gt;
sudo apt update&lt;br /&gt;
sudo apt install -y kubeadm kubelet kubectl &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
apt-get update &amp;amp;&amp;amp; apt-get install -y apt-transport-https curl&lt;br /&gt;
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -&lt;br /&gt;
cat &amp;lt;&amp;lt;EOF &amp;gt;/etc/apt/sources.list.d/kubernetes.list&lt;br /&gt;
deb https://apt.kubernetes.io/ kubernetes-xenial main&lt;br /&gt;
EOF&lt;br /&gt;
apt-get update&lt;br /&gt;
apt-get install -y kubelet kubeadm kubectl&lt;br /&gt;
apt-mark hold kubelet kubeadm kubectl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#init  之前不要启动&lt;br /&gt;
#systemctl start kubelet&amp;amp;&amp;amp;  systemctl enable kubelet.service&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
启动不了&lt;br /&gt;
原来是kubelet 的cgroup dirver 与 docker的不一样。docker默认使用cgroupfs,keubelet 默认使用systemd。&lt;br /&gt;
&lt;br /&gt;
https://kubernetes.io/docs/setup/cri/&lt;br /&gt;
&lt;br /&gt;
cat &amp;gt; /etc/docker/daemon.json &amp;lt;&amp;lt;EOF&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;exec-opts&amp;quot;: [&amp;quot;native.cgroupdriver=systemd&amp;quot;],&lt;br /&gt;
  &amp;quot;log-driver&amp;quot;: &amp;quot;json-file&amp;quot;,&lt;br /&gt;
  &amp;quot;log-opts&amp;quot;: {&lt;br /&gt;
    &amp;quot;max-size&amp;quot;: &amp;quot;100m&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;storage-driver&amp;quot;: &amp;quot;overlay2&amp;quot;,&lt;br /&gt;
  &amp;quot;storage-opts&amp;quot;: [&lt;br /&gt;
    &amp;quot;overlay2.override_kernel_check=true&amp;quot;&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
EOF&lt;br /&gt;
&lt;br /&gt;
mkdir -p /etc/systemd/system/docker.service.d&lt;br /&gt;
&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl restart docker&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#这个有改的 18.04上成功了的&lt;br /&gt;
vim /etc/systemd/system/kubelet.service.d/10-kubeadm.conf &lt;br /&gt;
[Service]&lt;br /&gt;
Environment=&amp;quot;KUBELET_AUTHZ_ARGS=--authorization-mode=Webhook --client-ca-file=/etc/kubernetes/pki/ca.crt&amp;quot;&lt;br /&gt;
Environment=&amp;quot;KUBELET_CADVISOR_ARGS=--cadvisor-port=0&amp;quot;&lt;br /&gt;
Environment=&amp;quot;KUBELET_CGROUP_ARGS=--cgroup-driver=cgroupfs&amp;quot;&lt;br /&gt;
&lt;br /&gt;
systemctl daemon-reload &amp;amp;&amp;amp; systemctl restart kubelet &amp;amp;&amp;amp;  systemctl enable kubelet.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=在 Master 节点上配置 kubelet 所需的 cgroup 驱动=&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
使用 Docker 时，kubeadm 会自动为其检测 cgroup 驱动在运行时对 /var/lib/kubelet/kubeadm-flags.env 文件进行配置。 &lt;br /&gt;
如果您使用了不同的 CRI， 您得把 /etc/default/kubelet 文件中的 cgroup-driver 位置改为对应的值，像这样：&lt;br /&gt;
&lt;br /&gt;
KUBELET_EXTRA_ARGS=--cgroup-driver=&amp;lt;value&amp;gt;&lt;br /&gt;
&lt;br /&gt;
这个文件将会被 kubeadm init 和 kubeadm join 用于为 kubelet 获取 额外的用户参数。&lt;br /&gt;
&lt;br /&gt;
请注意，您只需要在您的 cgroup driver 不是 cgroupfs 时这么做，因为 cgroupfs 已经是 kubelet 的默认值了。&lt;br /&gt;
&lt;br /&gt;
systemctl daemon-reload; systemctl restart kubelet #需要重启 kubelet：&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/etc/systemd/system/kubelet.service.d/10-kubeadm.conf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This error is likely caused by:&lt;br /&gt;
	- The kubelet is not running&lt;br /&gt;
	- The kubelet is unhealthy due to a misconfiguration of the node in some way (required cgroups disabled)&lt;br /&gt;
#me  2020&lt;br /&gt;
evan@k8s-master:~$ cat /var/lib/kubelet/kubeadm-flags.env &lt;br /&gt;
KUBELET_KUBEADM_ARGS=--cgroup-driver=systemd --network-plugin=cni --pod-infra-container-image=k8s.gcr.io/pause:3.1 --resolv-conf=/run/systemd/resolve/resolv.conf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=初始化master=&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#可以用国内阿里节点 不用FQ了 &lt;br /&gt;
kubeadm init --apiserver-advertise-address=192.168.11.184 --image-repository registry.aliyuncs.com/google_containers --ignore-preflight-errors=all  --kubernetes-version v1.17.1 --service-cidr=10.96.0.0/16 --pod-network-cidr=10.244.0.0/16&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #14:25:52--14:47:55 kubelet 其实是没启动的 在init之前 &lt;br /&gt;
 kubeadm init   --apiserver-advertise-address=192.168.88.30  --pod-network-cidr=10.224.0.0/16 # --apiserver-advertise-address=masterip&lt;br /&gt;
&lt;br /&gt;
kubeadm join 192.168.88.58:6443 --token fuwhe0.ro0c8u82u4xtmn8q \&lt;br /&gt;
    --discovery-token-ca-cert-hash sha256:83bd9c19486c44fde674f4ccf0a7382848cd7bfeff8c361d54e7a2955a4dbd60&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Alternatively, if you are the root user, you can run:&lt;br /&gt;
&lt;br /&gt;
export KUBECONFIG=/etc/kubernetes/admin.conf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
另外有一个小技巧，在init的过程中，另开一个终端，运行&lt;br /&gt;
&lt;br /&gt;
journalctl -f -u kubelet.service&lt;br /&gt;
&lt;br /&gt;
可以查看具体是什么愿意卡住了&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=配置kubectl认证信息=&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat  /etc/sudoers.d/evan&lt;br /&gt;
echo &amp;#039;evan ALL=(ALL) NOPASSWD:NOPASSWD:ALL&amp;#039; &amp;gt; /etc/sudoers.d/evan&lt;br /&gt;
&lt;br /&gt;
su - evan &lt;br /&gt;
mkdir -p $HOME/.kube&lt;br /&gt;
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config&lt;br /&gt;
  sudo chown $(id -u):$(id -g) $HOME/.kube/config&lt;br /&gt;
echo &amp;quot;source &amp;lt;(kubectl completion bash)&amp;quot; &amp;gt;&amp;gt; ~/.bashrc&lt;br /&gt;
exit &lt;br /&gt;
&lt;br /&gt;
# 对于root用户 这省不能少 不然  #  kubectl  apply -f kube-flannel.yml  The connection to the server localhost:8080 was refused - did you specify the right host or port?&lt;br /&gt;
&lt;br /&gt;
export KUBECONFIG=/etc/kubernetes/admin.conf&lt;br /&gt;
#也可以直接放到~/.bash_profile&lt;br /&gt;
echo &amp;quot;export KUBECONFIG=/etc/kubernetes/admin.conf&amp;quot; &amp;gt;&amp;gt; ~/.bash_profile&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=安装pod网络on master=&lt;br /&gt;
&amp;lt;pre&amp;gt;#普通用户 不要翻墙&lt;br /&gt;
 kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=添加节点=&lt;br /&gt;
不要翻墙了 新起个窗口&lt;br /&gt;
&amp;lt;pre&amp;gt;  # on  all node &lt;br /&gt;
kubeadm join 192.168.88.58:6443 --token fuwhe0.ro0c8u82u4xtmn8q \&lt;br /&gt;
    --discovery-token-ca-cert-hash sha256:83bd9c19486c44fde674f4ccf0a7382848cd7bfeff8c361d54e7a2955a4dbd60 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
evan@k8s-master:~$ kubectl get nodes&lt;br /&gt;
NAME   STATUS     ROLES    AGE     VERSION&lt;br /&gt;
k8s    NotReady   master   5h12m   v1.14.2&lt;br /&gt;
u16    NotReady   &amp;lt;none&amp;gt;   106m    v1.14.2&lt;br /&gt;
&lt;br /&gt;
evan@k8s-master:~$ kubectl get pod --all-namespaces&lt;br /&gt;
NAMESPACE     NAME                          READY   STATUS              RESTARTS   AGE&lt;br /&gt;
kube-system   coredns-fb8b8dccf-nprqq       0/1     Terminating         16         5h11m&lt;br /&gt;
kube-system   coredns-fb8b8dccf-qn85f       0/1     Pending             0          5m4s&lt;br /&gt;
kube-system   coredns-fb8b8dccf-sgtw4       0/1     Terminating         16         5h11m&lt;br /&gt;
kube-system   coredns-fb8b8dccf-wsnkg       0/1     Pending             0          5m5s&lt;br /&gt;
kube-system   etcd-k8s                      1/1     Running             0          5h11m&lt;br /&gt;
kube-system   kube-apiserver-k8s            1/1     Running             0          5h11m&lt;br /&gt;
kube-system   kube-controller-manager-k8s   1/1     Running             0          5h11m&lt;br /&gt;
kube-system   kube-flannel-ds-amd64-8vvn6   0/1     Init:0/1            0          107m&lt;br /&gt;
kube-system   kube-flannel-ds-amd64-q92vz   1/1     Running             0          112m&lt;br /&gt;
kube-system   kube-proxy-85vkt              0/1     ContainerCreating   0          107m&lt;br /&gt;
kube-system   kube-proxy-fr7lv              1/1     Running             0          5h11m&lt;br /&gt;
kube-system   kube-scheduler-k8s            1/1     Running             0          5h11m&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
evan@k8s-master:~$ kubectl describe pod  kube-proxy-85vkt  --namespace=kube-system&lt;br /&gt;
Name:               kube-proxy-85vkt&lt;br /&gt;
Namespace:          kube-system&lt;br /&gt;
Priority:           2000001000&lt;br /&gt;
PriorityClassName:  system-node-critical&lt;br /&gt;
Node:               u16/192.168.88.66&lt;br /&gt;
****&lt;br /&gt;
&lt;br /&gt;
Events:&lt;br /&gt;
  Type     Reason                  Age                   From               Message&lt;br /&gt;
  ----     ------                  ----                  ----               -------&lt;br /&gt;
  Normal   Scheduled               109m                  default-scheduler  Successfully assigned kube-system/kube-proxy-85vkt to u16&lt;br /&gt;
  Normal   Pulling                 108m                  kubelet, u16       Pulling image &amp;quot;k8s.gcr.io/kube-proxy:v1.14.2&amp;quot;&lt;br /&gt;
  Normal   Pulled                  107m                  kubelet, u16       Successfully pulled image &amp;quot;k8s.gcr.io/kube-proxy:v1.14.2&amp;quot;&lt;br /&gt;
  Normal   Created                 107m                  kubelet, u16       Created container kube-proxy&lt;br /&gt;
  Normal   Started                 107m                  kubelet, u16       Started container kube-proxy&lt;br /&gt;
  Warning  FailedCreatePodSandBox  52m (x119 over 107m)  kubelet, u16       Failed create pod sandbox: rpc error: code = Unknown desc = failed pulling image &amp;quot;k8s.gcr.io/pause:3.1&amp;quot;: Error response from daemon: Get https://k8s.gcr.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)&lt;br /&gt;
&lt;br /&gt;
放了一个晚上 早上还是坏的 突然打开已是好的了&lt;br /&gt;
&lt;br /&gt;
evan@ubuntu18:~$ kubectl get pod --all-namespaces&lt;br /&gt;
NAMESPACE     NAME                               READY   STATUS    RESTARTS   AGE&lt;br /&gt;
kube-system   coredns-fb8b8dccf-2rbwc            1/1     Running   3          18h&lt;br /&gt;
kube-system   coredns-fb8b8dccf-67zc2            1/1     Running   3          18h&lt;br /&gt;
kube-system   etcd-ubuntu18                      1/1     Running   10         18h&lt;br /&gt;
kube-system   kube-apiserver-ubuntu18            1/1     Running   4          18h&lt;br /&gt;
kube-system   kube-controller-manager-ubuntu18   1/1     Running   5          18h&lt;br /&gt;
kube-system   kube-flannel-ds-amd64-b6bn8        1/1     Running   45         16h&lt;br /&gt;
kube-system   kube-flannel-ds-amd64-v9wxm        1/1     Running   46         16h&lt;br /&gt;
kube-system   kube-flannel-ds-amd64-zn4xd        1/1     Running   3          16h&lt;br /&gt;
kube-system   kube-proxy-d7pmb                   1/1     Running   4          18h&lt;br /&gt;
kube-system   kube-proxy-gcddr                   1/1     Running   0          16h&lt;br /&gt;
kube-system   kube-proxy-lv8cb                   1/1     Running   0          16h&lt;br /&gt;
kube-system   kube-scheduler-ubuntu18            1/1     Running   5          18h&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
master 也当作node  这里的master hostname 为	ubuntu18OB&lt;br /&gt;
evan@ubuntu18:~$ kubectl  taint node ubuntu18 node-role.kubernetes.io/master-&lt;br /&gt;
node/ubuntu18 untainted&lt;br /&gt;
&lt;br /&gt;
#master only&lt;br /&gt;
kubectl  taint node ubuntu18 node-role.kubernetes.io/master=&amp;quot;&amp;quot;:NoSchedule&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=master 也当作node =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 [root@master tomcat]# hostname&lt;br /&gt;
master&lt;br /&gt;
[root@master tomcat]# kubectl taint node master node-role.kubernetes.io/master-&lt;br /&gt;
node/master untainted &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=下面的是不是可以不要翻墙了呢=&lt;br /&gt;
&lt;br /&gt;
=chpater4  k8s architecture=&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#唯一不是容器形式运行的k8s 组件&lt;br /&gt;
evan@k8s-master:~$ sudo systemctl status kubelet.service&lt;br /&gt;
● kubelet.service - kubelet: The Kubernetes Node Agent&lt;br /&gt;
   Loaded: loaded (/lib/systemd/system/kubelet.service; enabled; vendor preset: enabled)&lt;br /&gt;
  Drop-In: /etc/systemd/system/kubelet.service.d&lt;br /&gt;
           └─10-kubeadm.conf&lt;br /&gt;
   Active: active (running) since Mon 2019-05-27 07:26:18 UTC; 21min ago&lt;br /&gt;
     Docs: https://kubernetes.io/docs/home/&lt;br /&gt;
 Main PID: 817 (kubelet)&lt;br /&gt;
    Tasks: 19 (limit: 3499)&lt;br /&gt;
   CGroup: /system.slice/kubelet.service&lt;br /&gt;
           └─817 /usr/bin/kubelet --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf -&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在master节点上发起个创建应用请求 &lt;br /&gt;
这里我们创建个名为httpd-app的应用，镜像为httpd，有两个副本pod&lt;br /&gt;
evan@k8s-master:~$ kubectl run httpd-app --image=httpd --replicas=2&lt;br /&gt;
kubectl run --generator=deployment/apps.v1 is DEPRECATED and will be removed in a future version. Use kubectl run --generator=run-pod/v1 or kubectl create instead.&lt;br /&gt;
deployment.apps/httpd-app created&lt;br /&gt;
&lt;br /&gt;
evan@k8s-master:~$ kubectl get deployment&lt;br /&gt;
NAME        READY   UP-TO-DATE   AVAILABLE   AGE&lt;br /&gt;
httpd-app   0/2     2            0           103s&lt;br /&gt;
&lt;br /&gt;
evan@k8s-master:~$ kubectl get pods -o wide&lt;br /&gt;
NAME                         READY   STATUS              RESTARTS   AGE     IP       NODE        NOMINATED NODE   READINESS GATES&lt;br /&gt;
httpd-app-6df58645c6-bvg9w   0/1     ContainerCreating   0          2m10s   &amp;lt;none&amp;gt;   k8s-node1   &amp;lt;none&amp;gt;           &amp;lt;none&amp;gt;&lt;br /&gt;
httpd-app-6df58645c6-n9xdj   0/1     ContainerCreating   0          2m10s   &amp;lt;none&amp;gt;   k8s-node2   &amp;lt;none&amp;gt;           &amp;lt;none&amp;gt;&lt;br /&gt;
&lt;br /&gt;
evan@k8s-master:~$ kubectl get pods -o wide&lt;br /&gt;
NAME                         READY   STATUS              RESTARTS   AGE     IP           NODE        NOMINATED NODE   READINESS GATES&lt;br /&gt;
httpd-app-6df58645c6-bvg9w   0/1     ContainerCreating   0          3m58s   &amp;lt;none&amp;gt;       k8s-node1   &amp;lt;none&amp;gt;           &amp;lt;none&amp;gt;&lt;br /&gt;
httpd-app-6df58645c6-n9xdj   1/1     Running             0          3m58s   10.224.1.2   k8s-node2   &amp;lt;none&amp;gt;           &amp;lt;none&amp;gt;&lt;br /&gt;
#OK了&lt;br /&gt;
evan@k8s-master:~$ kubectl get pods -o wide&lt;br /&gt;
NAME                         READY   STATUS    RESTARTS   AGE    IP           NODE        NOMINATED NODE   READINESS GATES&lt;br /&gt;
httpd-app-6df58645c6-bvg9w   1/1     Running   0          6m8s   10.224.2.3   k8s-node1   &amp;lt;none&amp;gt;           &amp;lt;none&amp;gt;&lt;br /&gt;
httpd-app-6df58645c6-n9xdj   1/1     Running   0          6m8s   10.224.1.2   k8s-node2   &amp;lt;none&amp;gt;           &amp;lt;none&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=下面 关闭ss docker 代理 polipo =&lt;br /&gt;
&lt;br /&gt;
=chapter 5 run apps=&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
evan@k8s-master:~$ kubectl run nginx-deployment --image=nginx:1.7.9 --replicas=2&lt;br /&gt;
kubectl run --generator=deployment/apps.v1 is DEPRECATED and will be removed in a future version. Use kubectl run --generator=run-pod/v1 or kubectl create instead.&lt;br /&gt;
deployment.apps/nginx-deployment created&lt;br /&gt;
&lt;br /&gt;
上面的命令将部署包含两个副本的 Deployment nginx-deployment，容器的 image 为 nginx:1.7.9。&lt;br /&gt;
&lt;br /&gt;
等待一段时间&lt;br /&gt;
kubectl get deployment nginx-deployment&lt;br /&gt;
NAME               READY   UP-TO-DATE   AVAILABLE   AGE&lt;br /&gt;
nginx-deployment   2/2     2            2           36m&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
接下来我们用 kubectl describe deployment 了解更详细的信息&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=等待=&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo  sslocal -c /root/shadowsocks.json -d start&lt;br /&gt;
 sslocal -c shadowsocks.json -d start&lt;br /&gt;
sslocal -c shadowsocks.json -d start&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=进阶=&lt;br /&gt;
&lt;br /&gt;
[https://blog.csdn.net/shida_csdn/article/details/83176735 K8S 源码探秘 之 kubeadm init 执行流程分析]&lt;br /&gt;
&lt;br /&gt;
[https://blog.csdn.net/m0_37556444/article/details/86494791 kubeadm--init]&lt;br /&gt;
&lt;br /&gt;
[https://www.jianshu.com/p/c01ba5bd1359?utm_campaign=maleskine&amp;amp;utm_content=note&amp;amp;utm_medium=seo_notes&amp;amp;utm_source=recommendation 安装k8s Master高可用集群]&lt;br /&gt;
&lt;br /&gt;
=What is new=&lt;br /&gt;
在Kubernetes 1.11中，CoreDNS已经实现了基于DNS的服务发现的GA，可作为kube-dns插件的替代品。这意味着CoreDNS将作为各种安装工具未来发布版本中的一个选项来提供。&lt;br /&gt;
事实上，kubeadm团队选择将其作为Kubernetes 1.11的默认选项。&lt;br /&gt;
&lt;br /&gt;
[https://blog.csdn.net/k8scaptain/article/details/81033095 CoreDNS正式GA | kube-dns与CoreDNS有何差异？]&lt;br /&gt;
&lt;br /&gt;
[https://juejin.im/post/5b46100de51d4519105d37e3 k8s集群配置使用coredns代替kube-dns]&lt;br /&gt;
&lt;br /&gt;
=trouble=&lt;br /&gt;
==2020==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
换个国内的源好了 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[kubelet-check] Initial timeout of 40s passed.&lt;br /&gt;
&lt;br /&gt;
Unfortunately, an error has occurred:&lt;br /&gt;
	timed out waiting for the condition&lt;br /&gt;
&lt;br /&gt;
This error is likely caused by:&lt;br /&gt;
	- The kubelet is not running&lt;br /&gt;
	- The kubelet is unhealthy due to a misconfiguration of the node in some way (required cgroups disabled)&lt;br /&gt;
&lt;br /&gt;
If you are on a systemd-powered system, you can try to troubleshoot the error with the following commands:&lt;br /&gt;
	- &amp;#039;systemctl status kubelet&amp;#039;&lt;br /&gt;
	- &amp;#039;journalctl -xeu kubelet&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Additionally, a control plane component may have crashed or exited when started by the container runtime.&lt;br /&gt;
To troubleshoot, list all containers using your preferred container runtimes CLI, e.g. docker.&lt;br /&gt;
Here is one example how you may list all Kubernetes containers running in docker:&lt;br /&gt;
	- &amp;#039;docker ps -a | grep kube | grep -v pause&amp;#039;&lt;br /&gt;
	Once you have found the failing container, you can inspect its logs with:&lt;br /&gt;
	- &amp;#039;docker logs CONTAINERID&amp;#039;&lt;br /&gt;
error execution phase wait-control-plane: couldn&amp;#039;t initialize a Kubern&lt;br /&gt;
To see the stack trace of this error execute with --v=5 or higher&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Kubenetes服务不启动问题 ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
重启系统后，发现kubelet服务没有起来，首先检查：&lt;br /&gt;
&lt;br /&gt;
 1.vim  /etc/fstab&lt;br /&gt;
#注释掉里面的swap一行。&lt;br /&gt;
&lt;br /&gt;
2&lt;br /&gt;
/etc/systemd/system/kubelet.service.d/10-kubeadm.conf 文件加入KUBELET_CGROUP_ARGS和KUBELET_EXTRA_ARGS参数，&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3.注意在启动参数中也要加入，如下：&lt;br /&gt;
[Service]&lt;br /&gt;
&lt;br /&gt;
Environment=&amp;quot;KUBELET_CGROUP_ARGS=--cgroup-driver=systemd&amp;quot;&lt;br /&gt;
Environment=&amp;quot;KUBELET_EXTRA_ARGS=--fail-swap-on=false&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ExecStart=&lt;br /&gt;
ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_SYSTEM_PODS_ARGS $KUBELET_NETWORK_ARGS $KUBELET_DNS_ARGS $KUBELET_AUTHZ_ARGS $KUBELET_CADVISOR_ARGS $KUBELET_CERTIFICATE_ARGS $KUBELET_CGROUP_ARGS $KUBELET_EXTRA_ARGS&lt;br /&gt;
&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl restart kubelet&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== trouble2 重启一下机器就坏== &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
这个如果用国内源 要指定init的版本 安装时后面有00 软件名使用时没有 00&lt;br /&gt;
为什么重启一下机器就坏了呢&lt;br /&gt;
&lt;br /&gt;
systemctl  status  kubelet&lt;br /&gt;
● kubelet.service - kubelet: The Kubernetes Node Agent&lt;br /&gt;
   Loaded: loaded (/lib/systemd/system/kubelet.service; enabled; vendor preset: enabled)&lt;br /&gt;
  Drop-In: /etc/systemd/system/kubelet.service.d&lt;br /&gt;
           └─10-kubeadm.conf&lt;br /&gt;
   Active: activating (auto-restart) (Result: exit-code) since Fri 2019-05-24 20:27:22 CST; 1s ago&lt;br /&gt;
     Docs: https://kubernetes.io/docs/home/&lt;br /&gt;
  Process: 1889 ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS (cod&lt;br /&gt;
 Main PID: 1889 (code=exited, status=255)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
kubelet.service: Main process exited, code=exited, status=255&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
journalctl -xefu kubelet&lt;br /&gt;
&lt;br /&gt;
原来是kubelet 的cgroup dirver 与 docker的不一样。docker默认使用cgroupfs,keubelet 默认使用systemd。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
简单地说就是在kubeadm init 之前kubelet会不断重启。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[kubelet-check] Initial timeout of 40s passed.&lt;br /&gt;
&lt;br /&gt;
Unfortunately, an error has occurred:&lt;br /&gt;
	timed out waiting for the condition&lt;br /&gt;
&lt;br /&gt;
This error is likely caused by:&lt;br /&gt;
	- The kubelet is not running&lt;br /&gt;
	- The kubelet is unhealthy due to a misconfiguration of the node in some way (required cgroups disabled)&lt;br /&gt;
&lt;br /&gt;
If you are on a systemd-powered system, you can try to troubleshoot the error with the following commands:&lt;br /&gt;
	- &amp;#039;systemctl status kubelet&amp;#039;&lt;br /&gt;
	- &amp;#039;journalctl -xeu kubelet&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在集群初始化遇到问题，可以使用下面的命令进行清理后重新再初始化：&lt;br /&gt;
&lt;br /&gt;
kubeadm reset&lt;br /&gt;
ifconfig cni0 down&lt;br /&gt;
ip link delete cni0&lt;br /&gt;
ifconfig flannel.1 down&lt;br /&gt;
ip link delete flannel.1&lt;br /&gt;
rm -rf /var/lib/cni/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://segmentfault.com/q/1010000015988481 K8S 初始化问题，有哪位遇到过，求解！timed out waiting for the condition]&lt;br /&gt;
&lt;br /&gt;
== trouble3 ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
evan@k8s-master:~$ docker pull gcr.io/kubernetes-helm/tiller:v2.14.0&lt;br /&gt;
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.39/images/create?fromImage=gcr.io%2Fkubernetes-helm%2Ftiller&amp;amp;tag=v2.14.0: dial unix /var/run/docker.sock: connect: permission denied&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    sudo usermod -a -G docker $USER #普通用户添加天docker 组&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[https://www.cnblogs.com/informatics/p/8276172.html Docker pull Get Permission Denied]&lt;br /&gt;
&lt;br /&gt;
==trouble 3 ==&lt;br /&gt;
 docker  223.6.6.6 有时有问题 建议用8.8.4.4&lt;br /&gt;
&lt;br /&gt;
=see also=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://www.jobbible.cn/2019/06/18/205/ 在国内使用阿里云镜像源搭建Kubernetes环境]&lt;br /&gt;
&lt;br /&gt;
[https://www.jianshu.com/p/21a39ee86311?utm_campaign=maleskine&amp;amp;utm_content=note&amp;amp;utm_medium=seo_notes&amp;amp;utm_source=recommendation ubuntu 离线搭建Kubenetes1.9.2 集群]&lt;br /&gt;
&lt;br /&gt;
[https://www.cnblogs.com/RainingNight/p/using-kubeadm-to-create-a-cluster-1-12.html 使用Kubeadm搭建Kubernetes(1.12.2)集群]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://www.debian.cn/archives/3076 Debian 9 使用kubeadm创建 k8s 集群（上）]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://www.debian.cn/archives/3078 Debian 9 使用kubeadm创建 k8s 集群（下）]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://www.linuxtechi.com/install-configure-kubernetes-ubuntu-18-04-ubuntu-18-10/ Install and Configure Kubernetes (k8s) 1.13 on Ubuntu 18.04 LTS / Ubuntu 18.10]&lt;br /&gt;
&lt;br /&gt;
[https://www.kubernetes.org.cn/4387.html Ubuntu 18.04 离线安装Kubernetes v1.11.1]&lt;br /&gt;
&lt;br /&gt;
[https://www.cnblogs.com/Leo_wl/p/8511902.html 安装部署 Kubernetes 集群]&lt;br /&gt;
&lt;br /&gt;
https://www.kubernetes.org.cn/course/install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Install and Configure Kubernetes (k8s) on ubuntu]]&lt;br /&gt;
&lt;br /&gt;
[https://my.oschina.net/Kanonpy/blog/3006129 kubernetes部署（kubeadm国内镜像源）]&lt;br /&gt;
&lt;br /&gt;
[https://zhuanlan.zhihu.com/p/83254020 Debian 10中部署Kubernetes]&lt;br /&gt;
&lt;br /&gt;
[https://www.cnblogs.com/xuxinkun/p/11025020.html docker/kubernetes国内源/镜像源解决方式]&lt;br /&gt;
[https://cloud.tencent.com/developer/article/1461571 k8s常见报错解决--持续更新]&lt;br /&gt;
&lt;br /&gt;
[https://blog.magichc7.com/post/how-to-install-kubernetes-in-China.html 如何在国内安装K8S]&lt;br /&gt;
&lt;br /&gt;
[https://my.oschina.net/u/4657223/blog/4695879 Kubernetes动手系列：手把手教你10分钟快速部署集群]&lt;br /&gt;
&lt;br /&gt;
[[category:k8s]] [[category:容器]] [[category: container]]&lt;/div&gt;</summary>
		<author><name>Evan</name></author>
	</entry>
</feed>