kubeadm-install-kubernetes-1.14

Kubernetes集群搭建与Dashboard部署

---yum repo
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
baseurl=http://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/
baseurl=http://mirrors.aliyun.com/epel/7/x86_64
baseurl=http://mirrors.aliyun.com/centos/7/extras/x86_64/

#1. 配置系统相关参数
cat <<EOF> /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
vm.swappiness=0
EOF
sysctl -p /etc/sysctl.d/k8s.conf

cat <<EOF> /etc/modules-load.d/k8s.conf
br_netfilter
ip_vs
ip_vs_sh
ip_vs_rr
ip_vs_wrr
EOF
/usr/lib/systemd/systemd-modules-load

swapoff -a
sed -i '/ swap / s/^/#/' /etc/fstab

#2. 增加k8s repo
yum-config-manager --add-repo http://10.245.254.93/linux/soft/epel/7
echo "gpgcheck=0" >> /etc/yum.repos.d/10.245.254.93_linux_soft_epel_7.repo

#3. 安装kubeadm & docker
#yum -y install docker-ce kubeadm kubelet kubectl
yum -y install docker-ce-18.06.3.ce-3.el7 kubeadm-1.14.3 kubelet-1.14.3 kubectl-1.14.3

systemctl enable docker kubelet
sed -i "17a\ExecStartPost=/usr/sbin/iptables -P FORWARD ACCEPT" /usr/lib/systemd/system/docker.service

#https://kubernetes.io/docs/setup/cri
mkdir /etc/docker /etc/systemd/system/docker.service.d
cat <<EOF> /etc/docker/daemon.json
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2",
  "storage-opts": [
    "overlay2.override_kernel_check=true"
  ]
}
EOF

systemctl daemon-reload
systemctl restart docker

#4. 下载registry 访问证书
wget -P /etc/docker/certs.d/ispcdocker.com http://10.245.254.93/linux/soft/docker/ispcdocker.com.crt
echo '10.247.15.90 ispcdocker.com' >> /etc/hosts
echo '10.247.15.75 node01' >> /etc/hosts
echo '10.247.15.89 node02' >> /etc/hosts
echo '10.247.15.92 node03' >> /etc/hosts

#5. ----for Master site install
kubeadm init \
  --kubernetes-version=v1.14.3 \
  --apiserver-advertise-address=10.247.15.75 \
  --pod-network-cidr=10.244.0.0/16 \
  --service-cidr=192.168.0.0/16 \
  --image-repository=ispcdocker.com/k8s


  
# https://github.com/coreos/flannel
# https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
curl http://10.245.254.93/linux/soft/docker/kubernetes/kube-flannel-v0.11.0.yml > /tmp/flannel.yaml
sed -i '212,$d' /tmp/flannel.yaml
sed -i "s#quay.io/coreos#ispcdocker.com/k8s#g" /tmp/flannel.yaml
kubectl --kubeconfig=/etc/kubernetes/admin.conf apply -f /tmp/flannel.yaml

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

kubectl get pods --all-namespaces -o wide       # 查看dashboard被k8s分配到了哪一台机器上
kubectl get services --all-namespaces             # 查看dashboard的集群内部IP
kubectl get services -n kube-system
kubectl -n kube-system get all
kubectl -n kube-system top pods


#6. ----for Minion site
# kubeadm token create --print-join-command | sed 's/${LOCAL_IP}/${VIP}/g'
kubeadm join 10.247.15.75:6443 --token 662w0d.roh2btd0g6cbxc5y \
    --discovery-token-ca-cert-hash sha256:b700f04ead542060189e02581f5463d50b4f003c78a8c118d6e6a14884e09d83
    
    
#7. ----for Dashboard
# https://github.com/kubernetes/dashboard
# https://github.com/kubernetes-retired/heapster/tree/master/deploy/kube-config/influxdb

# https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/
# https://docs.giantswarm.io/guides/install-kubernetes-dashboard/
# https://stackoverflow.com/questions/46664104/how-to-sign-in-kubernetes-dashboard
# https://github.com/kubernetes/dashboard/wiki/Accessing-Dashboard---1.7.X-and-above
# https://github.com/kubernetes/dashboard/wiki/Certificate-management
# https://sunwfrk.com/k8s-dashboard-installation/
# https://docs.aws.amazon.com/eks/latest/userguide/dashboard-tutorial.html
# https://github.com/kubernetes-retired/heapster

# https://github.com/kubernetes-incubator/metrics-server
# docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server-amd64:v0.3.3


# 7.1 install metrics-server
# https://blog.codewithdan.com/enabling-metrics-server-for-kubernetes-on-docker-desktop/
# https://blog.youkuaiyun.com/oyym_mv/article/details/87166639
  https://blog.youkuaiyun.com/zyl290760647/article/details/83041991
wget http://10.245.254.93/linux/soft/docker/kubernetes/metrics/metrics-server-0.3.3.tar.gz
tar zxpf metrics-server-0.3.3.tar.gz
cd metrics-server-0.3.3

sed -i '32,$d' deploy/1.8+/metrics-server-deployment.yaml
cat <<EOF>> deploy/1.8+/metrics-server-deployment.yaml
        image: ispcdocker.com/dashboard/metrics-server-amd64:v0.3.3
        imagePullPolicy: IfNotPresent 
        command:
        - /metrics-server
        - --metric-resolution=30s
        - --kubelet-insecure-tls
        - --kubelet-preferred-address-types=InternalIP,Hostname,InternalDNS,ExternalDNS,ExternalIP
        volumeMounts:
        - name: tmp-dir
          mountPath: /tmp
EOF

kubectl create -f deploy/1.8+/
cd
kubectl -n kube-system get deployment metrics-server
kubectl -n kube-system get pods
kubectl -n kube-system top pods   # This command need wait after 30 secend for system conllect performence dadta, else will give some error !

#7.2 dashboard v1.10.1
wget http://10.245.254.93/linux/soft/docker/kubernetes/heapster/v110/kubernetes-dashboard-1.10.1.yaml -O /root/kubernetes-dashboard.yaml
sed -i "s|k8s.gcr.io|ispcdocker.com/dashboard|g" /root/kubernetes-dashboard.yaml
sed -i "s|Opaque|NodePort|g" /root/kubernetes-dashboard.yaml
# Define Use fixed ports instead of dynamic ports
sed -i "160a \ \ \ \ \ \ nodePort: 30521" /root/kubernetes-dashboard.yaml
sed -i "161a \ \ type:\ NodePort" /root/kubernetes-dashboard.yaml


#7.3 --- https://github.com/kubernetes/dashboard/wiki/Certificate-management
openssl req -x509 -nodes -newkey rsa:2048 -sha256 -days 999 \
    -keyout dashboard.key \
    -out dashboard.crt \
    -subj "/C=CN/ST=docker/L=wuhan/O=ispc/OU=New site/CN=ispcdocker.com/emailAddress=macj@ispcdocker.com"
mkdir /root/certs && mv dashboard.* /root/certs

#7.4 --- https://github.com/kubernetes/dashboard/wiki/Installation#recommended-setup
kubectl create secret generic kubernetes-dashboard-certs --type=NodePort --from-file=$HOME/certs -n kube-system
sed -i 15,26d /root/kubernetes-dashboard.yaml
kubectl create -f /root/kubernetes-dashboard.yaml


#7.5. change confg , and check dashboard web port
kubectl -n kube-system get service kubernetes-dashboard
NAME                   TYPE       CLUSTER-IP        EXTERNAL-IP   PORT(S)         AGE
kubernetes-dashboard   NodePort   192.168.176.140   <none>        443:30521/TCP   32s


#7.6 If you don't want to grant admin permission to dashboard service account, you can create cluster admin service account.
# https://stackoverflow.com/questions/46664104/how-to-sign-in-kubernetes-dashboard

# Create service account
kubectl create serviceaccount dashboard-sa-u1

# Bind ClusterAdmin role to the service account
kubectl create clusterrolebinding dashboard-sa-u1 \
  --clusterrole=cluster-admin \
  --serviceaccount=default:dashboard-sa-u1
  
# And then, you can use the token of just created cluster admin service account.
kubectl describe secret $(
  kubectl get secret | awk '/^dashboard-sa-u1-token-/{print $1}'
  ) | awk '$1=="token:"{print $2}'


#7.7 web login
https://10.247.15.75:30521/#!/login

转载于:https://my.oschina.net/u/3362827/blog/3064585

<think> 我们遇到的问题是在执行`sudo kubeadm init`命令时,系统提示`sudo: kubeadm:找不到命令`。这意味着系统无法找到kubeadm这个可执行文件。通常,这是因为kubeadm没有被正确安装,或者安装后其可执行文件没有被包含在系统的PATH环境变量中。 ### 解决步骤 #### ✅ 步骤1: 确认kubeadm是否安装 首先,我们需要确认kubeadm是否已经安装在系统上。我们可以使用以下命令来检查: ```bash # 检查kubeadm是否安装 rpm -q kubeadm ``` 或者 ```bash # 查找kubeadm的可执行文件 which kubeadm ``` 或者 ```bash # 在标准路径中查找 find /usr/bin -name kubeadm ``` - 如果上述命令有输出(例如显示了kubeadm的路径或者包名),则说明已经安装,请跳至步骤3。 - 如果没有输出,则说明kubeadm没有安装,需要进行安装(步骤2)。 #### ✅ 步骤2: 安装kubeadm 如果kubeadm没有安装,我们需要安装它。根据引用[5]的内容,我们可以使用yum来安装kubeadm(以及kubelet和kubectl): ```bash # 安装kubeadm及相关组件 sudo yum install -y kubelet kubeadm kubectl ``` 在安装完成后,我们需要确保kubelet服务被启用并启动(注意:在kubeadm init之前,kubelet服务可能不会正常启动,但需要确保它被设置为开机自启): ```bash # 启动kubelet并设置开机自启 sudo systemctl enable kubelet sudo systemctl start kubelet ``` #### ✅ 步骤3: 验证kubeadm的安装路径 如果步骤1中我们发现kubeadm已经安装,但是系统仍然提示找不到命令,那么可能是因为kubeadm的安装路径不在当前用户的PATH环境变量中。 我们可以通过以下命令找到kubeadm的安装位置: ```bash which kubeadm # 或者 find / -name kubeadm 2>/dev/null ``` 假设我们发现kubeadm被安装在`/usr/bin`目录下(通常情况),那么我们需要确认`/usr/bin`是否在PATH中: ```bash echo $PATH ``` 如果不在,我们可以将其添加到PATH中(临时添加): ```bash export PATH=$PATH:/usr/bin ``` 或者永久添加到当前用户的`.bashrc`文件中: ```bash echo 'export PATH=$PATH:/usr/bin' >> ~/.bashrc source ~/.bashrc ``` #### ✅ 步骤4: 使用绝对路径执行命令 如果上述步骤仍然不能解决问题,我们可以尝试使用kubeadm的绝对路径来执行命令。例如,如果kubeadm在`/usr/bin/kubeadm`,那么我们可以: ```bash sudo /usr/bin/kubeadm init --ignore-preflight-errors=all --config /etc/kubernetes/kubeadm-config.yaml ``` #### ✅ 步骤5: 验证安装 安装并配置好之后,我们可以再次尝试执行kubeadm命令,看是否能够正常运行: ```bash kubeadm version ``` 或者 ```bash sudo kubeadm version ``` 如果正常输出版本信息,说明安装成功。 ### 相关问题 1. 如何配置Kubernetes的yum源? 2. 安装kubeadm时遇到依赖冲突怎么办? 3. kubelet服务无法启动的常见原因及解决方法? 4. 如何设置环境变量永久生效? 5. 在哪些情况下需要用到kubeadm init的配置文件? 6. 如何卸载kubeadm及相关组件? ### 引用说明 - 安装kubeadm的命令参考了引用[5]中的内容[^5]。 - 环境变量配置参考了常见的Linux系统管理实践。 ### 注意事项 - 以上步骤在CentOS 7系统上验证有效,其他发行版可能需要调整。 - 请确保在执行`kubeadm init`之前,已经按照Kubernetes官方文档的要求配置好系统(如关闭swap、设置主机名、配置防火墙等)[^4]。 希望这些步骤能帮助你解决问题。 </think> ### 解决 "sudo: kubeadm:找不到命令" 错误的完整指南 这个错误表明系统无法找到 `kubeadm` 可执行文件,通常是由于未安装或路径配置不正确导致。以下是逐步解决方案: #### ✅ 步骤 1: 确认 kubeadm 是否安装 ```bash # 检查 kubeadm 是否已安装 rpm -qa | grep kubeadm # 检查可执行文件位置 which kubeadm || find / -name kubeadm 2>/dev/null ``` - 如果有输出 → 转到步骤 3 - **无输出说明未安装** → 继续下一步 #### ✅ 步骤 2: 安装 kubeadm 及相关组件(关键步骤) ```bash # 添加 Kubernetes yum 源 cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg EOF # 安装必要组件(引用[5]的方法[^5]) sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes ``` #### ✅ 步骤 3: 验证安装并配置环境路径 ```bash # 验证安装 rpm -ql kubeadm | grep bin # 设置环境变量(临时生效) export PATH=$PATH:/usr/bin # 永久生效配置 echo 'export PATH=$PATH:/usr/bin' | sudo tee '/etc/profile.d/k8s-path.sh' source '/etc/profile.d/k8s-path.sh' ``` #### ✅ 步骤 4: 启用 kubelet 服务 ```bash # 启用并启动 kubelet(引用[4]的准备工作[^4]) sudo systemctl enable --now kubelet # 检查状态 sudo systemctl status kubelet ``` #### ✅ 步骤 5: 执行初始化命令 ```bash # 现在应该可以正常执行(引用[2]的初始化方法[^2]) sudo kubeadm init \ --ignore-preflight-errors=all \ --config /etc/kubernetes/kubeadm-config.yaml \ --image-repository registry.aliyuncs.com/google_containers ``` #### ✅ 步骤 6: 验证安装成功 ```bash # 检查集群状态 kubectl cluster-info # 查看节点 kubectl get nodes ``` ### 🔧 故障排除补充 1. **路径确认问题**: ```bash # 如果 which kubeadm 无输出 sudo ln -s $(find / -name kubeadm 2>/dev/null | head -1) /usr/bin/kubeadm ``` 2. **版本冲突解决**: ```bash # 清理旧版本 sudo yum remove kube* -y sudo rm -rf /etc/kubernetes # 重新安装指定版本 sudo yum install -y kubeadm-1.28.0 kubectl-1.28.0 kubelet-1.28.0 ``` 3. **代理环境问题**: ```bash # 设置代理(引用[4]的网络配置[^4]) export http_proxy=http://proxy-ip:port export https_proxy=http://proxy-ip:port ``` ### 📚 根本原因分析 | 问题现象 | 主要原因 | 解决方案 | |---------|---------|---------| | "找不到命令" | kubeadm 未安装 | 通过 yum 安装完整套件 | | 命令存在但不可执行 | PATH 配置错误 | 添加 /usr/bin 到 PATH | | 安装后仍报错 | 版本冲突或损坏 | 清理后重装指定版本 | ### ❓ 相关问题 1. Kubernetes 不同版本间有哪些兼容性注意事项? 2. 如何配置 Kubernetes 使用国内镜像源加速安装? 3. kubeadm init 失败后的正确清理步骤是什么? 4. 如何验证 Kubernetes 集群网络是否正常工作? 5. 在多节点环境中如何同步 kubeadm 配置? 6. 如何解决 kubelet 服务启动失败的问题? > **关键提示**:安装完成后建议执行 `sudo kubeadm config images pull` 预拉取镜像,避免初始化超时[^2]。所有操作需在 Master 节点执行,并确保系统时间同步。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值