ubuntu k8s 单节点安装

276 阅读9分钟
E: 软件包 curl 没有可安装候选                         
zizhen@zizhen:~$ snap install curl   

```js
error: access denied (尝试使用 sudo 运行)         
zizhen@zizhen:~$ sudo snap install curl     
确保 "curl" 的先决条件可用                           
道 "stable"                   下载 snap "curl" 
下载 snap "curl" (783),来自频道 "stable"          
道 "stable"                   下载 snap "curl" 
下载 snap "curl" (783),来自频道 "stable"          
道 "stable"                   下载 snap "curl" 
下载 snap "curl" (783),来自频道 "stable"          
道 "stable"                   下载 snap "curl" 
下载 snap "curl" (783),来自频道 "stable"          
道 "stable"         0%  100kB/下载 snap "curl" 
下载 snap "curl" (783),来自频道 "stable"         1
道 "stable"         2%  109kB/下载 snap "curl" 
下载 snap "curl" (783),来自频道 "stable"         3
道 "stable"         7%  278kB/下载 snap "curl" 
下载 snap "curl" (783),来自频道 "stable"         8
道 "stable"        10%  269kB/下载 snap "curl" 
下载 snap "curl" (783),来自频道 "stable"        19
道 "stable"        27%  544kB/下载 snap "curl" 
下载 snap "curl" (783),来自频道 "stable"        46
道 "stable"        46%  771kB/下载 snap "curl" 
下载 snap "curl" (783),来自频道 "stable"        48
道 "stable"        49%  693kB/下载 snap "curl" 
下载 snap "curl" (783),来自频道 "stable"        88
道 "stable"        88% 1.07MB/下载 snap "curl" 
获取并检查 snap "curl" (783) 的断言                 
断言                         获取并检查 snap "curl"
取并检查 snap "curl" (783) 的断言                  
言                         获取并检查 snap "curl" 
并检查 snap "curl" (783) 的断言                   
                         获取并检查 snap "curl" (
检查 snap "curl" (783) 的断言                    
                       获取并检查 snap "curl" (78
查 snap "curl" (783) 的断言                     
                     获取并检查 snap "curl" (783)
 snap "curl" (783) 的断言                      
                   获取并检查 snap "curl" (783) 的
nap "curl" (783) 的断言                        
                 获取并检查 snap "curl" (783) 的断言
p "curl" (783) 的断言                         获
               获取并检查 snap "curl" (783) 的断言  
zizhen@zizhen:~$ ll                         
总用量 100                                     
drwxr-xr-x 20 zizhen zizhen 4096 326 13:4
drwxr-xr-x  4 root   root   4096 321 01:5
drwxr-xr-x  2 zizhen zizhen 4096 321 16:1
drwxr-xr-x  2 zizhen zizhen 4096 321 16:1
drwxr-xr-x  2 zizhen zizhen 4096 321 16:1
drwxr-xr-x  2 zizhen zizhen 4096 326 15:3
drwxr-xr-x  2 zizhen zizhen 4096 321 16:1
drwxr-xr-x  2 zizhen zizhen 4096 321 23:1
drwxr-xr-x  2 zizhen zizhen 4096 321 16:1
drwxr-xr-x  2 zizhen zizhen 4096 321 16:1
-rw-------  1 zizhen zizhen 2527 3月  21 23:5
-rw-r--r--  1 zizhen zizhen 3771 3月  21 01:5
drwxr-xr-x 19 zizhen zizhen 4096 326 15:3
drwxr-xr-x 15 zizhen zizhen 4096 326 15:3
drwx------  3 zizhen zizhen 4096 3月  21 20:3
drwxr-xr-x  3 zizhen zizhen 4096 321 16:1
drwx------  5 zizhen zizhen 4096 3月  21 16:2
drwx------  3 zizhen zizhen 4096 3月  26 13:4
-rw-r--r--  1 zizhen zizhen  807 3月  21 01:5
drwx------  4 zizhen zizhen 4096 3月  26 14:4
drwx------  2 zizhen zizhen 4096 3月  21 08:4
-rw-r--r--  1 zizhen zizhen    0 3月  21 08:2
drwx------  6 zizhen zizhen 4096 3月  21 08:3
-rw-------  1 zizhen zizhen  747 3月  21 22:3
zizhen@zizhen:~$ pwd 

/home/zizhen
zizhen@zizhen:~$ curl
curl: try 'curl --help' or 'curl --manual' f



```
curl -fsSL https://get.docker.com | sudo sh
```


zizhen@zizhen:~$ curl -fsSL https://get.dock
h                                           
# Executing docker install script, commit: 9
+ sh -c apt-get update -qq >/dev/null       
                                            
                                            
                                            
                                            
                                            
                                            
+ sh -c DEBIAN_FRONTEND=noninteractive apt-g
+ sh -c curl -fsSL "https://download.docker.
+ sh -c echo "deb [arch=amd64 signed-by=/usrv/null                                      + sh -c DEBIAN_FRONTEND=noninteractive apt-g+ version_gte 20.10                         + [ -z  ]                                   
+ return 0                                  
+ sh -c DEBIAN_FRONTEND=noninteractive apt-g
+ sh -c docker version                      
Client: Docker Engine - Community           
 Version:           20.10.14                
 API version:       1.41                    
 Go version:        go1.16.15               
 Git commit:        a224086                 
 Built:             Thu Mar 24 01:48:02 2022
 OS/Arch:           linux/amd64             
 Context:           default                 
 Experimental:      true                    
                                            
Server: Docker Engine - Community           
 Engine:                                    
  Version:          20.10.14                
  API version:      1.41 (minimum version 1.
  Go version:       go1.16.15               
  Git commit:       87a90dc                 
  Built:            Thu Mar 24 01:45:53 2022
  OS/Arch:          linux/amd64             
  Experimental:     false                   
 containerd:                                
  Version:          1.5.11                  
  GitCommit:        3df54a852345ae127d1fa309
  Version:          1.0.3                   
  GitCommit:        v1.0.3-0-gf46b6ba       
 docker-init:                               
  Version:          0.19.0                  
  GitCommit:        de40ad0                 
                                            
============================================
                                            
To run Docker as a non-privileged user, cons
Docker daemon in rootless mode for your user
                                            
    dockerd-rootless-setuptool.sh install   
                                            
Visit https://docs.docker.com/go/rootless/ t
                                            
 
 


```js 
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
echo "deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main" > /etc/apt/sources.list.d/kubernetes.list
apt-get update
apt-get install -y kubelet kubeadm kubectl
```
systemctl enable kubelet
apt-get update



zizhen@zizhen:~$ sudo apt-get update && apt-
apt-transport-https         

 
zizhen@zizhen:~$ apt-get update && apt-get i
ransport-https                              
tps://mirrors.aliyun.com/kubernetes/apt/doc/
echo "deb https://mirrors.aliyun.com/kuberne
apt-get update                              
t-get install -y kubelet kubeadm kubectl    
                                            
正在读取软件包列表... 完成                             
E: 无法打开锁文件 /var/lib/apt/lists/lock - open (1
E: 无法对目录 /var/lib/apt/lists/ 加锁             
W: 用 unlink 删除文件 /var/cache/apt/pkgcache.bin
W: 用 unlink 删除文件 /var/cache/apt/srcpkgcache.
et                                          
zizhen@zizhen:~$ curl https://mirrors.aliyun
/apt/doc/apt-key.gpg | apt-key add -        
  % Total    % Received % Xferd  Average Spe
                                 Dload  Uplo
  0     0    0     0    0     0      0      
100  2537  100  2537    0     0   4237      
curl: (23) Failed writing body              
zizhen@zizhen:~$ echo "deb https://mirrors.a
netes/apt/ kubernetes-xenial main" > /etc/ap
d/kubernetes.list                           
bash: /etc/apt/sources.list.d/kubernetes.lis
zizhen@zizhen:~$ apt-get update             
正在读取软件包列表... 完成                             
E: 无法打开锁文件 /var/lib/apt/lists/lock - open (1
E: 无法对目录 /var/lib/apt/lists/ 加锁             
W: 用 unlink 删除文件 /var/cache/apt/pkgcache.bin
W: 用 unlink 删除文件 /var/cache/apt/srcpkgcache.
zizhen@zizhen:~$ apt-get install -y kubelet 
E: 无法打开锁文件 /var/lib/dpkg/lock-frontend - ope
E: 无法获取 dpkg 前端锁 (/var/lib/dpkg/lock-fronten
zizhen@zizhen:~$                            
zizhen@zizhen:~$ systemctl enable kubelet   
==== AUTHENTICATING FOR org.freedesktop.syst
管理系统服务或单元文件需要认证。                            
Authenticating as: zizhen,,, (zizhen)       
Password:                                   
polkit-agent-helper-1: pam_authenticate fail
==== AUTHENTICATION FAILED ===              
Failed to enable unit: Access denied        
zizhen@zizhen:~$ wjj179140026.              
wjj179140026.:未找到命令                         
zizhen@zizhen:~$                            
zizhen@zizhen:~$                            
zizhen@zizhen:~$                            
zizhen@zizhen:~$                            
zizhen@zizhen:~$                            
zizhen@zizhen:~$                            
zizhen@zizhen:~$                            
zizhen@zizhen:~$                            
zizhen@zizhen:~$ apt-get update && apt-get i
ransport-https                              
tps://mirrors.aliyun.com/kubernetes/apt/doc/
echo "deb https://mirrors.aliyun.com/kuberne
apt-get update                              
 kubelet kubeadm kubectl                    
                                            
systemctl enable kubelet                    
正在读取软件包列表... 完成                             
E: 无法打开锁文件 /var/lib/apt/lists/lock - open (1
E: 无法对目录 /var/lib/apt/lists/ 加锁             
W: 用 unlink 删除文件 /var/cache/apt/pkgcache.bin
W: 用 unlink 删除文件 /var/cache/apt/srcpkgcache.
zizhen@zizhen:~$ curl https://mirrors.aliyun
/apt/doc/apt-key.gpg | apt-key add -        
  % Total    % Received % Xferd  Average Spe
                                 Dload  Uplo
  0     0    0     0    0     0      0      
100  2537  100  2537    0     0   6773      
curl: (23) Failed writing body              
zizhen@zizhen:~$ echo "deb https://mirrors.a
netes/apt/ kubernetes-xenial main" > /etc/ap
d/kubernetes.list                           
bash: /etc/apt/sources.list.d/kubernetes.lis
zizhen@zizhen:~$ apt-get update             
正在读取软件包列表... 完成                             
E: 无法打开锁文件 /var/lib/apt/lists/lock - open (1
E: 无法对目录 /var/lib/apt/lists/ 加锁             
W: 用 unlink 删除文件 /var/cache/apt/pkgcache.bin
W: 用 unlink 删除文件 /var/cache/apt/srcpkgcache.
zizhen@zizhen:~$ apt-get install -y kubelet 
E: 无法打开锁文件 /var/lib/dpkg/lock-frontend - ope
E: 无法获取 dpkg 前端锁 (/var/lib/dpkg/lock-fronten
zizhen@zizhen:~$                            
zizhen@zizhen:~$ systemctl enable kubelet   
==== AUTHENTICATING FOR org.freedesktop.syst
管理系统服务或单元文件需要认证。                            
Authenticating as: zizhen,,, (zizhen)       
Password:                                   
==== AUTHENTICATION COMPLETE ===            
Failed to enable unit: Unit file kubelet.ser
zizhen@zizhen:~$                            
zizhen@zizhen:~$                            
zizhen@zizhen:~$                            
zizhen@zizhen:~$ apt-get update             
正在读取软件包列表... 完成                             
E: 无法打开锁文件 /var/lib/apt/lists/lock - open (1
E: 无法对目录 /var/lib/apt/lists/ 加锁             
W: 用 unlink 删除文件 /var/cache/apt/pkgcache.bin
W: 用 unlink 删除文件 /var/cache/apt/srcpkgcache.
zizhen@zizhen:~$ su root                    
密码:                                         
root@zizhen:/home/zizhen#  apt-get update   
命中:1 https://dl.google.com/linux/chrome/deb 
命中:2 http://cn.archive.ubuntu.com/ubuntu foc
命中:3 http://security.ubuntu.com/ubuntu focal
命中:4 http://cn.archive.ubuntu.com/ubuntu foc
命中:5 http://cn.archive.ubuntu.com/ubuntu foc
命中:6 https://download.docker.com/linux/ubunt
正在读取软件包列表... 完成     

```
root@zizhen:/home/zizhen# docker ps  

```
CONTAINER ID   IMAGE     COMMAND   CREATED  



 ```
root@zizhen:/home/zizhen#  apt-get update 
```



命中:1 https://dl.google.com/linux/chrome/deb 
命中:2 http://security.ubuntu.com/ubuntu focal
命中:3 https://download.docker.com/linux/ubunt
命中:4 http://cn.archive.ubuntu.com/ubuntu foc
命中:5 http://cn.archive.ubuntu.com/ubuntu foc
命中:6 http://cn.archive.ubuntu.com/ubuntu foc
正在读取软件包列表... 完成     


```
root@zizhen:/home/zizhen# apt-get update && 
 -y apt-transport-https     
 
 ```
命中:1 https://dl.google.com/linux/chrome/deb 
命中:2 http://cn.archive.ubuntu.com/ubuntu foc
命中:3 http://security.ubuntu.com/ubuntu focal
命中:4 http://cn.archive.ubuntu.com/ubuntu foc
命中:5 https://download.docker.com/linux/ubunt
命中:6 http://cn.archive.ubuntu.com/ubuntu foc
正在读取软件包列表... 完成                             
正在读取软件包列表... 完成                             
正在分析软件包的依赖关系树                               
正在读取状态信息... 完成                              
apt-transport-https 已经是最新版 (2.0.6)。         
下列软件包是自动安装的并且现在不需要了:                        
  java-common libfprint-2-tod1 libfwupdplugi
  shim                                      
使用'apt autoremove'来卸载它(它们)。                 
升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 0 个软件包未被
root@zizhen:/home/zizhen#  curl https://mirr
kubernetes/apt/doc/apt-key.gpg | apt-key add
  % Total    % Received % Xferd  Average Spe
                                 Dload  Uplo
  0     0    0     0    0     0      0      
OK        
```
root@zizhen:/home/zizhen# echo "deb https://
com/kubernetes/apt/ kubernetes-xenial main" 
ces.list.d/kubernetes.list     

```
root@zizhen:/home/zizhen# apt-get update  


```
获取:1 https://mirrors.aliyun.com/kubernetes/a
命中:2 https://dl.google.com/linux/chrome/deb 
命中:3 http://cn.archive.ubuntu.com/ubuntu foc
命中:4 http://security.ubuntu.com/ubuntu focal
忽略:5 https://mirrors.aliyun.com/kubernetes/a
获取:5 https://mirrors.aliyun.com/kubernetes/a
命中:6 http://cn.archive.ubuntu.com/ubuntu foc
命中:7 http://cn.archive.ubuntu.com/ubuntu foc
命中:8 https://download.docker.com/linux/ubunt
已下载 64.1 kB,耗时 9秒 (6,875 B/s)               
正在读取软件包列表... 完成                             
root@zizhen:/home/zizhen# apt-get install -y
m kubectl                                   
正在读取软件包列表... 完成                             
正在分析软件包的依赖关系树                               
正在读取状态信息... 完成                              
下列软件包是自动安装的并且现在不需要了:                        
  java-common libfprint-2-tod1 libfwupdplugi
  shim                                      
使用'apt autoremove'来卸载它(它们)。                 
将会同时安装下列软件:                                 
  conntrack cri-tools ebtables ethtool kuber
  socat                                     
建议安装:                                       
  nftables                                  
下列【新】软件包将被安装:                               
  conntrack cri-tools ebtables ethtool kubea
  kubelet kubernetes-cni socat              
升级了 0 个软件包,新安装了 9 个软件包,要卸载 0 个软件包,有 0 个软件包未被
需要下载 77.8 MB 的归档。                           
解压缩后会消耗 335 MB 的额外空间。                       
获取:1 https://mirrors.aliyun.com/kubernetes/a
获取:2 http://cn.archive.ubuntu.com/ubuntu foc
获取:3 http://cn.archive.ubuntu.com/ubuntu foc
获取:4 http://cn.archive.ubuntu.com/ubuntu foc
获取:5 http://cn.archive.ubuntu.com/ubuntu foc
获取:6 https://mirrors.aliyun.com/kubernetes/a
获取:7 https://mirrors.aliyun.com/kubernetes/a
获取:8 https://mirrors.aliyun.com/kubernetes/a
获取:9 https://mirrors.aliyun.com/kubernetes/a
已下载 77.8 MB,耗时 16秒 (4,967 kB/s)             
正在选中未选择的软件包 conntrack。                      
(正在读取数据库 ... 系统当前共安装有 179062 个文件和目录。)       
准备解压 .../0-conntrack_1%3a1.4.5-2_amd64.deb  
正在解压 conntrack (1:1.4.5-2) ...              
正在选中未选择的软件包 cri-tools。                      
准备解压 .../1-cri-tools_1.23.0-00_amd64.deb  ..
正在解压 cri-tools (1.23.0-00) ...              
正在选中未选择的软件包 ebtables。                       
准备解压 .../2-ebtables_2.0.11-3build1_amd64.deb
正在解压 ebtables (2.0.11-3build1) ...          
正在选中未选择的软件包 ethtool。                        
准备解压 .../3-ethtool_1%3a5.4-1_amd64.deb  ... 
正在解压 ethtool (1:5.4-1) ...                  
正在选中未选择的软件包 kubernetes-cni。                 
准备解压 .../4-kubernetes-cni_0.8.7-00_amd64.deb
正在解压 kubernetes-cni (0.8.7-00) ...          
正在选中未选择的软件包 socat。                          
准备解压 .../5-socat_1.7.3.3-2_amd64.deb  ...   
正在解压 socat (1.7.3.3-2) ...                  
正在选中未选择的软件包 kubelet。                        
准备解压 .../6-kubelet_1.23.5-00_amd64.deb  ... 
正在解压 kubelet (1.23.5-00) ...                
正在选中未选择的软件包 kubectl。                        
准备解压 .../7-kubectl_1.23.5-00_amd64.deb  ... 
正在解压 kubectl (1.23.5-00) ...                
正在选中未选择的软件包 kubeadm。                        
准备解压 .../8-kubeadm_1.23.5-00_amd64.deb  ... 
正在解压 kubeadm (1.23.5-00) ...                
正在设置 conntrack (1:1.4.5-2) ...              
正在设置 kubectl (1.23.5-00) ...                
正在设置 ebtables (2.0.11-3build1) ...          
正在设置 socat (1.7.3.3-2) ...                  
正在设置 cri-tools (1.23.0-00) ...              
正在设置 kubernetes-cni (0.8.7-00) ...          
正在设置 ethtool (1:5.4-1) ...                  
正在设置 kubelet (1.23.5-00) ...                
Created symlink /etc/systemd/system/multi-us
正在设置 kubeadm (1.23.5-00) ...                
正在处理用于 man-db (2.9.1-1) 的触发器 ...   
```

root@zizhen:/home/zizhen# systemctl enable k
```
root@zizhen:/home/zizhen# apt-get update   
```
命中:1 https://mirrors.aliyun.com/kubernetes/a
命中:2 https://dl.google.com/linux/chrome/deb 
命中:3 http://security.ubuntu.com/ubuntu focal
命中:4 http://cn.archive.ubuntu.com/ubuntu foc
命中:5 http://cn.archive.ubuntu.com/ubuntu foc






对于 ubuntu ,需要修改 docker 的 cgroup driver 选项为 systemd,与 k8s 保持一致,并修改 registry-mirror 加速下载,可以用 aliyun 提供的镜像服务,以下内容加入到 /etc/docker/daemon.json

```
{
"exec-opts": ["native.cgroupdriver=systemd"], "registry-mirrors": ["https://registry.docker-cn.com", "https://docker.mirrors.ustc.edu.cn"]
}
```

重启 docker

```
systemctl restart docker
```

直接使用阿里云上提供的 k8s 镜像 (这里指定的网络与后续使用的网络插件的配置保持一致)

```
kubeadm init --image-repository registry.aliyuncs.com/google_containers \
    --service-cidr=10.1.0.0/16 --pod-network-cidr=10.244.0.0/16
```

按照提示把 k8s 配置复制到用户目录下

```
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
```

查看当前节点状态,为 notready

```
kubectl get nodes

C# 复制 全屏
```

需要安装 pod 网络插件 flannel(可用 wget 把 github 把文件下载到本地)

```
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

RUBY 复制 全屏
```

(安装时需要下载镜像 `quay.io/coreos/flannel:v0.11.0-amd64`,具体的镜像见 kube-flannel.yml 文件,如果下载失败则到 quay-mirror.qiniu.com 下载,并重新打回 tag)

查看节点状态,为 ready,查看集群状态,各服务正常

```
kubectl get cs
```



root@zizhen:/etc/docker# kubeadm init --image-repository registry.aliyuncs.com/google_containers     --service-cidr=10.1.0.0/16 --pod-network-cidr=10.244.0.0/16
[init] Using Kubernetes version: v1.23.5
[preflight] Running pre-flight checks
[preflight] Pulling images required for setting up a Kubernetes cluster
[preflight] This might take a minute or two, depending on the speed of your internet connection
[preflight] You can also perform this action in beforehand using 'kubeadm config images pull'
[certs] Using certificateDir folder "/etc/kubernetes/pki"
[certs] Generating "ca" certificate and key
[certs] Generating "apiserver" certificate and key
[certs] apiserver serving cert is signed for DNS names [kubernetes kubernetes.default kubernetes.default.svc kubernetes.default.svc.cluster.local zizhen] and IPs [10.1.0.1 192.168.101.6]
[certs] Generating "apiserver-kubelet-client" certificate and key
[certs] Generating "front-proxy-ca" certificate and key
[certs] Generating "front-proxy-client" certificate and key
[certs] Generating "etcd/ca" certificate and key
[certs] Generating "etcd/server" certificate and key
[certs] etcd/server serving cert is signed for DNS names [localhost zizhen] and IPs [192.168.101.6 127.0.0.1 ::1]
[certs] Generating "etcd/peer" certificate and key
[certs] etcd/peer serving cert is signed for DNS names [localhost zizhen] and IPs [192.168.101.6 127.0.0.1 ::1]
[certs] Generating "etcd/healthcheck-client" certificate and key
[certs] Generating "apiserver-etcd-client" certificate and key
[certs] Generating "sa" key and public key
[kubeconfig] Using kubeconfig folder "/etc/kubernetes"
[kubeconfig] Writing "admin.conf" kubeconfig file
[kubeconfig] Writing "kubelet.conf" kubeconfig file
[kubeconfig] Writing "controller-manager.conf" kubeconfig file
[kubeconfig] Writing "scheduler.conf" kubeconfig file
[kubelet-start] Writing kubelet environment file with flags to file "/var/lib/kubelet/kubeadm-flags.env"
[kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
[kubelet-start] Starting the kubelet
[control-plane] Using manifest folder "/etc/kubernetes/manifests"
[control-plane] Creating static Pod manifest for "kube-apiserver"
[control-plane] Creating static Pod manifest for "kube-controller-manager"
[control-plane] Creating static Pod manifest for "kube-scheduler"
[etcd] Creating static Pod manifest for local etcd in "/etc/kubernetes/manifests"
[wait-control-plane] Waiting for the kubelet to boot up the control plane as static Pods from directory "/etc/kubernetes/manifests". This can take up to 4m0s
[apiclient] All control plane components are healthy after 29.508179 seconds
[upload-config] Storing the configuration used in ConfigMap "kubeadm-config" in the "kube-system" Namespace
[kubelet] Creating a ConfigMap "kubelet-config-1.23" in namespace kube-system with the configuration for the kubelets in the cluster
NOTE: The "kubelet-config-1.23" naming of the kubelet ConfigMap is deprecated. Once the UnversionedKubeletConfigMap feature gate graduates to Beta the default name will become just "kubelet-config". Kubeadm upgrade will handle this transition transparently.
[upload-certs] Skipping phase. Please see --upload-certs
[mark-control-plane] Marking the node zizhen as control-plane by adding the labels: [node-role.kubernetes.io/master(deprecated) node-role.kubernetes.io/control-plane node.kubernetes.io/exclude-from-external-load-balancers]
[mark-control-plane] Marking the node zizhen as control-plane by adding the taints [node-role.kubernetes.io/master:NoSchedule]
[bootstrap-token] Using token: taqfiu.vtbloigwr5fl5oq0
[bootstrap-token] Configuring bootstrap tokens, cluster-info ConfigMap, RBAC Roles
[bootstrap-token] configured RBAC rules to allow Node Bootstrap tokens to get nodes
[bootstrap-token] configured RBAC rules to allow Node Bootstrap tokens to post CSRs in order for nodes to get long term certificate credentials
[bootstrap-token] configured RBAC rules to allow the csrapprover controller automatically approve CSRs from a Node Bootstrap Token
[bootstrap-token] configured RBAC rules to allow certificate rotation for all node client certificates in the cluster
[bootstrap-token] Creating the "cluster-info" ConfigMap in the "kube-public" namespace
[kubelet-finalize] Updating "/etc/kubernetes/kubelet.conf" to point to a rotatable kubelet client certificate and key
[addons] Applied essential addon: CoreDNS
[addons] Applied essential addon: kube-proxy

Your Kubernetes control-plane has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

Alternatively, if you are the root user, you can run:

  export KUBECONFIG=/etc/kubernetes/admin.conf


  
  
  
sudo wget https://github.com/coreos/flannel/raw/master/Documentation/kube-flannel.yml
 修改其中
 net-conf.json      的Network参数  使其与kubeadm init时指定的 
 --pod-network-cidr  一致, 

`kubectl apply -f kube-flannel.yml`

zizhen@zizhen:/etc/docker$ kubectl apply -f kube-flannel.yml
Warning: policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+
podsecuritypolicy.policy/psp.flannel.unprivileged created
clusterrole.rbac.authorization.k8s.io/flannel created
clusterrolebinding.rbac.authorization.k8s.io/flannel created
serviceaccount/flannel created
configmap/kube-flannel-cfg created
daemonset.apps/kube-flannel-ds created


查看节点状态,为 ready,查看集群状态,各服务正常

```
```
zizhen@zizhen:/etc/docker$ kubectl get cs
Warning: v1 ComponentStatus is deprecated in v1.19+
NAME                 STATUS    MESSAGE                         ERROR
controller-manager   Healthy   ok
etcd-0               Healthy   {"health":"true","reason":""}
scheduler            Healthy   ok
zizhen@zizhen:/etc/docker$



允许 master 部署 pod

zizhen@zizhen:/etc/docker$ kubectl taint nodes --all node-role.kubernetes.io/master-
node/zizhen untainted



```当创建单机版的 k8s 时,这个时候 master 节点是默认不允许调度 pod 的,需要执行

zizhen@zizhen:/etc/docker$ kubectl taint nodes --all node-role.kubernetes.io/master-
error: taint "node-role.kubernetes.io/master" not found
```因为taint(master标记的污点已经被去掉了)没有关系
zizhen@zizhen:/etc/docker$ kubectl describe nodes zizhen |grep Taint
Taints:             <none>

```查看系统状态

```
```
kubectl get pods -n kube-system
```

![image.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/3b73c748b5974a92b5066b69b21bc8a0~tplv-k3u1fbpfcp-watermark.image?)
\



zizhen@zizhen:/etc/docker$ kubectl get pods -n kube-system
NAME                             READY   STATUS    RESTARTS   AGE
coredns-6d8c4cb4d-l79xj          1/1     Running   0          6h1m
coredns-6d8c4cb4d-skf7d          1/1     Running   0          6h1m
etcd-zizhen                      1/1     Running   1          6h1m
kube-apiserver-zizhen            1/1     Running   1          6h1m
kube-controller-manager-zizhen   1/1     Running   1          6h1m
kube-flannel-ds-rt8dw            1/1     Running   0          21m
kube-proxy-k574r                 1/1     Running   0          6h1m
kube-scheduler-zizhen            1/1     Running   1          6h1m
zizhen@zizhen:/etc/docker$ kubectl create deployment nginx --image=nginx
deployment.apps/nginx created
zizhen@zizhen:/etc/docker$ zizhen@zizhen:/etc/docker$ kubectl create deployment nginx --image=nginx deployment.apps/nginx created zizhen@zizhen:/etc/docker$^C
zizhen@zizhen:/etc/docker$ kubectl expose deployment nginx --port=8080 --type=NodePort
service/nginx exposed
zizhen@zizhen:/etc/docker$ kubectl get pods,svc
NAME                         READY   STATUS              RESTARTS   AGE
pod/nginx-85b98978db-plknz   0/1     ContainerCreating   0          42s

NAME                 TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
service/kubernetes   ClusterIP   10.1.0.1       <none>        443/TCP          6h3m
service/nginx        NodePort    10.1.242.221   <none>        8080:30586/TCP   14s
zizhen@zizhen:/etc/docker$






zizhen@zizhen:/etc/docker$ kubectl get nodes
NAME     STATUS   ROLES                  AGE     VERSION
zizhen   Ready    control-plane,master   6h25m   v1.23.5
zizhen@zizhen:/etc/docker$ kubectl get pod -o wide
NAME                     READY   STATUS    RESTARTS   AGE   IP           NODE     NOMINATED NODE   READINESS GATES
nginx-85b98978db-plknz   1/1     Running   0          24m   10.244.0.4   zizhen   <none>           <none>
zizhen@zizhen:/etc/docker$ ping 10.244.0.4

















zizhen@zizhen:/etc/docker$ kubectl describe node zizhen
Name:               zizhen
Roles:              control-plane,master
Labels:             beta.kubernetes.io/arch=amd64
                    beta.kubernetes.io/os=linux
                    kubernetes.io/arch=amd64
                    kubernetes.io/hostname=zizhen
                    kubernetes.io/os=linux
                    node-role.kubernetes.io/control-plane=
                    node-role.kubernetes.io/master=
                    node.kubernetes.io/exclude-from-external-load-balancers=
Annotations:        flannel.alpha.coreos.com/backend-data: {"VNI":1,"VtepMAC":"d2:84:ce:28:53:25"}
                    flannel.alpha.coreos.com/backend-type: vxlan
                    flannel.alpha.coreos.com/kube-subnet-manager: true
                    flannel.alpha.coreos.com/public-ip: 192.168.101.6
                    kubeadm.alpha.kubernetes.io/cri-socket: /var/run/dockershim.sock
                    node.alpha.kubernetes.io/ttl: 0
                    volumes.kubernetes.io/controller-managed-attach-detach: true
CreationTimestamp:  Sat, 26 Mar 2022 18:31:49 +0800
Taints:             <none>
Unschedulable:      false
Lease:
  HolderIdentity:  zizhen
  AcquireTime:     <unset>
  RenewTime:       Sun, 27 Mar 2022 00:30:00 +0800
Conditions:
  Type                 Status  LastHeartbeatTime                 LastTransitionTime                Reason                       Message
  ----                 ------  -----------------                 ------------------                ------                       -------
  NetworkUnavailable   False   Sun, 27 Mar 2022 00:15:15 +0800   Sun, 27 Mar 2022 00:15:15 +0800   FlannelIsUp                  Flannel is running on this node
  MemoryPressure       False   Sun, 27 Mar 2022 00:25:27 +0800   Sat, 26 Mar 2022 18:31:41 +0800   KubeletHasSufficientMemory   kubelet has sufficient memory available
  DiskPressure         False   Sun, 27 Mar 2022 00:25:27 +0800   Sat, 26 Mar 2022 18:31:41 +0800   KubeletHasNoDiskPressure     kubelet has no disk pressure
  PIDPressure          False   Sun, 27 Mar 2022 00:25:27 +0800   Sat, 26 Mar 2022 18:31:41 +0800   KubeletHasSufficientPID      kubelet has sufficient PID available
  Ready                True    Sun, 27 Mar 2022 00:25:27 +0800   Sun, 27 Mar 2022 00:15:13 +0800   KubeletReady                 kubelet is posting ready status. AppArmor enabled
Addresses:
  InternalIP:  192.168.101.6
  Hostname:    zizhen
Capacity:
  cpu:                4
  ephemeral-storage:  29398012Ki
  hugepages-1Gi:      0
  hugepages-2Mi:      0
  memory:             3458708Ki
  pods:               110
Allocatable:
  cpu:                4
  ephemeral-storage:  27093207815
  hugepages-1Gi:      0
  hugepages-2Mi:      0
  memory:             3356308Ki
  pods:               110
System Info:
  Machine ID:                 f900deb324fa444eab856148e8e3b8db
  System UUID:                d2779aff-35a0-e311-a381-201a06a7f44f
  Boot ID:                    94d80452-d0b4-4232-a473-3ce2a8ade34a
  Kernel Version:             5.13.0-37-generic
  OS Image:                   Ubuntu 20.04.4 LTS
  Operating System:           linux
  Architecture:               amd64
  Container Runtime Version:  docker://20.10.14
  Kubelet Version:            v1.23.5
  Kube-Proxy Version:         v1.23.5
PodCIDR:                      10.244.0.0/24
PodCIDRs:                     10.244.0.0/24
Non-terminated Pods:          (8 in total)
  Namespace                   Name                              CPU Requests  CPU Limits  Memory Requests  Memory Limits  Age
  ---------                   ----                              ------------  ----------  ---------------  -------------  ---
  kube-system                 coredns-6d8c4cb4d-l79xj           100m (2%)     0 (0%)      70Mi (2%)        170Mi (5%)     5h57m
  kube-system                 coredns-6d8c4cb4d-skf7d           100m (2%)     0 (0%)      70Mi (2%)        170Mi (5%)     5h57m
  kube-system                 etcd-zizhen                       100m (2%)     0 (0%)      100Mi (3%)       0 (0%)         5h58m
  kube-system                 kube-apiserver-zizhen             250m (6%)     0 (0%)      0 (0%)           0 (0%)         5h58m
  kube-system                 kube-controller-manager-zizhen    200m (5%)     0 (0%)      0 (0%)           0 (0%)         5h58m
  kube-system                 kube-flannel-ds-rt8dw             100m (2%)     100m (2%)   50Mi (1%)        50Mi (1%)      17m
  kube-system                 kube-proxy-k574r                  0 (0%)        0 (0%)      0 (0%)           0 (0%)         5h57m
  kube-system                 kube-scheduler-zizhen             100m (2%)     0 (0%)      0 (0%)           0 (0%)         5h58m
Allocated resources:
  (Total limits may be over 100 percent, i.e., overcommitted.)
  Resource           Requests    Limits
  --------           --------    ------
  cpu                950m (23%)  100m (2%)
  memory             290Mi (8%)  390Mi (11%)
  ephemeral-storage  0 (0%)      0 (0%)
  hugepages-1Gi      0 (0%)      0 (0%)
  hugepages-2Mi      0 (0%)      0 (0%)
Events:
  Type    Reason     Age   From     Message
  ----    ------     ----  ----     -------
  Normal  NodeReady  14m   kubelet  Node zizhen status is now: NodeReady
zizhen@zizhen:/etc/docker$





每个 Kubernetes Node(节点)至少运行:

Kubelet,负责 master 节点和 worker 节点之间通信的进程;管理 Pod(容器组)和 Pod(容器组)内运行的 Container(容器)。

容器运行环境(如Docker)负责下载镜像、创建和运行容器等。

实战:故障排除

kubectl get  - 显示资源列表

# kubectl get 资源类型

#获取类型为Deployment的资源列表

kubectl get deployments

#获取类型为Pod的资源列表

kubectl get pods

#获取类型为Node的资源列表

kubectl get nodes

[root@guanbin-k8s-master ~]# kubectl get nodes

NAME STATUS ROLES AGE VERSION

guanbin-k8s-master Ready master 47h v1.18.0guanbin-k8s-node Ready 47h v1.18.0

kubectl get - 名称空间

在命令后增加 -A 或 --all-namespaces 可查看所有 名称空间中 的对象,使用参数 -n 可查看指定名称空间的对象,例如

# 查看所有名称空间的 Deployment

kubectl get deployments-A

kubectl get deployments--all-namespaces

# 查看 kube-system 名称空间的 Deployment

kubectl get deployments-n kube-system

并非所有对象都在名称空间里

大部分的 Kubernetes 对象(例如,Pod、Service、Deployment、StatefulSet等)都必须在名称空间里。但是某些更低层级的对象,是不在任何名称空间中的,例如 nodes、persistentVolumes、storageClass 等

执行一下命令可查看哪些 Kubernetes 对象在名称空间里,哪些不在:

# 在名称空间里

kubectl api-resources --namespaced=true# 不在名称空间里

kubectl api-resources --namespaced=false

kubectl describe - 显示有关资源的详细信息

# kubectl describe 资源类型 资源名称

#查看名称为nginx-XXXXXX的Pod的信息

kubectl describe pod nginx-XXXXXX

#查看名称为nginx的Deployment的信息

kubectl describe deployment nginx

kubectl logs - 查看pod中的容器的打印日志

(和命令docker logs 类似)

# kubectl logs Pod名称

#查看名称为nginx-pod-XXXXXXX的Pod内的容器打印的日志

#本案例中的 nginx-pod 没有输出日志,所以您看到的结果是空的

kubectl logs-f nginx-pod-XXXXXXX

kubectl exec

- 在pod中的容器环境内执行命令(和命令docker exec 类似)

# kubectl exec Pod名称 操作命令

# 在名称为nginx-pod-xxxxxx的Pod中运行bash

kubectl exec-it nginx-pod-xxxxxx /bin/bash
————————————————
 






参考:[Ubuntu18.04 Server部署Flannel网络的Kubernetes - Milton - 博客园 (cnblogs.com)](https://www.cnblogs.com/milton/p/12127064.html)
https://blog.csdn.net/weixin_39637256/article/details/111783888