002.使用kubeadm安装kubernetes 1.17.0
<h2>一 环境准备</h2><h3>1.1 环境说明</h3>
<p>master 192.168.132.131 docker-server1</p>
<p>node1 192.168.132.132 docker-server2</p>
<p>node2 192.168.132.133 docker-server3</p>
<h3>1.2 docker版本</h3>
<p># docker version</p>
<div class="cnblogs_code">
<pre>Client: Docker Engine -<span style="color: rgba(0, 0, 0, 1)"> Community
Version: </span><span style="color: rgba(128, 0, 128, 1)">19.03</span>.<span style="color: rgba(128, 0, 128, 1)">5</span><span style="color: rgba(0, 0, 0, 1)">
API version: </span><span style="color: rgba(128, 0, 128, 1)">1.40</span><span style="color: rgba(0, 0, 0, 1)">
Go version: go1.</span><span style="color: rgba(128, 0, 128, 1)">12.12</span><span style="color: rgba(0, 0, 0, 1)">
Git commit: 633a0ea
Built: Wed Nov </span><span style="color: rgba(128, 0, 128, 1)">13</span> <span style="color: rgba(128, 0, 128, 1)">07</span>:<span style="color: rgba(128, 0, 128, 1)">25</span>:<span style="color: rgba(128, 0, 128, 1)">41</span> <span style="color: rgba(128, 0, 128, 1)">2019</span><span style="color: rgba(0, 0, 0, 1)">
OS</span>/Arch: linux/<span style="color: rgba(0, 0, 0, 1)">amd64
Experimental: </span><span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">
Server: Docker Engine </span>-<span style="color: rgba(0, 0, 0, 1)"> Community
Engine:
Version: </span><span style="color: rgba(128, 0, 128, 1)">19.03</span>.<span style="color: rgba(128, 0, 128, 1)">5</span><span style="color: rgba(0, 0, 0, 1)">
API version: </span><span style="color: rgba(128, 0, 128, 1)">1.40</span> (minimum version <span style="color: rgba(128, 0, 128, 1)">1.12</span><span style="color: rgba(0, 0, 0, 1)">)
Go version: go1.</span><span style="color: rgba(128, 0, 128, 1)">12.12</span><span style="color: rgba(0, 0, 0, 1)">
Git commit: 633a0ea
Built: Wed Nov </span><span style="color: rgba(128, 0, 128, 1)">13</span> <span style="color: rgba(128, 0, 128, 1)">07</span>:<span style="color: rgba(128, 0, 128, 1)">24</span>:<span style="color: rgba(128, 0, 128, 1)">18</span> <span style="color: rgba(128, 0, 128, 1)">2019</span><span style="color: rgba(0, 0, 0, 1)">
OS</span>/Arch: linux/<span style="color: rgba(0, 0, 0, 1)">amd64
Experimental: </span><span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">
containerd:
Version: </span><span style="color: rgba(128, 0, 128, 1)">1.2</span>.<span style="color: rgba(128, 0, 128, 1)">10</span><span style="color: rgba(0, 0, 0, 1)">
GitCommit: b34a5c8af56e510852c35414db4c1f4fa6172339
runc:
Version: </span><span style="color: rgba(128, 0, 128, 1)">1.0</span>.<span style="color: rgba(128, 0, 128, 1)">0</span>-rc8+<span style="color: rgba(0, 0, 0, 1)">dev
GitCommit: 3e425f80a8c931f88e6d94a8c831b9d5aa481657
docker</span>-<span style="color: rgba(0, 0, 0, 1)">init:
Version: </span><span style="color: rgba(128, 0, 128, 1)">0.18</span>.<span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">
GitCommit: fec3683</span></pre>
</div>
<p>关闭selinxu,防火墙</p>
<h3>1.3 相关组件版本说明</h3>
<table>
<thead>
<tr class="header"><th>组件</th><th>版本</th><th>说明</th></tr>
</thead>
<tbody>
<tr class="odd">
<td>kubernetes</td>
<td>1.16.2</td>
<td>主程序</td>
</tr>
<tr class="even">
<td>docker</td>
<td>19.03.3</td>
<td>容器</td>
</tr>
<tr class="odd">
<td>flannel</td>
<td>0.11.0</td>
<td>网络插件</td>
</tr>
<tr class="even">
<td>etcd</td>
<td>3.3.15</td>
<td>数据库</td>
</tr>
<tr class="odd">
<td>coredns</td>
<td>1.6.2</td>
<td>dns组件</td>
</tr>
<tr class="even">
<td>kubernetes-dashboard</td>
<td>2.0.0-beta5</td>
<td>web界面</td>
</tr>
<tr class="odd">
<td>ingress-nginx</td>
<td>0.26.1</td>
<td>ingress</td>
</tr>
</tbody>
</table>
<p> </p>
<h2>二 安装kubernetes 1.17.0</h2>
<h3>2.1 组件</h3>
<p>三个节点都需要安装下面三个组件</p>
<p>kubeadm:安装工具,安装后,所有的组件都会以容器的方式运行</p>
<p>kubectl:是一个客户端 </p>
<p>kubelet:运行在node节点,用来启动容器的工具</p>
<p>使用yum安装,使用阿里云的yum源https://developer.aliyun.com/mirror</p>
<p>https://developer.aliyun.com/mirror/kubernetes?spm=a2c6h.13651102.0.0.53322f705Hg6zu</p>
<h3>2.2 配置yum源</h3>
<p>根据文档,给三台机器配置yum源,安装</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">cat</span> <<EOF > /etc/<span style="color: rgba(0, 0, 255, 1)">yum</span>.repos.d/<span style="color: rgba(0, 0, 0, 1)">kubernetes.repo
name</span>=<span style="color: rgba(0, 0, 0, 1)">Kubernetes
baseurl</span>=https:<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/</span>
enabled=<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">
gpgcheck</span>=<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">
repo_gpgcheck</span>=<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">
gpgkey</span>=https:<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg </span><span style="color: rgba(0, 128, 0, 1); text-decoration: underline">https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg</span>
<span style="color: rgba(0, 0, 0, 1)">EOF<br></span></pre>
</div>
<p># yum info kubeadm</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
</span>*<span style="color: rgba(0, 0, 0, 1)"> base: mirror.hostlink.com.hk
</span>*<span style="color: rgba(0, 0, 0, 1)"> epel: my.fedora.ipserverone.com
</span>*<span style="color: rgba(0, 0, 0, 1)"> extras: mirror.hostlink.com.hk
</span>*<span style="color: rgba(0, 0, 0, 1)"> updates: hk.mirrors.thegigabit.com
Available Packages
Name : kubeadm
Arch : x86_64
Version : </span><span style="color: rgba(128, 0, 128, 1)">1.17</span>.<span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">
Release : </span><span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">
Size : </span><span style="color: rgba(128, 0, 128, 1)">8.7</span><span style="color: rgba(0, 0, 0, 1)"> M
Repo : kubernetes
Summary : Command</span>-line utility <span style="color: rgba(0, 0, 255, 1)">for</span><span style="color: rgba(0, 0, 0, 1)"> administering a Kubernetes cluster.
URL : https:</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">kubernetes.io</span>
License : ASL <span style="color: rgba(128, 0, 128, 1)">2.0</span><span style="color: rgba(0, 0, 0, 1)">
Description : Command</span>-line utility <span style="color: rgba(0, 0, 255, 1)">for</span> administering a Kubernetes cluster.</pre>
</div>
<p>目前最新版本是1.17</p>
<h3>2.3 安装</h3>
<p># yum install -y kubelet kubeadm kubectl</p>
<p># yum install -y kubelet kubeadm kubectl</p>
<p># yum install -y kubelet kubeadm kubectl</p>
<p># rpm -aq|grep kube</p>
<div class="cnblogs_code">
<pre>kubeadm-<span style="color: rgba(128, 0, 128, 1)">1.17</span>.<span style="color: rgba(128, 0, 128, 1)">0</span>-<span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">.x86_64
kubernetes</span>-cni-<span style="color: rgba(128, 0, 128, 1)">0.7</span>.<span style="color: rgba(128, 0, 128, 1)">5</span>-<span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">.x86_64
kubectl</span>-<span style="color: rgba(128, 0, 128, 1)">1.17</span>.<span style="color: rgba(128, 0, 128, 1)">0</span>-<span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">.x86_64
kubelet</span>-<span style="color: rgba(128, 0, 128, 1)">1.17</span>.<span style="color: rgba(128, 0, 128, 1)">0</span>-<span style="color: rgba(128, 0, 128, 1)">0</span>.x86_64</pre>
</div>
<p># systemctl enable kubelet && systemctl start kubelet</p>
<p># systemctl enable kubelet && systemctl start kubelet</p>
<p># systemctl enable kubelet && systemctl start kubelet</p>
<h3>2.4 加载内核模块</h3>
<p>所有节点操作</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">cat</span> > /etc/sysconfig/modules/ipvs.modules <<<span style="color: rgba(0, 0, 0, 1)">EOF
#</span>!/bin/<span style="color: rgba(0, 0, 0, 1)">bash
</span><span style="color: rgba(0, 0, 255, 1)">modprobe</span> --<span style="color: rgba(0, 0, 0, 1)"> br_netfilter
</span><span style="color: rgba(0, 0, 255, 1)">modprobe</span> --<span style="color: rgba(0, 0, 0, 1)"> ip_vs
</span><span style="color: rgba(0, 0, 255, 1)">modprobe</span> --<span style="color: rgba(0, 0, 0, 1)"> ip_vs_rr
</span><span style="color: rgba(0, 0, 255, 1)">modprobe</span> --<span style="color: rgba(0, 0, 0, 1)"> ip_vs_wrr
</span><span style="color: rgba(0, 0, 255, 1)">modprobe</span> --<span style="color: rgba(0, 0, 0, 1)"> ip_vs_sh
</span><span style="color: rgba(0, 0, 255, 1)">modprobe</span> --<span style="color: rgba(0, 0, 0, 1)"> nf_conntrack_ipv4
EOF
</span><span style="color: rgba(0, 0, 255, 1)">chmod</span> <span style="color: rgba(128, 0, 128, 1)">755</span> /etc/sysconfig/modules/ipvs.modules &&<span style="color: rgba(0, 0, 0, 1)"> \
bash </span>/etc/sysconfig/modules/ipvs.modules &&<span style="color: rgba(0, 0, 0, 1)"> \
</span><span style="color: rgba(0, 0, 255, 1)">lsmod</span> | <span style="color: rgba(0, 0, 255, 1)">grep</span> -E <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">ip_vs|nf_conntrack_ipv4</span><span style="color: rgba(128, 0, 0, 1)">"</span></pre>
</div>
<p>输出结果</p>
<div class="cnblogs_code">
<pre>ip_vs_sh <span style="color: rgba(128, 0, 128, 1)">12688</span><span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">
ip_vs_wrr </span><span style="color: rgba(128, 0, 128, 1)">12697</span><span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">
ip_vs_rr </span><span style="color: rgba(128, 0, 128, 1)">12600</span><span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">
ip_vs </span><span style="color: rgba(128, 0, 128, 1)">145497</span><span style="color: rgba(128, 0, 128, 1)">6</span><span style="color: rgba(0, 0, 0, 1)"> ip_vs_rr,ip_vs_sh,ip_vs_wrr
nf_conntrack_ipv4 </span><span style="color: rgba(128, 0, 128, 1)">15053</span><span style="color: rgba(128, 0, 128, 1)">5</span><span style="color: rgba(0, 0, 0, 1)">
nf_defrag_ipv4 </span><span style="color: rgba(128, 0, 128, 1)">12729</span><span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)"> nf_conntrack_ipv4
nf_conntrack </span><span style="color: rgba(128, 0, 128, 1)">139224</span><span style="color: rgba(128, 0, 128, 1)">7</span><span style="color: rgba(0, 0, 0, 1)"> ip_vs,nf_nat,nf_nat_ipv4,xt_conntrack,nf_nat_masquerade_ipv4,nf_conntrack_netlink,nf_conntrack_ipv4
libcrc32c </span><span style="color: rgba(128, 0, 128, 1)">12644</span><span style="color: rgba(128, 0, 128, 1)">4</span> xfs,ip_vs,nf_nat,nf_conntrack</pre>
</div>
<h3 id="配置kubeadm-config.yaml">2.5 配置kubeadm-config.yaml</h3>
<p>kubeadm-config.yaml组成部署说明:</p>
<ul>
<li>InitConfiguration: 用于定义一些初始化配置,如初始化使用的token以及apiserver地址等</li>
<li>ClusterConfiguration:用于定义apiserver、etcd、network、scheduler、controller-manager等master组件相关配置项</li>
<li>KubeletConfiguration:用于定义kubelet组件相关的配置项</li>
<li>KubeProxyConfiguration:用于定义kube-proxy组件相关的配置项</li>
</ul>
<p>在master节点安装,master定于为192.168.132.131,通过如下指令创建默认的kubeadm-config.yaml文件:</p>
<p># kubeadm config print init-defaults > kubeadm-config.yaml</p>
<div class="cnblogs_code">
<pre>W0109 <span style="color: rgba(128, 0, 128, 1)">11</span>:<span style="color: rgba(128, 0, 128, 1)">47</span>:<span style="color: rgba(128, 0, 128, 1)">10.868273</span> <span style="color: rgba(128, 0, 128, 1)">8650</span> validation.go:<span style="color: rgba(128, 0, 128, 1)">28</span>] Cannot validate kube-proxy config -<span style="color: rgba(0, 0, 0, 1)"> no validator is available
W0109 </span><span style="color: rgba(128, 0, 128, 1)">11</span>:<span style="color: rgba(128, 0, 128, 1)">47</span>:<span style="color: rgba(128, 0, 128, 1)">10.868611</span> <span style="color: rgba(128, 0, 128, 1)">8650</span> validation.go:<span style="color: rgba(128, 0, 128, 1)">28</span>] Cannot validate kubelet config - no validator is available</pre>
</div>
<p>kubeadm-config.yaml配置</p>
<p># vim kubeadm-config.yam</p>
<div class="cnblogs_code">
<pre>apiVersion: kubeadm.k8s.io/<span style="color: rgba(0, 0, 0, 1)">v1beta2
bootstrapTokens:
</span>- <span style="color: rgba(0, 0, 255, 1)">groups</span><span style="color: rgba(0, 0, 0, 1)">:
</span>- system:bootstrappers:kubeadm:default-node-<span style="color: rgba(0, 0, 0, 1)">token
token: abcdef.0123456789abcdef
ttl: 24h0m0s
usages:
</span>-<span style="color: rgba(0, 0, 0, 1)"> signing
</span>-<span style="color: rgba(0, 0, 0, 1)"> authentication
kind: InitConfiguration
localAPIEndpoint:
advertiseAddress: 192.168.132.131 #master节点的IP</span><span style="color: rgba(0, 0, 0, 1)">
bindPort: </span><span style="color: rgba(128, 0, 128, 1)">6443</span><span style="color: rgba(0, 0, 0, 1)">
nodeRegistration:
criSocket: </span>/var/run/<span style="color: rgba(0, 0, 0, 1)">dockershim.sock
name: 192.168.132.131 #这里修改为IP地址,使用域名,必须保证解析</span><span style="color: rgba(0, 0, 0, 1)">
taints:
</span>-<span style="color: rgba(0, 0, 0, 1)"> effect: NoSchedule
key: node</span>-role.kubernetes.io/<span style="color: rgba(0, 0, 0, 1)">master
</span>---<span style="color: rgba(0, 0, 0, 1)">
apiServer:
timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io</span>/<span style="color: rgba(0, 0, 0, 1)">v1beta2
certificatesDir: </span>/etc/kubernetes/<span style="color: rgba(0, 0, 0, 1)">pki
clusterName: kubernetes
controllerManager: {}
dns:
type: CoreDNS
etcd:
local:
dataDir: </span>/var/lib/<span style="color: rgba(0, 0, 0, 1)">etcd #把etcd容器的目录挂载到本地的/var/lib/etcd目录下,防止数据丢失
imageRepository: k8s.gcr.io #镜像仓库地址,在国内的话,可以修改为gcr.azk8s.cn/google_containers
kind: ClusterConfiguration
kubernetesVersion: v1.</span><span style="color: rgba(128, 0, 128, 1)">17.0 #k8s版本</span><span style="color: rgba(0, 0, 0, 1)">
networking:
dnsDomain: cluster.local
serviceSubnet: </span><span style="color: rgba(128, 0, 128, 1)">10.96</span>.<span style="color: rgba(128, 0, 128, 1)">0.0</span>/<span style="color: rgba(128, 0, 128, 1)">12</span><span style="color: rgba(0, 0, 0, 1)">
scheduler: {}</span></pre>
</div>
<h3>2.6 部署master</h3>
<p>安装matser节点</p>
<p># kubeadm init --config kubeadm-config.yaml</p>
<div class="cnblogs_code">
<pre>W0109 <span style="color: rgba(128, 0, 128, 1)">12</span>:<span style="color: rgba(128, 0, 128, 1)">00</span>:<span style="color: rgba(128, 0, 128, 1)">50.984638</span> <span style="color: rgba(128, 0, 128, 1)">10134</span> validation.go:<span style="color: rgba(128, 0, 128, 1)">28</span>] Cannot validate kube-proxy config -<span style="color: rgba(0, 0, 0, 1)"> no validator is available
W0109 </span><span style="color: rgba(128, 0, 128, 1)">12</span>:<span style="color: rgba(128, 0, 128, 1)">00</span>:<span style="color: rgba(128, 0, 128, 1)">50.984791</span> <span style="color: rgba(128, 0, 128, 1)">10134</span> validation.go:<span style="color: rgba(128, 0, 128, 1)">28</span>] Cannot validate kubelet config -<span style="color: rgba(0, 0, 0, 1)"> no validator is available
Using Kubernetes version: v1.</span><span style="color: rgba(128, 0, 128, 1)">17.0</span><span style="color: rgba(0, 0, 0, 1)">
Running pre</span>-<span style="color: rgba(0, 0, 0, 1)">flight checks
: docker service is not enabled, please run <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">systemctl enable docker.service</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">
: detected </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">cgroupfs</span><span style="color: rgba(128, 0, 0, 1)">"</span> as the Docker cgroup driver. The recommended driver is <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">systemd</span><span style="color: rgba(128, 0, 0, 1)">"</span>. Please follow the guide at https:<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">kubernetes.io/docs/setup/cri/</span>
<span style="color: rgba(0, 0, 0, 1)">error execution phase preflight: Some fatal errors occurred:
: running with swap on is not supported. Please disable swap
: /var/lib/<span style="color: rgba(0, 0, 0, 1)">etcd is not empty
If you know what you are doing, you can </span><span style="color: rgba(0, 0, 255, 1)">make</span> a check non-fatal with `--ignore-preflight-errors=<span style="color: rgba(0, 0, 0, 1)">...`
To see the stack trace of this error execute with </span>--v=<span style="color: rgba(128, 0, 128, 1)">5</span> or higher</pre>
</div>
<p>是在学习docker安装的etcd,删除这个文件</p>
<p># rm -rf /var/lib/etcd/</p>
<p># kubeadm init --config kubeadm-config.yaml</p>
<div class="cnblogs_code">
<pre>W0109 <span style="color: rgba(128, 0, 128, 1)">12</span>:<span style="color: rgba(128, 0, 128, 1)">01</span>:<span style="color: rgba(128, 0, 128, 1)">13.214429</span> <span style="color: rgba(128, 0, 128, 1)">10319</span> validation.go:<span style="color: rgba(128, 0, 128, 1)">28</span>] Cannot validate kube-proxy config -<span style="color: rgba(0, 0, 0, 1)"> no validator is available
W0109 </span><span style="color: rgba(128, 0, 128, 1)">12</span>:<span style="color: rgba(128, 0, 128, 1)">01</span>:<span style="color: rgba(128, 0, 128, 1)">13.214516</span> <span style="color: rgba(128, 0, 128, 1)">10319</span> validation.go:<span style="color: rgba(128, 0, 128, 1)">28</span>] Cannot validate kubelet config -<span style="color: rgba(0, 0, 0, 1)"> no validator is available
Using Kubernetes version: v1.</span><span style="color: rgba(128, 0, 128, 1)">17.0</span><span style="color: rgba(0, 0, 0, 1)">
Running pre</span>-<span style="color: rgba(0, 0, 0, 1)">flight checks
: docker service is not enabled, please run <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">systemctl enable docker.service</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">
: detected </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">cgroupfs</span><span style="color: rgba(128, 0, 0, 1)">"</span> as the Docker cgroup driver. The recommended driver is <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">systemd</span><span style="color: rgba(128, 0, 0, 1)">"</span>. Please follow the guide at https:<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">kubernetes.io/docs/setup/cri/</span>
<span style="color: rgba(0, 0, 0, 1)">error execution phase preflight: Some fatal errors occurred:
: running with swap on is not supported. Please disable swap
If you know what you are doing, you can </span><span style="color: rgba(0, 0, 255, 1)">make</span> a check non-fatal with `--ignore-preflight-errors=<span style="color: rgba(0, 0, 0, 1)">...`
To see the stack trace of this error execute with </span>--v=<span style="color: rgba(128, 0, 128, 1)">5</span> or higher</pre>
</div>
<p>执行</p>
<p># systemctl enable docker.service</p>
<p>并disable swap</p>
<p># cat /etc/fstab</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">#
# </span>/etc/<span style="color: rgba(0, 0, 0, 1)">fstab
# Created by anaconda on Mon Aug </span><span style="color: rgba(128, 0, 128, 1)">12</span> <span style="color: rgba(128, 0, 128, 1)">10</span>:<span style="color: rgba(128, 0, 128, 1)">34</span>:<span style="color: rgba(128, 0, 128, 1)">55</span> <span style="color: rgba(128, 0, 128, 1)">2019</span><span style="color: rgba(0, 0, 0, 1)">
#
# Accessible filesystems, by reference, are maintained under </span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">/dev/disk</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">
# See </span><span style="color: rgba(0, 0, 255, 1)">man</span> pages fstab(<span style="color: rgba(128, 0, 128, 1)">5</span>), findfs(<span style="color: rgba(128, 0, 128, 1)">8</span>), <span style="color: rgba(0, 0, 255, 1)">mount</span>(<span style="color: rgba(128, 0, 128, 1)">8</span>) and/or blkid(<span style="color: rgba(128, 0, 128, 1)">8</span>) <span style="color: rgba(0, 0, 255, 1)">for</span> <span style="color: rgba(0, 0, 255, 1)">more</span> <span style="color: rgba(0, 0, 255, 1)">info</span><span style="color: rgba(0, 0, 0, 1)">
#
</span>/dev/mapper/centos-root / xfs defaults <span style="color: rgba(128, 0, 128, 1)">0</span> <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">
UUID</span>=e792ce5a-c008-<span style="color: rgba(128, 0, 128, 1)">4849</span>-98d2-dacfa848f2a0 /boot xfs defaults <span style="color: rgba(128, 0, 128, 1)">0</span> <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">
# </span>/dev/mapper/centos-swap swap swap defaults <span style="color: rgba(128, 0, 128, 1)">0</span> <span style="color: rgba(128, 0, 128, 1)">0 #注释这个挂载</span></pre>
</div>
<p># swapoff /dev/mapper/centos-swap<br># free -h</p>
<div class="cnblogs_code">
<pre>total used <span style="color: rgba(0, 0, 255, 1)">free</span> sharedbuff/<span style="color: rgba(0, 0, 0, 1)">cache available
Mem: </span><span style="color: rgba(128, 0, 128, 1)">7</span>.6G 273M <span style="color: rgba(128, 0, 128, 1)">6</span>.3G 11M <span style="color: rgba(128, 0, 128, 1)">1</span>.0G <span style="color: rgba(128, 0, 128, 1)">7</span><span style="color: rgba(0, 0, 0, 1)">.1G
Swap: 0B 0B 0B</span></pre>
</div>
<p># kubeadm init --config kubeadm-config.yaml</p>
<div class="cnblogs_code">
<pre>W0109 <span style="color: rgba(128, 0, 128, 1)">12</span>:<span style="color: rgba(128, 0, 128, 1)">08</span>:<span style="color: rgba(128, 0, 128, 1)">45.192524</span> <span style="color: rgba(128, 0, 128, 1)">11408</span> validation.go:<span style="color: rgba(128, 0, 128, 1)">28</span>] Cannot validate kube-proxy config -<span style="color: rgba(0, 0, 0, 1)"> no validator is available
W0109 </span><span style="color: rgba(128, 0, 128, 1)">12</span>:<span style="color: rgba(128, 0, 128, 1)">08</span>:<span style="color: rgba(128, 0, 128, 1)">45.192590</span> <span style="color: rgba(128, 0, 128, 1)">11408</span> validation.go:<span style="color: rgba(128, 0, 128, 1)">28</span>] Cannot validate kubelet config -<span style="color: rgba(0, 0, 0, 1)"> no validator is available
Using Kubernetes version: v1.</span><span style="color: rgba(128, 0, 128, 1)">17.0</span><span style="color: rgba(0, 0, 0, 1)">
Running pre</span>-<span style="color: rgba(0, 0, 0, 1)">flight checks
: detected </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">cgroupfs</span><span style="color: rgba(128, 0, 0, 1)">"</span> as the Docker cgroup driver. The recommended driver is <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">systemd</span><span style="color: rgba(128, 0, 0, 1)">"</span>. Please follow the guide at https:<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">kubernetes.io/docs/setup/cri/</span>
Pulling images required <span style="color: rgba(0, 0, 255, 1)">for</span><span style="color: rgba(0, 0, 0, 1)"> setting up a Kubernetes cluster
This might take a minute or two, depending on the speed of your internet connection
You can also perform this action </span><span style="color: rgba(0, 0, 255, 1)">in</span> beforehand using <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">kubeadm config images pull</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">
Writing kubelet environment <span style="color: rgba(0, 0, 255, 1)">file</span> with flags to <span style="color: rgba(0, 0, 255, 1)">file</span> <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">/var/lib/kubelet/kubeadm-flags.env</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
Writing kubelet configuration to <span style="color: rgba(0, 0, 255, 1)">file</span> <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">/var/lib/kubelet/config.yaml</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
Starting the kubelet
Using certificateDir folder </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">/etc/kubernetes/pki</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
Generating </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">ca</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> certificate and key
Generating </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">apiserver</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> certificate and key
apiserver serving cert is signed </span><span style="color: rgba(0, 0, 255, 1)">for</span> DNS names [<span style="color: rgba(128, 0, 128, 1)">192.168</span>.<span style="color: rgba(128, 0, 128, 1)">132.131</span> kubernetes kubernetes.default kubernetes.default.svc kubernetes.default.svc.cluster.local] and IPs [<span style="color: rgba(128, 0, 128, 1)">10.96</span>.<span style="color: rgba(128, 0, 128, 1)">0.1</span> <span style="color: rgba(128, 0, 128, 1)">192.168</span>.<span style="color: rgba(128, 0, 128, 1)">132.131</span><span style="color: rgba(0, 0, 0, 1)">]
Generating </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">apiserver-kubelet-client</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> certificate and key
Generating </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">front-proxy-ca</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> certificate and key
Generating </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">front-proxy-client</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> certificate and key
Generating </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">etcd/ca</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> certificate and key
Generating </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">etcd/server</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> certificate and key
etcd</span>/server serving cert is signed <span style="color: rgba(0, 0, 255, 1)">for</span> DNS names [<span style="color: rgba(128, 0, 128, 1)">192.168</span>.<span style="color: rgba(128, 0, 128, 1)">132.131</span> localhost] and IPs [<span style="color: rgba(128, 0, 128, 1)">192.168</span>.<span style="color: rgba(128, 0, 128, 1)">132.131</span> <span style="color: rgba(128, 0, 128, 1)">127.0</span>.<span style="color: rgba(128, 0, 128, 1)">0.1</span> ::<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">]
Generating </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">etcd/peer</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> certificate and key
etcd</span>/peer serving cert is signed <span style="color: rgba(0, 0, 255, 1)">for</span> DNS names [<span style="color: rgba(128, 0, 128, 1)">192.168</span>.<span style="color: rgba(128, 0, 128, 1)">132.131</span> localhost] and IPs [<span style="color: rgba(128, 0, 128, 1)">192.168</span>.<span style="color: rgba(128, 0, 128, 1)">132.131</span> <span style="color: rgba(128, 0, 128, 1)">127.0</span>.<span style="color: rgba(128, 0, 128, 1)">0.1</span> ::<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">]
Generating </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">etcd/healthcheck-client</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> certificate and key
Generating </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">apiserver-etcd-client</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> certificate and key
Generating </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">sa</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> key and public key
Using kubeconfig folder </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">/etc/kubernetes</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
Writing </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">admin.conf</span><span style="color: rgba(128, 0, 0, 1)">"</span> kubeconfig <span style="color: rgba(0, 0, 255, 1)">file</span><span style="color: rgba(0, 0, 0, 1)">
Writing </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">kubelet.conf</span><span style="color: rgba(128, 0, 0, 1)">"</span> kubeconfig <span style="color: rgba(0, 0, 255, 1)">file</span><span style="color: rgba(0, 0, 0, 1)">
Writing </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">controller-manager.conf</span><span style="color: rgba(128, 0, 0, 1)">"</span> kubeconfig <span style="color: rgba(0, 0, 255, 1)">file</span><span style="color: rgba(0, 0, 0, 1)">
Writing </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">scheduler.conf</span><span style="color: rgba(128, 0, 0, 1)">"</span> kubeconfig <span style="color: rgba(0, 0, 255, 1)">file</span><span style="color: rgba(0, 0, 0, 1)">
Using manifest folder <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">/etc/kubernetes/manifests</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
Creating static Pod manifest <span style="color: rgba(0, 0, 255, 1)">for</span> <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">kube-apiserver</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
Creating static Pod manifest <span style="color: rgba(0, 0, 255, 1)">for</span> <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">kube-controller-manager</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
W0109 </span><span style="color: rgba(128, 0, 128, 1)">12</span>:<span style="color: rgba(128, 0, 128, 1)">11</span>:<span style="color: rgba(128, 0, 128, 1)">02.496349</span> <span style="color: rgba(128, 0, 128, 1)">11408</span> manifests.go:<span style="color: rgba(128, 0, 128, 1)">214</span>] the default kube-apiserver authorization-mode is <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">Node,RBAC</span><span style="color: rgba(128, 0, 0, 1)">"</span>; using <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">Node,RBAC</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
Creating static Pod manifest <span style="color: rgba(0, 0, 255, 1)">for</span> <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">kube-scheduler</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
W0109 </span><span style="color: rgba(128, 0, 128, 1)">12</span>:<span style="color: rgba(128, 0, 128, 1)">11</span>:<span style="color: rgba(128, 0, 128, 1)">02.497925</span> <span style="color: rgba(128, 0, 128, 1)">11408</span> manifests.go:<span style="color: rgba(128, 0, 128, 1)">214</span>] the default kube-apiserver authorization-mode is <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">Node,RBAC</span><span style="color: rgba(128, 0, 0, 1)">"</span>; using <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">Node,RBAC</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
Creating static Pod manifest </span><span style="color: rgba(0, 0, 255, 1)">for</span> local etcd <span style="color: rgba(0, 0, 255, 1)">in</span> <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">/etc/kubernetes/manifests</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
[</span><span style="color: rgba(0, 0, 255, 1)">wait</span>-control-plane] Waiting <span style="color: rgba(0, 0, 255, 1)">for</span> the kubelet to boot up the control plane as static Pods from directory <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">/etc/kubernetes/manifests</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">. This can take up to 4m0s
All control plane components are healthy after </span><span style="color: rgba(128, 0, 128, 1)">18.503839</span><span style="color: rgba(0, 0, 0, 1)"> seconds
Storing the configuration used <span style="color: rgba(0, 0, 255, 1)">in</span> ConfigMap <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">kubeadm-config</span><span style="color: rgba(128, 0, 0, 1)">"</span> <span style="color: rgba(0, 0, 255, 1)">in</span> the <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">kube-system</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> Namespace
Creating a ConfigMap </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">kubelet-config-1.17</span><span style="color: rgba(128, 0, 0, 1)">"</span> <span style="color: rgba(0, 0, 255, 1)">in</span> namespace kube-system with the configuration <span style="color: rgba(0, 0, 255, 1)">for</span> the kubelets <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> the cluster
Skipping phase. Please see --upload-<span style="color: rgba(0, 0, 0, 1)">certs
Marking the node <span style="color: rgba(128, 0, 128, 1)">192.168</span>.<span style="color: rgba(128, 0, 128, 1)">132.131</span> as control-plane by adding the label <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">node-role.kubernetes.io/master=''</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
Marking the node <span style="color: rgba(128, 0, 128, 1)">192.168</span>.<span style="color: rgba(128, 0, 128, 1)">132.131</span> as control-plane by adding the taints
Using token: abcdef.0123456789abcdef
Configuring bootstrap tokens, cluster-<span style="color: rgba(0, 0, 255, 1)">info</span><span style="color: rgba(0, 0, 0, 1)"> ConfigMap, RBAC Roles
configured RBAC rules to allow Node Bootstrap tokens to post CSRs <span style="color: rgba(0, 0, 255, 1)">in</span> order <span style="color: rgba(0, 0, 255, 1)">for</span> nodes to get <span style="color: rgba(0, 0, 255, 1)">long</span><span style="color: rgba(0, 0, 0, 1)"> term certificate credentials
configured RBAC rules to allow the csrapprover controller automatically approve CSRs from a Node Bootstrap Token
configured RBAC rules to allow certificate rotation <span style="color: rgba(0, 0, 255, 1)">for</span> all node client certificates <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> the cluster
Creating the <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">cluster-info</span><span style="color: rgba(128, 0, 0, 1)">"</span> ConfigMap <span style="color: rgba(0, 0, 255, 1)">in</span> the <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">kube-public</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> namespace
Updating <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">/etc/kubernetes/kubelet.conf</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> to point to a rotatable kubelet client certificate and key
Applied essential addon: CoreDNS
Applied essential addon: kube</span>-<span style="color: rgba(0, 0, 0, 1)">proxy
Your Kubernetes control</span>-plane has initialized successfully!<span style="color: rgba(0, 0, 0, 1)">
To start using your cluster, you need to run the following as a regular user: #安装完成,在master上操作
</span><span style="color: rgba(0, 0, 255, 1)">mkdir</span> -p $HOME/<span style="color: rgba(0, 0, 0, 1)">.kube
</span><span style="color: rgba(0, 0, 255, 1)">sudo</span> <span style="color: rgba(0, 0, 255, 1)">cp</span> -i /etc/kubernetes/admin.conf $HOME/.kube/<span style="color: rgba(0, 0, 0, 1)">config
</span><span style="color: rgba(0, 0, 255, 1)">sudo</span> <span style="color: rgba(0, 0, 255, 1)">chown</span> $(<span style="color: rgba(0, 0, 255, 1)">id</span> -u):$(<span style="color: rgba(0, 0, 255, 1)">id</span> -g) $HOME/.kube/<span style="color: rgba(0, 0, 0, 1)">config
You should now deploy a pod network to the cluster.
Run </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">kubectl apply -f .yaml</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> with one of the options listed at:
https:</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">kubernetes.io/docs/concepts/cluster-administration/addons/</span>
<span style="color: rgba(0, 0, 0, 1)">
Then you can </span><span style="color: rgba(0, 0, 255, 1)">join</span><span style="color: rgba(0, 0, 0, 1)"> any number of worker nodes by running the following on each as root:
kubeadm </span><span style="color: rgba(0, 0, 255, 1)">join</span> <span style="color: rgba(128, 0, 128, 1)">192.168</span>.<span style="color: rgba(128, 0, 128, 1)">132.131</span>:<span style="color: rgba(128, 0, 128, 1)">6443</span> --<span style="color: rgba(0, 0, 0, 1)">token abcdef.0123456789abcdef \
</span>--discovery-token-ca-cert-hash sha256:69b08312889f1841d5e451f87485aa2ec39d85fa24ebbf62521b4993bfc782e4 #添加node节点</pre>
</div>
<p>安装完成</p>
<h3>2.7 查看容器</h3>
<p># docker ps -a</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ae8549a82b77 7d54289267dc </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">/usr/local/bin/kube…</span><span style="color: rgba(128, 0, 0, 1)">"</span> <span style="color: rgba(128, 0, 128, 1)">3</span> minutes ago Up <span style="color: rgba(128, 0, 128, 1)">3</span> minutes k8s_kube-proxy_kube-proxy-85wct_kube-system_ba75ad88-ad40-48ff-8df3-<span style="color: rgba(0, 0, 0, 1)">b275d5e633b3_0
bd43e8ed43d4 k8s.gcr.io</span>/pause:<span style="color: rgba(128, 0, 128, 1)">3.1</span> <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">/pause</span><span style="color: rgba(128, 0, 0, 1)">"</span> <span style="color: rgba(128, 0, 128, 1)">3</span> minutes ago Up <span style="color: rgba(128, 0, 128, 1)">3</span> minutes k8s_POD_kube-proxy-85wct_kube-system_ba75ad88-ad40-48ff-8df3-<span style="color: rgba(0, 0, 0, 1)">b275d5e633b3_0
4251da77267b 78c190f736b1 </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">kube-scheduler --au…</span><span style="color: rgba(128, 0, 0, 1)">"</span> <span style="color: rgba(128, 0, 128, 1)">4</span> minutes ago Up <span style="color: rgba(128, 0, 128, 1)">4</span> minutes k8s_kube-scheduler_kube-scheduler-<span style="color: rgba(128, 0, 128, 1)">192.168</span>.<span style="color: rgba(128, 0, 128, 1)">132</span>.131_kube-<span style="color: rgba(0, 0, 0, 1)">system_ff67867321338ffd885039e188f6b424_0
dc0f77b83a11 5eb3b7486872 </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">kube-controller-man…</span><span style="color: rgba(128, 0, 0, 1)">"</span> <span style="color: rgba(128, 0, 128, 1)">4</span> minutes ago Up <span style="color: rgba(128, 0, 128, 1)">4</span> minutes k8s_kube-controller-manager_kube-controller-manager-<span style="color: rgba(128, 0, 128, 1)">192.168</span>.<span style="color: rgba(128, 0, 128, 1)">132</span>.131_kube-<span style="color: rgba(0, 0, 0, 1)">system_c2005b6581bec7a243719295b4c45211_0
9423af2e2815 303ce5db0e90 </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">etcd --advertise-cl…</span><span style="color: rgba(128, 0, 0, 1)">"</span> <span style="color: rgba(128, 0, 128, 1)">4</span> minutes ago Up <span style="color: rgba(128, 0, 128, 1)">4</span> minutes k8s_etcd_etcd-<span style="color: rgba(128, 0, 128, 1)">192.168</span>.<span style="color: rgba(128, 0, 128, 1)">132</span>.131_kube-<span style="color: rgba(0, 0, 0, 1)">system_9efa80759e8a266de518d018d831e47c_0
50ad1f661532 0cae8d5cc64c </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">kube-apiserver --ad…</span><span style="color: rgba(128, 0, 0, 1)">"</span> <span style="color: rgba(128, 0, 128, 1)">4</span> minutes ago Up <span style="color: rgba(128, 0, 128, 1)">4</span> minutes k8s_kube-apiserver_kube-apiserver-<span style="color: rgba(128, 0, 128, 1)">192.168</span>.<span style="color: rgba(128, 0, 128, 1)">132</span>.131_kube-<span style="color: rgba(0, 0, 0, 1)">system_35be3047d357a34596bdda175ae3edd5_0
4e6d45ca5f26 k8s.gcr.io</span>/pause:<span style="color: rgba(128, 0, 128, 1)">3.1</span> <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">/pause</span><span style="color: rgba(128, 0, 0, 1)">"</span> <span style="color: rgba(128, 0, 128, 1)">4</span> minutes ago Up <span style="color: rgba(128, 0, 128, 1)">4</span> minutes k8s_POD_kube-scheduler-<span style="color: rgba(128, 0, 128, 1)">192.168</span>.<span style="color: rgba(128, 0, 128, 1)">132</span>.131_kube-<span style="color: rgba(0, 0, 0, 1)">system_ff67867321338ffd885039e188f6b424_0
a5dbe134219e k8s.gcr.io</span>/pause:<span style="color: rgba(128, 0, 128, 1)">3.1</span> <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">/pause</span><span style="color: rgba(128, 0, 0, 1)">"</span> <span style="color: rgba(128, 0, 128, 1)">4</span> minutes ago Up <span style="color: rgba(128, 0, 128, 1)">4</span> minutes k8s_POD_kube-controller-manager-<span style="color: rgba(128, 0, 128, 1)">192.168</span>.<span style="color: rgba(128, 0, 128, 1)">132</span>.131_kube-<span style="color: rgba(0, 0, 0, 1)">system_c2005b6581bec7a243719295b4c45211_0
f459231c57f0 k8s.gcr.io</span>/pause:<span style="color: rgba(128, 0, 128, 1)">3.1</span> <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">/pause</span><span style="color: rgba(128, 0, 0, 1)">"</span> <span style="color: rgba(128, 0, 128, 1)">4</span> minutes ago Up <span style="color: rgba(128, 0, 128, 1)">4</span> minutes k8s_POD_kube-apiserver-<span style="color: rgba(128, 0, 128, 1)">192.168</span>.<span style="color: rgba(128, 0, 128, 1)">132</span>.131_kube-<span style="color: rgba(0, 0, 0, 1)">system_35be3047d357a34596bdda175ae3edd5_0
46fc5b0bc652 k8s.gcr.io</span>/pause:<span style="color: rgba(128, 0, 128, 1)">3.1</span> <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">/pause</span><span style="color: rgba(128, 0, 0, 1)">"</span> <span style="color: rgba(128, 0, 128, 1)">4</span> minutes ago Up <span style="color: rgba(128, 0, 128, 1)">4</span> minutes k8s_POD_etcd-<span style="color: rgba(128, 0, 128, 1)">192.168</span>.<span style="color: rgba(128, 0, 128, 1)">132</span>.131_kube-<span style="color: rgba(0, 0, 0, 1)">system_9efa80759e8a266de518d018d831e47c_0
73c1d78829a8 busybox </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">sh</span><span style="color: rgba(128, 0, 0, 1)">"</span> <span style="color: rgba(128, 0, 128, 1)">2</span> months ago Exited (<span style="color: rgba(128, 0, 128, 1)">0</span>) <span style="color: rgba(128, 0, 128, 1)">2</span> months ago relaxed_rosalind</pre>
</div>
<p>根据提示操作</p>
<p># mkdir -p $HOME/.kube</p>
<p># sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config</p>
<p># sudo chown $(id -u):$(id -g) $HOME/.kube/config</p>
<p>现在就安装完成</p>
<p>查看node节点</p>
<p># kubectl get nodes</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">NAME STATUS ROLES AGE VERSION
</span><span style="color: rgba(128, 0, 128, 1)">192.168</span>.<span style="color: rgba(128, 0, 128, 1)">132.131</span> NotReady master 28m v1.<span style="color: rgba(128, 0, 128, 1)">17.0</span></pre>
</div>
<p># kubectl get pods -n kube-system</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">NAME READY STATUS RESTARTS AGE
coredns</span>-6955765f44-5x84f <span style="color: rgba(128, 0, 128, 1)">0</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Pending <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 29m
coredns</span>-6955765f44-74z8d <span style="color: rgba(128, 0, 128, 1)">0</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Pending <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 29m
etcd</span>-<span style="color: rgba(128, 0, 128, 1)">192.168</span>.<span style="color: rgba(128, 0, 128, 1)">132.131</span> <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 29m
kube</span>-apiserver-<span style="color: rgba(128, 0, 128, 1)">192.168</span>.<span style="color: rgba(128, 0, 128, 1)">132.131</span> <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 29m
kube</span>-controller-manager-<span style="color: rgba(128, 0, 128, 1)">192.168</span>.<span style="color: rgba(128, 0, 128, 1)">132.131</span> <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 29m
kube</span>-proxy-85wct <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 29m
kube</span>-scheduler-<span style="color: rgba(128, 0, 128, 1)">192.168</span>.<span style="color: rgba(128, 0, 128, 1)">132.131</span> <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span> 29m</pre>
</div>
<p>发现两个问题</p>
<p>1 core节点为pending:是因为需要node节点,但是还没有安装node节点,所以是pending</p>
<p>2 status是notready状态:是因为还没有安装网络插件</p>
<h3>2.8 安装flannel</h3>
<p>https://github.com/coreos/flannel/blob/master/Documentation/kube-flannel.yml</p>
<p># wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml</p>
<p># sed -i 's@quay.io@quay.azk8s.cn@g' kube-flannel.yml</p>
<p># kubectl apply -f kube-flannel.yml</p>
<div class="cnblogs_code">
<pre>podsecuritypolicy.policy/<span style="color: rgba(0, 0, 0, 1)">psp.flannel.unprivileged created
clusterrole.rbac.authorization.k8s.io</span>/<span style="color: rgba(0, 0, 0, 1)">flannel created
clusterrolebinding.rbac.authorization.k8s.io</span>/<span style="color: rgba(0, 0, 0, 1)">flannel created
serviceaccount</span>/<span style="color: rgba(0, 0, 0, 1)">flannel created
configmap</span>/kube-flannel-<span style="color: rgba(0, 0, 0, 1)">cfg created
daemonset.apps</span>/kube-flannel-ds-<span style="color: rgba(0, 0, 0, 1)">amd64 created
daemonset.apps</span>/kube-flannel-ds-<span style="color: rgba(0, 0, 0, 1)">arm64 created
daemonset.apps</span>/kube-flannel-ds-<span style="color: rgba(0, 0, 0, 1)">arm created
daemonset.apps</span>/kube-flannel-ds-<span style="color: rgba(0, 0, 0, 1)">ppc64le created
daemonset.apps</span>/kube-flannel-ds-s390x created</pre>
</div>
<p># kubectl get nodes</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">NAME STATUS ROLES AGE VERSION
</span><span style="color: rgba(128, 0, 128, 1)">192.168</span>.<span style="color: rgba(128, 0, 128, 1)">132.131</span> Ready master 39m v1.<span style="color: rgba(128, 0, 128, 1)">17.0</span></pre>
</div>
<p>已经是ready状态</p>
<h3>2.9 安装node节点</h3>
<p>根据提示安装node节点</p>
<p># kubeadm join 192.168.132.131:6443 --token abcdef.0123456789abcdef \</p>
<p>--discovery-token-ca-cert-hash sha256:69b08312889f1841d5e451f87485aa2ec39d85fa24ebbf62521b4993bfc782e4</p>
<div class="cnblogs_code">
<pre>> --discovery-token-ca-cert-<span style="color: rgba(0, 0, 0, 1)">hash sha256:69b08312889f1841d5e451f87485aa2ec39d85fa24ebbf62521b4993bfc782e4
W0109 </span><span style="color: rgba(128, 0, 128, 1)">12</span>:<span style="color: rgba(128, 0, 128, 1)">55</span>:<span style="color: rgba(128, 0, 128, 1)">20.074145</span> <span style="color: rgba(128, 0, 128, 1)">17526</span> <span style="color: rgba(0, 0, 255, 1)">join</span>.go:<span style="color: rgba(128, 0, 128, 1)">346</span>] WARNING: JoinControlPane.controlPlane settings will be ignored when control-<span style="color: rgba(0, 0, 0, 1)">plane flag is not set.
Running pre</span>-<span style="color: rgba(0, 0, 0, 1)">flight checks
: detected </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">cgroupfs</span><span style="color: rgba(128, 0, 0, 1)">"</span> as the Docker cgroup driver. The recommended driver is <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">systemd</span><span style="color: rgba(128, 0, 0, 1)">"</span>. Please follow the guide at https:<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">kubernetes.io/docs/setup/cri/</span>
: <span style="color: rgba(0, 0, 255, 1)">hostname</span> <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">docker-server2</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> could not be reached
: </span><span style="color: rgba(0, 0, 255, 1)">hostname</span> <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">docker-server2</span><span style="color: rgba(128, 0, 0, 1)">"</span>: lookup docker-server2 on <span style="color: rgba(128, 0, 128, 1)">8.8</span>.<span style="color: rgba(128, 0, 128, 1)">8.8</span>:<span style="color: rgba(128, 0, 128, 1)">53</span><span style="color: rgba(0, 0, 0, 1)">: no such host
Reading configuration from the cluster...
FYI: You can look at this config </span><span style="color: rgba(0, 0, 255, 1)">file</span> with <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">kubectl -n kube-system get cm kubeadm-config -oyaml</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">
Downloading configuration <span style="color: rgba(0, 0, 255, 1)">for</span> the kubelet from the <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">kubelet-config-1.17</span><span style="color: rgba(128, 0, 0, 1)">"</span> ConfigMap <span style="color: rgba(0, 0, 255, 1)">in</span> the kube-<span style="color: rgba(0, 0, 0, 1)">system namespace
Writing kubelet configuration to <span style="color: rgba(0, 0, 255, 1)">file</span> <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">/var/lib/kubelet/config.yaml</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
Writing kubelet environment <span style="color: rgba(0, 0, 255, 1)">file</span> with flags to <span style="color: rgba(0, 0, 255, 1)">file</span> <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">/var/lib/kubelet/kubeadm-flags.env</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
Starting the kubelet
Waiting <span style="color: rgba(0, 0, 255, 1)">for</span><span style="color: rgba(0, 0, 0, 1)"> the kubelet to perform the TLS Bootstrap...
This node has joined the cluster:
</span>*<span style="color: rgba(0, 0, 0, 1)"> Certificate signing request was sent to apiserver and a response was received.
</span>*<span style="color: rgba(0, 0, 0, 1)"> The Kubelet was informed of the new secure connection details.
Run </span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">kubectl get nodes</span><span style="color: rgba(128, 0, 0, 1)">'</span> on the control-plane to see this node <span style="color: rgba(0, 0, 255, 1)">join</span> the cluster.</pre>
</div>
<p># kubectl get nodes</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">NAME STATUS ROLES AGE VERSION
</span><span style="color: rgba(128, 0, 128, 1)">192.168</span>.<span style="color: rgba(128, 0, 128, 1)">132.131</span> Ready master 45m v1.<span style="color: rgba(128, 0, 128, 1)">17.0</span><span style="color: rgba(0, 0, 0, 1)">
docker</span>-server2 Ready <none> 87s v1.<span style="color: rgba(128, 0, 128, 1)">17.0</span></pre>
</div>
<p>在另一个节点使用另一种方式安装</p>
<p>master节点的token信息</p>
<p># cat kubeadm-config.yaml |grep token</p>
<div class="cnblogs_code">
<pre>- system:bootstrappers:kubeadm:default-node-<span style="color: rgba(0, 0, 0, 1)">token
token: abcdef.0123456789abcdef</span></pre>
</div>
<p># kubeadm config print join-defaults > kubeadm-config.yaml</p>
<p># vi kubeadm-config.yaml</p>
<div class="cnblogs_code">
<pre>apiVersion: kubeadm.k8s.io/<span style="color: rgba(0, 0, 0, 1)">v1beta2
caCertPath: </span>/etc/kubernetes/pki/<span style="color: rgba(0, 0, 0, 1)">ca.crt
discovery:
bootstrapToken:
apiServerEndpoint: </span><span style="color: rgba(128, 0, 128, 1)">192.168</span>.<span style="color: rgba(128, 0, 128, 1)">132.131</span>:<span style="color: rgba(128, 0, 128, 1)">6443</span><span style="color: rgba(0, 0, 0, 1)">
token: abcdef.0123456789abcdef
unsafeSkipCAVerification: </span><span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">
timeout: 5m0s
tlsBootstrapToken: abcdef.0123456789abcdef
kind: JoinConfiguration
nodeRegistration:
criSocket: </span>/var/run/<span style="color: rgba(0, 0, 0, 1)">dockershim.sock
name: </span><span style="color: rgba(128, 0, 128, 1)">192.168</span>.<span style="color: rgba(128, 0, 128, 1)">132.133</span><span style="color: rgba(0, 0, 0, 1)">
taints: </span><span style="color: rgba(0, 0, 255, 1)">null</span></pre>
</div>
<p># kubeadm join --config kubeadm-config.yaml</p>
<div class="cnblogs_code">
<pre>W0109 <span style="color: rgba(128, 0, 128, 1)">13</span>:<span style="color: rgba(128, 0, 128, 1)">03</span>:<span style="color: rgba(128, 0, 128, 1)">47.889071</span> <span style="color: rgba(128, 0, 128, 1)">65148</span> <span style="color: rgba(0, 0, 255, 1)">join</span>.go:<span style="color: rgba(128, 0, 128, 1)">346</span>] WARNING: JoinControlPane.controlPlane settings will be ignored when control-<span style="color: rgba(0, 0, 0, 1)">plane flag is not set.
Running pre</span>-<span style="color: rgba(0, 0, 0, 1)">flight checks
: detected </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">cgroupfs</span><span style="color: rgba(128, 0, 0, 1)">"</span> as the Docker cgroup driver. The recommended driver is <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">systemd</span><span style="color: rgba(128, 0, 0, 1)">"</span>. Please follow the guide at https:<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">kubernetes.io/docs/setup/cri/</span>
<span style="color: rgba(0, 0, 0, 1)"> Reading configuration from the cluster...
FYI: You can look at this config </span><span style="color: rgba(0, 0, 255, 1)">file</span> with <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">kubectl -n kube-system get cm kubeadm-config -oyaml</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">
Downloading configuration <span style="color: rgba(0, 0, 255, 1)">for</span> the kubelet from the <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">kubelet-config-1.17</span><span style="color: rgba(128, 0, 0, 1)">"</span> ConfigMap <span style="color: rgba(0, 0, 255, 1)">in</span> the kube-<span style="color: rgba(0, 0, 0, 1)">system namespace
Writing kubelet configuration to <span style="color: rgba(0, 0, 255, 1)">file</span> <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">/var/lib/kubelet/config.yaml</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
Writing kubelet environment <span style="color: rgba(0, 0, 255, 1)">file</span> with flags to <span style="color: rgba(0, 0, 255, 1)">file</span> <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">/var/lib/kubelet/kubeadm-flags.env</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
Starting the kubelet
Waiting <span style="color: rgba(0, 0, 255, 1)">for</span><span style="color: rgba(0, 0, 0, 1)"> the kubelet to perform the TLS Bootstrap...
This node has joined the cluster:
</span>*<span style="color: rgba(0, 0, 0, 1)"> Certificate signing request was sent to apiserver and a response was received.
</span>*<span style="color: rgba(0, 0, 0, 1)"> The Kubelet was informed of the new secure connection details.
Run </span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">kubectl get nodes</span><span style="color: rgba(128, 0, 0, 1)">'</span> on the control-plane to see this node <span style="color: rgba(0, 0, 255, 1)">join</span> the cluster.</pre>
</div>
<p># kubectl get nodes</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">NAME STATUS ROLES AGE VERSION
</span><span style="color: rgba(128, 0, 128, 1)">192.168</span>.<span style="color: rgba(128, 0, 128, 1)">132.131</span> Ready master 53m v1.<span style="color: rgba(128, 0, 128, 1)">17.0</span>
<span style="color: rgba(128, 0, 128, 1)">192.168</span>.<span style="color: rgba(128, 0, 128, 1)">132.133</span> Ready <none> 53s v1.<span style="color: rgba(128, 0, 128, 1)">17.0</span><span style="color: rgba(0, 0, 0, 1)">
docker</span>-server2 Ready <none> 9m58s v1.<span style="color: rgba(128, 0, 128, 1)">17.0</span></pre>
</div>
<p># cat /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf</p>
<div class="cnblogs_code">
<pre># Note: This dropin only works with kubeadm and kubelet v1.<span style="color: rgba(128, 0, 128, 1)">11</span>+<span style="color: rgba(0, 0, 0, 1)">
Environment</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
Environment</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">KUBELET_CONFIG_ARGS=--config=/var/lib/kubelet/config.yaml</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
# This is a </span><span style="color: rgba(0, 0, 255, 1)">file</span> that <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">kubeadm init</span><span style="color: rgba(128, 0, 0, 1)">"</span> and <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">kubeadm join</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> generates at runtime, populating the KUBELET_KUBEADM_ARGS variable dynamically
EnvironmentFile</span>=-/var/lib/kubelet/kubeadm-flags.<span style="color: rgba(0, 0, 255, 1)">env</span><span style="color: rgba(0, 0, 0, 1)">
# This is a </span><span style="color: rgba(0, 0, 255, 1)">file</span> that the user can use <span style="color: rgba(0, 0, 255, 1)">for</span> overrides of the kubelet args as a <span style="color: rgba(0, 0, 255, 1)">last</span><span style="color: rgba(0, 0, 0, 1)"> resort. Preferably, the user should use
# the .NodeRegistration.KubeletExtraArgs </span><span style="color: rgba(0, 0, 255, 1)">object</span> <span style="color: rgba(0, 0, 255, 1)">in</span> the configuration files instead. KUBELET_EXTRA_ARGS should be sourced from this <span style="color: rgba(0, 0, 255, 1)">file</span><span style="color: rgba(0, 0, 0, 1)">.
EnvironmentFile</span>=-/etc/sysconfig/<span style="color: rgba(0, 0, 0, 1)">kubelet
ExecStart</span>=<span style="color: rgba(0, 0, 0, 1)">
ExecStart</span>=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS</pre>
</div>
<p># kubectl get pods -n kube-system</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">NAME READY STATUS RESTARTS AGE
coredns</span>-6955765f44-5x84f <span style="color: rgba(128, 0, 128, 1)">0</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> ContainerCreating <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 62m
coredns</span>-6955765f44-74z8d <span style="color: rgba(128, 0, 128, 1)">0</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> ContainerCreating <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 62m
etcd</span>-<span style="color: rgba(128, 0, 128, 1)">192.168</span>.<span style="color: rgba(128, 0, 128, 1)">132.131</span> <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 62m
kube</span>-apiserver-<span style="color: rgba(128, 0, 128, 1)">192.168</span>.<span style="color: rgba(128, 0, 128, 1)">132.131</span> <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 62m
kube</span>-controller-manager-<span style="color: rgba(128, 0, 128, 1)">192.168</span>.<span style="color: rgba(128, 0, 128, 1)">132.131</span> <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 62m
kube</span>-flannel-ds-amd64-6f72q <span style="color: rgba(128, 0, 128, 1)">0</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> CrashLoopBackOff <span style="color: rgba(128, 0, 128, 1)">8</span><span style="color: rgba(0, 0, 0, 1)"> 18m
kube</span>-flannel-ds-amd64-ktcw7 <span style="color: rgba(128, 0, 128, 1)">0</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> CrashLoopBackOff <span style="color: rgba(128, 0, 128, 1)">6</span><span style="color: rgba(0, 0, 0, 1)"> 9m53s
kube</span>-flannel-ds-amd64-w7dbz <span style="color: rgba(128, 0, 128, 1)">0</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> CrashLoopBackOff <span style="color: rgba(128, 0, 128, 1)">9</span><span style="color: rgba(0, 0, 0, 1)"> 23m
kube</span>-proxy-85wct <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 62m
kube</span>-proxy-8xq2q <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 9m53s
kube</span>-proxy-8zmvf <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 18m
kube</span>-scheduler-<span style="color: rgba(128, 0, 128, 1)">192.168</span>.<span style="color: rgba(128, 0, 128, 1)">132.131</span> <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span> 62m</pre>
</div>
<h2>三 重新安装环境</h2>
<h3>3.1 重置master</h3>
<p># kubeadm reset</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)"> Reading configuration from the cluster...
FYI: You can look at this config </span><span style="color: rgba(0, 0, 255, 1)">file</span> with <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">kubectl -n kube-system get cm kubeadm-config -oyaml</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">
WARNING: Changes made to this host by </span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">kubeadm init</span><span style="color: rgba(128, 0, 0, 1)">'</span> or <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">kubeadm join</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)"> will be reverted.
Are you sure you want to proceed</span>? : y
Running pre</span>-<span style="color: rgba(0, 0, 0, 1)">flight checks
Removing </span><span style="color: rgba(0, 0, 255, 1)">info</span> <span style="color: rgba(0, 0, 255, 1)">for</span> node <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">192.168.132.131</span><span style="color: rgba(128, 0, 0, 1)">"</span> from the ConfigMap <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">kubeadm-config</span><span style="color: rgba(128, 0, 0, 1)">"</span> <span style="color: rgba(0, 0, 255, 1)">in</span> the <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">kube-system</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> Namespace
W0109 </span><span style="color: rgba(128, 0, 128, 1)">13</span>:<span style="color: rgba(128, 0, 128, 1)">15</span>:<span style="color: rgba(128, 0, 128, 1)">22.217588</span> <span style="color: rgba(128, 0, 128, 1)">56673</span> removeetcdmember.go:<span style="color: rgba(128, 0, 128, 1)">61</span><span style="color: rgba(0, 0, 0, 1)">] failed to remove etcd member: error syncing endpoints with etc: etcdclient: no available endpoints
.Please manually remove this etcd member using etcdctl
Stopping the kubelet service
Unmounting mounted directories </span><span style="color: rgba(0, 0, 255, 1)">in</span> <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">/var/lib/kubelet</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
Deleting contents of config directories: [</span>/etc/kubernetes/manifests /etc/kubernetes/<span style="color: rgba(0, 0, 0, 1)">pki]
Deleting files: [</span>/etc/kubernetes/admin.conf /etc/kubernetes/kubelet.conf /etc/kubernetes/bootstrap-kubelet.conf /etc/kubernetes/controller-manager.conf /etc/kubernetes/<span style="color: rgba(0, 0, 0, 1)">scheduler.conf]
Deleting contents of stateful directories: [</span>/var/lib/etcd /var/lib/kubelet /var/lib/dockershim /var/run/kubernetes /var/lib/<span style="color: rgba(0, 0, 0, 1)">cni]
The reset process does not clean CNI configuration. To </span><span style="color: rgba(0, 0, 255, 1)">do</span> so, you must remove /etc/cni/<span style="color: rgba(0, 0, 0, 1)">net.d
The reset process does not reset or clean up iptables rules or IPVS tables.
If you wish to reset iptables, you must </span><span style="color: rgba(0, 0, 255, 1)">do</span> so manually by using the <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">iptables</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> command.
If your cluster was setup to utilize IPVS, run ipvsadm </span>--<span style="color: rgba(0, 0, 255, 1)">clear</span><span style="color: rgba(0, 0, 0, 1)"> (or similar)
to reset your system</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">s IPVS tables.</span>
<span style="color: rgba(0, 0, 0, 1)">
The reset process does not clean your kubeconfig files and you must remove them manually.
Please, check the contents of the $HOME</span>/.kube/config <span style="color: rgba(0, 0, 255, 1)">file</span>.</pre>
</div>
<p># kubectl get nodes</p>
<div class="cnblogs_code">
<pre>The connection to the server <span style="color: rgba(128, 0, 128, 1)">192.168</span>.<span style="color: rgba(128, 0, 128, 1)">132.131</span>:<span style="color: rgba(128, 0, 128, 1)">6443</span> was refused - did you specify the right host or port?</pre>
</div>
<h3>3.2 修改配置</h3>
<p># vi kubeadm-config.yaml</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">networking:
dnsDomain: cluster.local
serviceSubnet: </span><span style="color: rgba(128, 0, 128, 1)">10.96</span>.<span style="color: rgba(128, 0, 128, 1)">0.0</span>/<span style="color: rgba(128, 0, 128, 1)">12</span><span style="color: rgba(0, 0, 0, 1)">
podSubnet: </span><span style="color: rgba(128, 0, 128, 1)">10.244</span>.<span style="color: rgba(128, 0, 128, 1)">0.0</span>/<span style="color: rgba(128, 0, 128, 1)">16 #添加这个内容</span></pre>
</div>
<p># kubeadm init --config kubeadm-config.yaml</p>
<div class="cnblogs_code">
<pre>W0109 <span style="color: rgba(128, 0, 128, 1)">13</span>:<span style="color: rgba(128, 0, 128, 1)">18</span>:<span style="color: rgba(128, 0, 128, 1)">41.342579</span> <span style="color: rgba(128, 0, 128, 1)">58496</span> validation.go:<span style="color: rgba(128, 0, 128, 1)">28</span>] Cannot validate kube-proxy config -<span style="color: rgba(0, 0, 0, 1)"> no validator is available
W0109 </span><span style="color: rgba(128, 0, 128, 1)">13</span>:<span style="color: rgba(128, 0, 128, 1)">18</span>:<span style="color: rgba(128, 0, 128, 1)">41.342660</span> <span style="color: rgba(128, 0, 128, 1)">58496</span> validation.go:<span style="color: rgba(128, 0, 128, 1)">28</span>] Cannot validate kubelet config -<span style="color: rgba(0, 0, 0, 1)"> no validator is available
Using Kubernetes version: v1.</span><span style="color: rgba(128, 0, 128, 1)">17.0</span><span style="color: rgba(0, 0, 0, 1)">
Running pre</span>-<span style="color: rgba(0, 0, 0, 1)">flight checks
: detected </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">cgroupfs</span><span style="color: rgba(128, 0, 0, 1)">"</span> as the Docker cgroup driver. The recommended driver is <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">systemd</span><span style="color: rgba(128, 0, 0, 1)">"</span>. Please follow the guide at https:<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">kubernetes.io/docs/setup/cri/</span>
Pulling images required <span style="color: rgba(0, 0, 255, 1)">for</span><span style="color: rgba(0, 0, 0, 1)"> setting up a Kubernetes cluster
This might take a minute or two, depending on the speed of your internet connection
You can also perform this action </span><span style="color: rgba(0, 0, 255, 1)">in</span> beforehand using <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">kubeadm config images pull</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">
Writing kubelet environment <span style="color: rgba(0, 0, 255, 1)">file</span> with flags to <span style="color: rgba(0, 0, 255, 1)">file</span> <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">/var/lib/kubelet/kubeadm-flags.env</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
Writing kubelet configuration to <span style="color: rgba(0, 0, 255, 1)">file</span> <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">/var/lib/kubelet/config.yaml</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
Starting the kubelet
Using certificateDir folder </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">/etc/kubernetes/pki</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
Generating </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">ca</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> certificate and key
Generating </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">apiserver</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> certificate and key
apiserver serving cert is signed </span><span style="color: rgba(0, 0, 255, 1)">for</span> DNS names [<span style="color: rgba(128, 0, 128, 1)">192.168</span>.<span style="color: rgba(128, 0, 128, 1)">132.131</span> kubernetes kubernetes.default kubernetes.default.svc kubernetes.default.svc.cluster.local] and IPs [<span style="color: rgba(128, 0, 128, 1)">10.96</span>.<span style="color: rgba(128, 0, 128, 1)">0.1</span> <span style="color: rgba(128, 0, 128, 1)">192.168</span>.<span style="color: rgba(128, 0, 128, 1)">132.131</span><span style="color: rgba(0, 0, 0, 1)">]
Generating </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">apiserver-kubelet-client</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> certificate and key
Generating </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">front-proxy-ca</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> certificate and key
Generating </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">front-proxy-client</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> certificate and key
Generating </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">etcd/ca</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> certificate and key
Generating </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">etcd/server</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> certificate and key
etcd</span>/server serving cert is signed <span style="color: rgba(0, 0, 255, 1)">for</span> DNS names [<span style="color: rgba(128, 0, 128, 1)">192.168</span>.<span style="color: rgba(128, 0, 128, 1)">132.131</span> localhost] and IPs [<span style="color: rgba(128, 0, 128, 1)">192.168</span>.<span style="color: rgba(128, 0, 128, 1)">132.131</span> <span style="color: rgba(128, 0, 128, 1)">127.0</span>.<span style="color: rgba(128, 0, 128, 1)">0.1</span> ::<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">]
Generating </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">etcd/peer</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> certificate and key
etcd</span>/peer serving cert is signed <span style="color: rgba(0, 0, 255, 1)">for</span> DNS names [<span style="color: rgba(128, 0, 128, 1)">192.168</span>.<span style="color: rgba(128, 0, 128, 1)">132.131</span> localhost] and IPs [<span style="color: rgba(128, 0, 128, 1)">192.168</span>.<span style="color: rgba(128, 0, 128, 1)">132.131</span> <span style="color: rgba(128, 0, 128, 1)">127.0</span>.<span style="color: rgba(128, 0, 128, 1)">0.1</span> ::<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">]
Generating </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">etcd/healthcheck-client</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> certificate and key
Generating </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">apiserver-etcd-client</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> certificate and key
Generating </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">sa</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> key and public key
Using kubeconfig folder </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">/etc/kubernetes</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
Writing </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">admin.conf</span><span style="color: rgba(128, 0, 0, 1)">"</span> kubeconfig <span style="color: rgba(0, 0, 255, 1)">file</span><span style="color: rgba(0, 0, 0, 1)">
Writing </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">kubelet.conf</span><span style="color: rgba(128, 0, 0, 1)">"</span> kubeconfig <span style="color: rgba(0, 0, 255, 1)">file</span><span style="color: rgba(0, 0, 0, 1)">
Writing </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">controller-manager.conf</span><span style="color: rgba(128, 0, 0, 1)">"</span> kubeconfig <span style="color: rgba(0, 0, 255, 1)">file</span><span style="color: rgba(0, 0, 0, 1)">
Writing </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">scheduler.conf</span><span style="color: rgba(128, 0, 0, 1)">"</span> kubeconfig <span style="color: rgba(0, 0, 255, 1)">file</span><span style="color: rgba(0, 0, 0, 1)">
Using manifest folder <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">/etc/kubernetes/manifests</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
Creating static Pod manifest <span style="color: rgba(0, 0, 255, 1)">for</span> <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">kube-apiserver</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
Creating static Pod manifest <span style="color: rgba(0, 0, 255, 1)">for</span> <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">kube-controller-manager</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
W0109 </span><span style="color: rgba(128, 0, 128, 1)">13</span>:<span style="color: rgba(128, 0, 128, 1)">18</span>:<span style="color: rgba(128, 0, 128, 1)">47.268638</span> <span style="color: rgba(128, 0, 128, 1)">58496</span> manifests.go:<span style="color: rgba(128, 0, 128, 1)">214</span>] the default kube-apiserver authorization-mode is <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">Node,RBAC</span><span style="color: rgba(128, 0, 0, 1)">"</span>; using <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">Node,RBAC</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
Creating static Pod manifest <span style="color: rgba(0, 0, 255, 1)">for</span> <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">kube-scheduler</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
W0109 </span><span style="color: rgba(128, 0, 128, 1)">13</span>:<span style="color: rgba(128, 0, 128, 1)">18</span>:<span style="color: rgba(128, 0, 128, 1)">47.272039</span> <span style="color: rgba(128, 0, 128, 1)">58496</span> manifests.go:<span style="color: rgba(128, 0, 128, 1)">214</span>] the default kube-apiserver authorization-mode is <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">Node,RBAC</span><span style="color: rgba(128, 0, 0, 1)">"</span>; using <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">Node,RBAC</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
Creating static Pod manifest </span><span style="color: rgba(0, 0, 255, 1)">for</span> local etcd <span style="color: rgba(0, 0, 255, 1)">in</span> <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">/etc/kubernetes/manifests</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
[</span><span style="color: rgba(0, 0, 255, 1)">wait</span>-control-plane] Waiting <span style="color: rgba(0, 0, 255, 1)">for</span> the kubelet to boot up the control plane as static Pods from directory <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">/etc/kubernetes/manifests</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">. This can take up to 4m0s
All control plane components are healthy after </span><span style="color: rgba(128, 0, 128, 1)">13.503410</span><span style="color: rgba(0, 0, 0, 1)"> seconds
Storing the configuration used <span style="color: rgba(0, 0, 255, 1)">in</span> ConfigMap <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">kubeadm-config</span><span style="color: rgba(128, 0, 0, 1)">"</span> <span style="color: rgba(0, 0, 255, 1)">in</span> the <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">kube-system</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> Namespace
Creating a ConfigMap </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">kubelet-config-1.17</span><span style="color: rgba(128, 0, 0, 1)">"</span> <span style="color: rgba(0, 0, 255, 1)">in</span> namespace kube-system with the configuration <span style="color: rgba(0, 0, 255, 1)">for</span> the kubelets <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> the cluster
Skipping phase. Please see --upload-<span style="color: rgba(0, 0, 0, 1)">certs
Marking the node <span style="color: rgba(128, 0, 128, 1)">192.168</span>.<span style="color: rgba(128, 0, 128, 1)">132.131</span> as control-plane by adding the label <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">node-role.kubernetes.io/master=''</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
Marking the node <span style="color: rgba(128, 0, 128, 1)">192.168</span>.<span style="color: rgba(128, 0, 128, 1)">132.131</span> as control-plane by adding the taints
Using token: abcdef.0123456789abcdef
Configuring bootstrap tokens, cluster-<span style="color: rgba(0, 0, 255, 1)">info</span><span style="color: rgba(0, 0, 0, 1)"> ConfigMap, RBAC Roles
configured RBAC rules to allow Node Bootstrap tokens to post CSRs <span style="color: rgba(0, 0, 255, 1)">in</span> order <span style="color: rgba(0, 0, 255, 1)">for</span> nodes to get <span style="color: rgba(0, 0, 255, 1)">long</span><span style="color: rgba(0, 0, 0, 1)"> term certificate credentials
configured RBAC rules to allow the csrapprover controller automatically approve CSRs from a Node Bootstrap Token
configured RBAC rules to allow certificate rotation <span style="color: rgba(0, 0, 255, 1)">for</span> all node client certificates <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> the cluster
Creating the <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">cluster-info</span><span style="color: rgba(128, 0, 0, 1)">"</span> ConfigMap <span style="color: rgba(0, 0, 255, 1)">in</span> the <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">kube-public</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> namespace
Updating <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">/etc/kubernetes/kubelet.conf</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> to point to a rotatable kubelet client certificate and key
Applied essential addon: CoreDNS
Applied essential addon: kube</span>-<span style="color: rgba(0, 0, 0, 1)">proxy
Your Kubernetes control</span>-plane has initialized successfully!<span style="color: rgba(0, 0, 0, 1)">
To start using your cluster, you need to run the following as a regular user:
</span><span style="color: rgba(0, 0, 255, 1)">mkdir</span> -p $HOME/<span style="color: rgba(0, 0, 0, 1)">.kube
</span><span style="color: rgba(0, 0, 255, 1)">sudo</span> <span style="color: rgba(0, 0, 255, 1)">cp</span> -i /etc/kubernetes/admin.conf $HOME/.kube/<span style="color: rgba(0, 0, 0, 1)">config
</span><span style="color: rgba(0, 0, 255, 1)">sudo</span> <span style="color: rgba(0, 0, 255, 1)">chown</span> $(<span style="color: rgba(0, 0, 255, 1)">id</span> -u):$(<span style="color: rgba(0, 0, 255, 1)">id</span> -g) $HOME/.kube/<span style="color: rgba(0, 0, 0, 1)">config
You should now deploy a pod network to the cluster.
Run </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">kubectl apply -f .yaml</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> with one of the options listed at:
https:</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">kubernetes.io/docs/concepts/cluster-administration/addons/</span>
<span style="color: rgba(0, 0, 0, 1)">
Then you can </span><span style="color: rgba(0, 0, 255, 1)">join</span><span style="color: rgba(0, 0, 0, 1)"> any number of worker nodes by running the following on each as root:
kubeadm </span><span style="color: rgba(0, 0, 255, 1)">join</span> <span style="color: rgba(128, 0, 128, 1)">192.168</span>.<span style="color: rgba(128, 0, 128, 1)">132.131</span>:<span style="color: rgba(128, 0, 128, 1)">6443</span> --<span style="color: rgba(0, 0, 0, 1)">token abcdef.0123456789abcdef \
</span>--discovery-token-ca-cert-hash sha256:1d9bb00debd5812c1d5bf1ceb6f64151f32a489b8fc5c61d88a999798e3e2fe3</pre>
</div>
<p># mkdir -p $HOME/.kube</p>
<p># cp -i /etc/kubernetes/admin.conf $HOME/.kube/config</p>
<p># chown $(id -u):$(id -g) $HOME/.kube/config</p>
<p># kubectl get nodes</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">NAME STATUS ROLES AGE VERSION
</span><span style="color: rgba(128, 0, 128, 1)">192.168</span>.<span style="color: rgba(128, 0, 128, 1)">132.131</span> Ready master 2m40s v1.<span style="color: rgba(128, 0, 128, 1)">17.0</span></pre>
</div>
<p># kubectl apply -f kube-flannel.yml</p>
<div class="cnblogs_code">
<pre>podsecuritypolicy.policy/<span style="color: rgba(0, 0, 0, 1)">psp.flannel.unprivileged created
clusterrole.rbac.authorization.k8s.io</span>/<span style="color: rgba(0, 0, 0, 1)">flannel created
clusterrolebinding.rbac.authorization.k8s.io</span>/<span style="color: rgba(0, 0, 0, 1)">flannel created
serviceaccount</span>/<span style="color: rgba(0, 0, 0, 1)">flannel created
configmap</span>/kube-flannel-<span style="color: rgba(0, 0, 0, 1)">cfg created
daemonset.apps</span>/kube-flannel-ds-<span style="color: rgba(0, 0, 0, 1)">amd64 created
daemonset.apps</span>/kube-flannel-ds-<span style="color: rgba(0, 0, 0, 1)">arm64 created
daemonset.apps</span>/kube-flannel-ds-<span style="color: rgba(0, 0, 0, 1)">arm created
daemonset.apps</span>/kube-flannel-ds-<span style="color: rgba(0, 0, 0, 1)">ppc64le created
daemonset.apps</span>/kube-flannel-ds-s390x created</pre>
</div>
<p># kubectl get pods -n kube-system</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">NAME READY STATUS RESTARTS AGE
coredns</span>-6955765f44-8kxdg <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 3m37s
coredns</span>-6955765f44-m66bw <span style="color: rgba(128, 0, 128, 1)">0</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 3m37s
etcd</span>-<span style="color: rgba(128, 0, 128, 1)">192.168</span>.<span style="color: rgba(128, 0, 128, 1)">132.131</span> <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 3m52s
kube</span>-apiserver-<span style="color: rgba(128, 0, 128, 1)">192.168</span>.<span style="color: rgba(128, 0, 128, 1)">132.131</span> <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 3m52s
kube</span>-controller-manager-<span style="color: rgba(128, 0, 128, 1)">192.168</span>.<span style="color: rgba(128, 0, 128, 1)">132.131</span> <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 3m52s
kube</span>-flannel-ds-amd64-m9lgq <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 12s
kube</span>-proxy-q867d <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 3m37s
kube</span>-scheduler-<span style="color: rgba(128, 0, 128, 1)">192.168</span>.<span style="color: rgba(128, 0, 128, 1)">132.131</span> <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span> 3m52s</pre>
</div>
<h3>3.3 重新添加节点</h3>
<p># kubeadm config print join-defaults > kubeadm-config.yaml</p>
<p># vi kubeadm-config.yaml</p>
<div class="cnblogs_code">
<pre>apiVersion: kubeadm.k8s.io/<span style="color: rgba(0, 0, 0, 1)">v1beta2
caCertPath: </span>/etc/kubernetes/pki/<span style="color: rgba(0, 0, 0, 1)">ca.crt
discovery:
bootstrapToken:
apiServerEndpoint: </span><span style="color: rgba(128, 0, 128, 1)">192.168</span>.<span style="color: rgba(128, 0, 128, 1)">132.131</span>:<span style="color: rgba(128, 0, 128, 1)">6443</span><span style="color: rgba(0, 0, 0, 1)">
token: abcdef.0123456789abcdef
unsafeSkipCAVerification: </span><span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">
timeout: 5m0s
tlsBootstrapToken: abcdef.0123456789abcdef
kind: JoinConfiguration
nodeRegistration:
criSocket: </span>/var/run/<span style="color: rgba(0, 0, 0, 1)">dockershim.sock
name: </span><span style="color: rgba(128, 0, 128, 1)">192.168</span>.<span style="color: rgba(128, 0, 128, 1)">132.132</span><span style="color: rgba(0, 0, 0, 1)">
taints: </span><span style="color: rgba(0, 0, 255, 1)">null</span></pre>
</div>
<p># docker ps -aq|xargs docker rm -f</p>
<p># systemctl stop kubelet</p>
<p># rm -rf /etc/kubernetes/*</p>
<p># rm -rf /var/lib/kubelet/*</p>
<p># kubeadm join --config kubeadm-config.yaml</p>
<p>第二个节点</p>
<p># systemctl stop kubelet</p>
<p># rm -rf /etc/kubernetes/</p>
<p># rm -rf /var/lib/kubelet/*</p>
<p># docker ps -aq|xargs docker rm -f</p>
<p># kubeadm join --config kubeadm-config.yaml</p>
<p>查看:</p>
<p># kubectl get nodes</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">NAME STATUS ROLES AGE VERSION
</span><span style="color: rgba(128, 0, 128, 1)">192.168</span>.<span style="color: rgba(128, 0, 128, 1)">132.131</span> Ready master 16m v1.<span style="color: rgba(128, 0, 128, 1)">17.0</span>
<span style="color: rgba(128, 0, 128, 1)">192.168</span>.<span style="color: rgba(128, 0, 128, 1)">132.132</span> Ready <none> 3m13s v1.<span style="color: rgba(128, 0, 128, 1)">17.0</span>
<span style="color: rgba(128, 0, 128, 1)">192.168</span>.<span style="color: rgba(128, 0, 128, 1)">132.133</span> Ready <none> 65s v1.<span style="color: rgba(128, 0, 128, 1)">17.0</span></pre>
</div>
<p># kubectl get pods -n kube-system</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">NAME READY STATUS RESTARTS AGE
coredns</span>-6955765f44-8kxdg <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 16m
coredns</span>-6955765f44-m66bw <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 16m
etcd</span>-<span style="color: rgba(128, 0, 128, 1)">192.168</span>.<span style="color: rgba(128, 0, 128, 1)">132.131</span> <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 16m
kube</span>-apiserver-<span style="color: rgba(128, 0, 128, 1)">192.168</span>.<span style="color: rgba(128, 0, 128, 1)">132.131</span> <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 16m
kube</span>-controller-manager-<span style="color: rgba(128, 0, 128, 1)">192.168</span>.<span style="color: rgba(128, 0, 128, 1)">132.131</span> <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 16m
kube</span>-flannel-ds-amd64-dbckr <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 3m43s
kube</span>-flannel-ds-amd64-fg972 <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 95s
kube</span>-flannel-ds-amd64-m9lgq <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 12m
kube</span>-proxy-7xgt9 <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 3m43s
kube</span>-proxy-k8kb7 <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 95s
kube</span>-proxy-q867d <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 16m
kube</span>-scheduler-<span style="color: rgba(128, 0, 128, 1)">192.168</span>.<span style="color: rgba(128, 0, 128, 1)">132.131</span> <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span> 16m</pre>
</div>
<h2>四 安装Dashboard</h2>
<p>dashboard的github仓库地址:https://github.com/kubernetes/dashboard</p>
<p>代码仓库当中,有给出安装示例的相关部署文件,我们可以直接获取之后,直接部署即可</p>
<h3>4.1 下载yml文件</h3>
<p># wget https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/deploy/recommended.yaml</p>
<p>默认这个部署文件当中,会单独创建一个名为kubernetes-dashboard的命名空间,并将kubernetes-dashboard部署在该命名空间下。dashboard的镜像来自docker hub官方,所以可不用修改镜像地址,直接从官方获取即可。</p>
<p># kubectl apply -f recommended.yaml </p>
<div class="cnblogs_code">
<pre>namespace/kubernetes-<span style="color: rgba(0, 0, 0, 1)">dashboard created
serviceaccount</span>/kubernetes-<span style="color: rgba(0, 0, 0, 1)">dashboard created
service</span>/kubernetes-<span style="color: rgba(0, 0, 0, 1)">dashboard created
secret</span>/kubernetes-dashboard-<span style="color: rgba(0, 0, 0, 1)">certs created
secret</span>/kubernetes-dashboard-<span style="color: rgba(0, 0, 0, 1)">csrf created
secret</span>/kubernetes-dashboard-key-<span style="color: rgba(0, 0, 0, 1)">holder created
configmap</span>/kubernetes-dashboard-<span style="color: rgba(0, 0, 0, 1)">settings created
role.rbac.authorization.k8s.io</span>/kubernetes-<span style="color: rgba(0, 0, 0, 1)">dashboard created
clusterrole.rbac.authorization.k8s.io</span>/kubernetes-<span style="color: rgba(0, 0, 0, 1)">dashboard created
rolebinding.rbac.authorization.k8s.io</span>/kubernetes-<span style="color: rgba(0, 0, 0, 1)">dashboard created
clusterrolebinding.rbac.authorization.k8s.io</span>/kubernetes-<span style="color: rgba(0, 0, 0, 1)">dashboard created
deployment.apps</span>/kubernetes-<span style="color: rgba(0, 0, 0, 1)">dashboard created
service</span>/dashboard-metrics-<span style="color: rgba(0, 0, 0, 1)">scraper created
deployment.apps</span>/dashboard-metrics-scraper created</pre>
</div>
<p># kubectl get pods -n kubernetes-dashboard</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">NAME READY STATUS RESTARTS AGE
dashboard</span>-metrics-scraper-76585494d8-5jtvw <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 86s
kubernetes</span>-dashboard-b7ffbc8cb-4xcdp <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span> 86s</pre>
</div>
<p>已经运行</p>
<h3>4.2 开放端口设置</h3>
<p>在默认情况下,dashboard并不对外开放访问端口,这里简化操作,直接使用nodePort的方式将其端口暴露出来,修改serivce部分的定义:</p>
<p># vi recommended.yaml </p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">kind: Service
apiVersion: v1
metadata:
labels:
k8s</span>-app: kubernetes-<span style="color: rgba(0, 0, 0, 1)">dashboard
name: kubernetes</span>-<span style="color: rgba(0, 0, 0, 1)">dashboard
namespace: kubernetes</span>-<span style="color: rgba(0, 0, 0, 1)">dashboard
spec:
type: NodePort
ports:
</span>- port: <span style="color: rgba(128, 0, 128, 1)">443</span><span style="color: rgba(0, 0, 0, 1)">
targetPort: </span><span style="color: rgba(128, 0, 128, 1)">8443</span><span style="color: rgba(0, 0, 0, 1)">
nodePort: </span><span style="color: rgba(128, 0, 128, 1)">32443</span><span style="color: rgba(0, 0, 0, 1)">
selector:
k8s</span>-app: kubernetes-dashboard</pre>
</div>
<p># kubectl delete -f recommended.yaml </p>
<div class="cnblogs_code">
<pre>namespace <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">kubernetes-dashboard</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> deleted
serviceaccount </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">kubernetes-dashboard</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> deleted
service </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">kubernetes-dashboard</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> deleted
secret </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">kubernetes-dashboard-certs</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> deleted
secret </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">kubernetes-dashboard-csrf</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> deleted
secret </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">kubernetes-dashboard-key-holder</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> deleted
configmap </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">kubernetes-dashboard-settings</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> deleted
role.rbac.authorization.k8s.io </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">kubernetes-dashboard</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> deleted
clusterrole.rbac.authorization.k8s.io </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">kubernetes-dashboard</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> deleted
rolebinding.rbac.authorization.k8s.io </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">kubernetes-dashboard</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> deleted
clusterrolebinding.rbac.authorization.k8s.io </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">kubernetes-dashboard</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> deleted
deployment.apps </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">kubernetes-dashboard</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> deleted
service </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">dashboard-metrics-scraper</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> deleted
deployment.apps </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">dashboard-metrics-scraper</span><span style="color: rgba(128, 0, 0, 1)">"</span> deleted</pre>
</div>
<p># kubectl apply -f recommended.yaml</p>
<p># kubectl get pods -n kubernetes-dashboard</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">NAME READY STATUS RESTARTS AGE
dashboard</span>-metrics-scraper-76585494d8-cj9n9 <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 4s
kubernetes</span>-dashboard-b7ffbc8cb-nswqq <span style="color: rgba(128, 0, 128, 1)">0</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> ContainerCreating <span style="color: rgba(128, 0, 128, 1)">0</span> 4s</pre>
</div>
<h3>4.3 访问Token配置</h3>
<p>使用谷歌访问https://192.168.132.131:32443/出现</p>
<p><img src="https://img2018.cnblogs.com/i-beta/1624149/202001/1624149-20200112011821702-324844038.png" alt="" width="759" height="467"></p>
<p>使用火狐浏览器访问</p>
<p><img src="https://img2018.cnblogs.com/i-beta/1624149/202001/1624149-20200112011948035-187435108.png" alt="" width="626" height="171"></p>
<p>点击高级</p>
<p><img src="https://img2018.cnblogs.com/i-beta/1624149/202001/1624149-20200112012008677-35965870.png" alt="" width="654" height="197"></p>
<p>接受风险并继续</p>
<p>使用Token</p>
<p><img src="https://img2018.cnblogs.com/i-beta/1624149/202001/1624149-20200112012142209-339349683.png" alt="" width="719" height="326"></p>
<p>可以看到出现如上图画面,需要我们输入一个kubeconfig文件或者一个token。事实上在安装dashboard时,也为我们默认创建好了一个serviceaccount,为kubernetes-dashboard,并为其生成好了token,我们可以通过如下指令获取该sa的token:</p>
<p># kubectl describe secret -n kubernetes-dashboard $(kubectl get secret -n kubernetes-dashboard |grep kubernetes-dashboard-token | awk '{print $1}') |grep token | awk '{print $2}' </p>
<div class="cnblogs_code">
<pre>kubernetes-dashboard-token-<span style="color: rgba(0, 0, 0, 1)">kvtdw
kubernetes.io</span>/service-account-<span style="color: rgba(0, 0, 0, 1)">token
eyJhbGciOiJSUzI1NiIsImtpZCI6Inl0U2JtWkVaSkNjbFpCMGpkVktHTGtTUTFvZFc3LVUxeUllRkRyalcxYncifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJrdWJlcm5ldGVzLWRhc2hib2FyZC10b2tlbi1rdnRkdyIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6IjMyMTgxNjhiLTM2N2ItNDZjMi1iZWE0LWI2MzM3YWIxZmZjMCIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlcm5ldGVzLWRhc2hib2FyZDprdWJlcm5ldGVzLWRhc2hib2FyZCJ9.oLAu</span>-403EhotW7CQ9BVT4R9CbFmvtJekPoH2hZD2ifkG43GpAqWm8YrOqqjJpl0bVvToFY5i4kaBHzOSiPk8CresCodaYC-qt19uzam-E894rKWz6X9OlKudgR7agAkZdtYQPqpmkd4FKoF0JdyT3k1V5Kc0Jm3_8Fz4Vg9R76p_BWTZQjr_ed-HqOyQ1-zaBA3bImx7h8VQZm_V70EUu4CEnLFoPbpSRIkN5PfwBGHXYIMvnyHLyxuqfVKvtpldXTKF3IYcIb2Rp5ctHJz0abaxR2W-BeQ07nMX9D9oBRwVoxnXJSqgUL4pHLD4IuZS4PShAJwcswp04r7bxOFbtQ</pre>
</div>
<p>复制上面内容粘贴</p>
<p><img src="https://img2018.cnblogs.com/i-beta/1624149/202001/1624149-20200112012454952-349429969.png" alt="" width="689" height="312"></p>
<p>登陆</p>
<p><img src="https://img2018.cnblogs.com/i-beta/1624149/202001/1624149-20200112012635202-951226149.png" alt="" width="767" height="144"></p>
<h3>4.4 权限配置</h3>
<p>由于这个权限太小,修改一个超级管理员权限</p>
<p># vi recommended.yaml </p>
<div class="cnblogs_code">
<pre>apiVersion: rbac.authorization.k8s.io/<span style="color: rgba(0, 0, 0, 1)">v1
kind: ClusterRoleBinding
metadata:
name: kubernetes</span>-<span style="color: rgba(0, 0, 0, 1)">dashboard
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster</span>-<span style="color: rgba(0, 0, 0, 1)">admin
subjects:
</span>-<span style="color: rgba(0, 0, 0, 1)"> kind: ServiceAccount
name: kubernetes</span>-<span style="color: rgba(0, 0, 0, 1)">dashboard
namespace: kubernetes</span>-dashboard</pre>
</div>
<p># kubectl delete -f recommended.yaml ;kubectl apply -f recommended.yaml</p>
<p>重新获取token</p>
<p># kubectl describe secret -n kubernetes-dashboard $(kubectl get secret -n kubernetes-dashboard |grep kubernetes-dashboard-token | awk '{print $1}') |grep token | awk '{print $2}'</p>
<div class="cnblogs_code">
<pre>eyJhbGciOiJSUzI1NiIsImtpZCI6Inl0U2JtWkVaSkNjbFpCMGpkVktHTGtTUTFvZFc3LVUxeUllRkRyalcxYncifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJrdWJlcm5ldGVzLWRhc2hib2FyZC10b2tlbi1qOHNrOSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6IjRjZDQxY2QwLTMyNTQtNGM2ZC05YmI5LTFmNjYxYzAwY2YxYSIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlcm5ldGVzLWRhc2hib2FyZDprdWJlcm5ldGVzLWRhc2hib2FyZCJ9.CR-SJO9K4w7dKaoLVsDGZ9j-pq3XH5a2YPpjRiSERT5bRQO0MVBM-fvXdc9oX-Dyp5smXkYpe-K6DsIZ_G4w01miDko_oCgPlNXq6yVrbh8X-DHB-JKNOnMCq7Ax2TqWEnJ54OyJTcguyJY_H2lFtFd3LP6vcNVFFhZfvW9u3tXOBAlVnUR_u4L3KkzrZi4TPd3OLM8Dt6FDNqrXolbVqdnfFtRNfUginWeUOngXf0sLQpvqmG7YxKkVkkdBavO5qG-up8dV3hIw1RrBCnsRGjtzxmkGEx4DF2_Mxd3yjZw6uqoLLMYEmMhKZ7xwWNbPw7AIxUDGSLj_tcidmVxsFA</pre>
</div>
<p>再次使用token就会看到以下信息</p>
<p><img src="https://img2018.cnblogs.com/i-beta/1624149/202001/1624149-20200112014322135-1103966062.png" alt="" width="1063" height="539"></p>
<p>集群安装安装完成</p>
<p>https://github.com/fanux/sealos</p>
<p><span class="text-gray-dark mr-2">kubernetes高可用安装工具,一条命令,离线安装,包含所有依赖,内核负载不依赖haproxy keepalived,纯golang开发,99年证书,支持v1.16.4 v1.15.7 v1.14.10 v1.17.0! <span>https://sealyun.com</span></span></p>
<hr>
<p><span class="text-gray-dark mr-2"><span><span style="color: rgba(255, 0, 0, 1)">博主声明:本文的内容来源主要来自誉天教育晏威老师,由本人实验完成操作验证,需要的博友请联系誉天教育(http://www.yutianedu.com/),获得官方同意或者晏老师(<span style="color: rgba(255, 0, 0, 1)">https://www.cnblogs.com/breezey/</span>)本人同意即可转载,谢谢!</span></span></span></p>
</div>
<div id="MySignature" role="contentinfo">
<div>作者:梦中泪</div>
<div>出处:http://www.cnblogs.com/zyxnhr/
</div>
<div>关于作者:云计算,linux,虚拟化,存储</div>
<p>---------------------------------------------------------------------------</p>
<p>个性签名:我以为我很颓废,今天我才知道,原来我早报废了。</p>
<p>如果觉得本篇文章最您有帮助,欢迎转载,且在文章页面明显位置给出原文链接!记得在右下角点个<span>“推荐”</span>,博主在此感谢!</p><br><br>
来源:https://www.cnblogs.com/zyxnhr/p/12181721.html
頁:
[1]