1. 添加yum 源
1 2 3 4 5 6 7 8 | # 保存为以下内容 [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ enabled=1 gpgcheck=0 repo_gpgcheck=0 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg |
搜索查看源是否正常
sudo yum search kube
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | Loaded plugins: langpacks ========================================================================================== N/S matched: kube =========================================================================================== cockpit-kubernetes.x86_64 : Cockpit user interface for Kubernetes cluster kubeadm.x86_64 : Command-line utility for administering a Kubernetes cluster. kubectl.x86_64 : Command-line utility for interacting with a Kubernetes cluster. kubernetes-ansible.noarch : Playbook and set of roles for seting up a Kubernetes cluster onto machines kubernetes-client.x86_64 : Kubernetes client tools kubernetes-cni.x86_64 : Binaries required to provision kubernetes container networking kubernetes-master.x86_64 : Kubernetes services for master host kubernetes-node.x86_64 : Kubernetes services for node host python2-kubernetes.noarch : Kubernetes Python Client python2-kubernetes-tests.noarch : Tests python-kubernetes library rsyslog-mmkubernetes.x86_64 : Provides the mmkubernetes module kompose.x86_64 : Tool to move from 'docker-compose' to Kubernetes kubelet.x86_64 : Container cluster management kubernetes.x86_64 : Container cluster management |
这里只需要安装 kubeadm 即可,kubeadm 会依赖安装 kubectl kubelet
2.安装 kubeadm
3. 初始化集群(网上查询需要关闭 swap ,我这里没有关闭也可以安装成功)
--image-repository : 镜像源,默认在墙外,国内更换为 阿里云 registry.aliyuncs.com/google_containers
--pod-network-cidr : 这个设置的值和相关的组件有关系 ,我这里用的是 flannel 网络组件,固定设置
参考链接:
https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/#pod-network
安装完成后可以用kubeadm reset 恢复,该操作会恢复部分操作
Note: 可能出现的问题:
failed to find subsystem mount for required subsystem: pids
当前系统不支持 pids 子系统
vi /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf
解决办法 在ExecStart后添加 --feature-gates SupportPodPidsLimit=false --feature-gates SupportNodePidsLimit=false
1 2 3 | ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS --feature-gates SupportPodPidsLimit=false --feature-gates SupportNodePidsLimit=false > systemctl daemon-reload # 重新加载 service unit > systemctl restart kubelet # 重启服务 |
4.安装网络组件
Note:
unable to recognize "kube-flannel.yml": Get http://localhost:8080/api?timeout=32s: dial tcp 127.0.0.1:8080: connect: connection refused
在没有配置config文件时,kube-apiserver默认使用的是localhost,解决方法如下:
1
2
3
4 # 普通用户
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config转载于 https://blog.csdn.net/nange_nice/article/details/82773801
5.安装成功后
1 2 | NAME READY STATUS RESTARTS AGE nginx-deployment-76bddcbb9b-fjd8q 0/1 Pending 0 27m |
并没有成功启动
events 提示如下:
1 2 3 4 | Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning FailedScheduling 17s (x20 over 28m) default-scheduler 0/1 nodes are available: 1 node(s) had taints that the pod didn't tolerate. |
提示没有节点可用
查看当前所有节点
1 2 | NAME STATUS ROLES AGE VERSION master-node Ready master 17h v1.16.3 |
当前只有一个节点 ,节点身份为 master
目前只部署了一个 master 节点,默认 master 节点不会接受 pod 的调度,因为 master 添加 taint
参考: https://www.kubernetes.org.cn/5906.html 第 3 部分 NODE
查看当前 master 节点信息
1 2 | #发现有 taints 标识 Taints: node-role.kubernetes.io/master:NoSchedule |
取消 taint
重新添加 taint(如果有需要)
查看 nginx 启动状态,正常
1 2 | NAME READY STATUS RESTARTS AGE nginx-deployment-76bddcbb9b-fjd8q 1/1 Running 0 43m |