ubuntu安装kubernetes1.17.3 ---每天学习一点点

本文详细介绍Kubernetes集群的搭建过程,包括环境准备、镜像源配置、节点安装与配置、网络插件安装及集群初始化步骤。同时,提供了错误处理与网络重置的方法。

镜像源站点:
https://mirror.tuna.tsinghua.edu.cn/help
阿里云下载源:
https://mirrors.aliyun.com/kubernetes/apt/
服务器环境准备:
注:1、关闭swap分区:swapoff -a(临时)  修改/etc/fstab,注释swap挂载 那一行(永久)
    2、禁用ipv6
    3、加载ipvs相关模块
    
配置源 /etc/apt/sources.list
deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable
deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu bionic stable


如果你过去安装过 docker,先删掉:
sudo apt-get remove docker docker-engine docker.io

# 信任 Docker 的 GPG 公钥(执行完后显示ok即可):
# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# 安装docker:
# apt-cache madison docker-ce
# apt-get update && apt-get install -y docker-ce=$(apt-cache madison docker-ce | grep 19.03.6 | head -1 | awk '{print $3}')


对于 amd64 架构的计算机,添加软件仓库:
echo "deb [arch=armhf] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu \
     $(lsb_release -cs) stable" | \
    sudo tee /etc/apt/sources.list.d/docker.list
    
使用ustc的镜像源

需要获取公钥
https://mirror.tuna.tsinghua.edu.cn/help/docker-ce/

apt-get install -y apt-transport-https ca-certificates curl software-properties-common

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
add-apt-repository \
"deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/$(. /etc/os-release; echo "$ID") \
$(lsb_release -cs) \
stable"

master节点安装kubelet,kubeadm,kubectl
1.添加gpg公钥(国内):
wget https://raw.githubusercontent.com/EagleChen/kubernetes_init/master/kube_apt_key.gpg
cat kube_apt_key.gpg | sudo apt-key add -
显示OK即可

2.添加镜像源
echo "deb [arch=amd64] https://mirrors.ustc.edu.cn/kubernetes/apt kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list
apt-get update

3.安装kubectl  kubelet kubeadm
apt-get install kubelet kubeadm kubectl
kubelet此时状态还未ok因为没有提供config file "/var/lib/kubelet/config.yaml",先忽略,后续安装初始化k8s时会自动生成

4.加载内核模块,kubernetes内部路由转发使用ipvs,内核默认未加载,需要手动加载
cat > /etc/sysconfig/modules/ipvs.modules
#!/bin/bash
modprobe -- br_netfilter
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
chmod 755 /etc/sysconfig/modules/ipvs.modules && \
bash /etc/sysconfig/modules/ipvs.modules && \
验证如下显示正常:
lsmod | grep -E "ip_vs|nf_conntrack_ipv4"
ip_vs_sh               16384  0
ip_vs_wrr              16384  0
ip_vs_rr               16384  0
ip_vs                 151552  6 ip_vs_rr,ip_vs_sh,ip_vs_wrr
nf_defrag_ipv6         20480  1 ip_vs
nf_conntrack_ipv4      16384  3
nf_defrag_ipv4         16384  1 nf_conntrack_ipv4
nf_conntrack          131072  12 xt_conntrack,nf_nat_masquerade_ipv4,nf_conntrack_ipv4,nf_nat,nf_conntrack_pptp,ipt_MASQUERADE,nf_nat_ipv4,xt_nat,nf_nat_pptp,nf_conntrack_netlink,nf_conntrack_proto_gre,ip_vs
libcrc32c              16384  5 nf_conntrack,nf_nat,raid456,ip_vs,sctp

5.确保系统配置允许路由转发
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-arptables = 1
net.bridge.bridge-nf-call-iptables = 1

#禁用ipv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
EOF

或修改grub禁用ipv6
/etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash ipv6.disable=1"
GRUB_CMDLINE_LINUX="ipv6.disable=1"
update-grub

6.生成kubeadm配置文件kubeadm-config.yaml
kubeadm config print init-defaults  > kubeadm-config.yaml
修改几处配置:
advertiseAddress: 192.168.1.219   --->改为本机ip,多网卡,随机选择一个,注:此ip一旦绑定,不能修改,否则k8s集群将会异常
imageRepository: registry.aliyuncs.com/google_containers   --->修改能拉取镜像的站点仓库
serviceSubnet: 10.96.0.0/12  --->可使用默认的,也可自定义

7.初始化主节点
 kubeadm init --config kubeadm-config.yaml

若报错:The connection to the server localhost:8080 was refused - did you specify the right host or port?
需要如下操作
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

8.此时集群还未真正ready,需要安装网络插件
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
选择适合本地操作系统的ds


9.添加新的节点
master上执行:
kubeadm token create --print-join-command    --->执行结果作为node节点加入集群的命令
kubeadm init phase upload-certs --experimental-upload-certs   --->执行结果作为新master加入集群中的证书

新的node节点上执行:
kubeadm join 192.168.1.219:6443 --token dxe4nm.wwa70dvhh7zdr6as\
     --discovery-token-ca-cert-hash sha256:82f4a72b4959f67b67b34276650ab7b53fda753c5d52ad4843c2c85313667719

新的master节点执行:
kubeadm join 192.168.1.219:6443 --token dxe4nm.wwa70dvhh7zdr6as\
     --discovery-token-ca-cert-hash sha256:82f4a72b4959f67b67b34276650ab7b53fda753c5d52ad4843c2c85313667719\
     --experimental-control-plane --certificate-key $(kubeadm init phase upload-certs --experimental-upload-certs)
     
亦可尝试使用另一种方法(不建议):
新node节点上执行:
kubeadm config print join-defaults > kubeadm-config.yaml
修改生成的配置文件
kubeadm join --config kubeadm-config.yaml

10.重置kubernetes服务,重置网络。删除网络配置,link(慎用!!!)

kubeadm reset
systemctl stop kubelet
systemctl stop docker
rm -rf /var/lib/cni/
rm -rf /var/lib/kubelet/*
rm -rf /etc/cni/
ifconfig cni0 down
ifconfig flannel.1 down
ifconfig docker0 down
ip link delete cni0
ip link delete flannel.1
systemctl start docker

笔记:
允许普通用户使用kubectl查看集群状况--->将 /etc/kubernetes/admin.conf 拷贝到 普通用户的家目录下 ~/.kube/config文件
 
dashboard:

生成kubeconfig文件

DASH_TOCKEN=$(kubectl get secret -n kube-system dashboard-admin-token-xxxx -o jsonpath={.data.token}|base64 -d)

kubectl config set-cluster kubernetes --server=xxx.xxx.xxx.xxx:6443 --kubeconfig=/root/dashbord-admin.conf

kubectl config set-credentials dashboard-admin --token=$DASH_TOCKEN --kubeconfig=/root/dashbord-admin.conf

kubectl config set-context dashboard-admin@kubernetes --cluster=kubernetes --user=dashboard-admin --kubeconfig=/root/dashbord-admin.conf

kubectl config user-context dashboard-admin@kubernets --kubeconfig=/root/dashbord-admin.conf

生成的dashbord-admin.conf即可用于登录dashboard
 


 

<think>好的,我需要帮助用户在Kubernetes1.17.3安装openEBS。首先,我得回顾一下用户提供的引用内容,虽然这些引用可能不完全相关,但可以提取有用的信息。用户提到确保集群正常运行,安装iSCSI客户端,以及使用kubectl或helm安装。但用户之前遇到了问题,这两种方法都不起作用,所以需要详细步骤。首先,确认Kubernetes集群版本1.17.3是否兼容openEBS。可能需要查阅openEBS的官方文档,查看支持的Kubernetes版本。假设兼容,接下来是节点准备,包括安装iSCSI工具,如引用[2]提到的。需要指导用户安装iscsi-initiator-utils并启用服务。然后,安装方法。用户之前尝试过helm和kubectl apply,但失败了。可能需要提供替代方案,比如直接下载yaml文件。引用[3]提到用户访问了某个链接,但具体步骤不明确。建议用户使用稳定的版本,例如指定openEBS的版本,如2.6.0,并下载对应的yaml文件进行安装安装后的验证步骤也很重要,比如检查pod状态和创建StorageClass。用户可能需要验证安装是否成功,以及如何测试PV的创建。此外,注意事项部分需要提醒版本兼容性和节点磁盘空间,如引用[1]提到的。 最后,生成相关问题,帮助用户深入理解,比如持久化存储选择、版本升级、数据迁移等。确保所有步骤清晰,避免使用可能出错的helm方法,转而使用更直接的kubectlapply。同时,注意LaTeX格式的正确使用,但问题中可能不需要数学公式,所以主要检查命令和代码块的格式是否正确。</think>### Kubernetes 1.17.3 安装 OpenEBS 详细步骤 #### 1. **环境准备** - **确认集群状态** 确保 Kubernetes 1.17.3 集群正常运行,所有节点处于 `Ready` 状态。使用以下命令检查: ```bash kubectl get nodes ``` - **安装 iSCSI 客户端** OpenEBS 依赖 iSCSI 协议,需在所有工作节点安装并启动 `iscsid` 服务[^2]: ```bash yum -y install iscsi-initiator-utils # CentOS/RHEL systemctl enable --now iscsid ``` #### 2. **安装 OpenEBS** - **选择安装方式** 针对 Kubernetes 1.17.3,推荐使用 `kubectl` 直接部署(避免 Helm 依赖问题)[^3]: ```bash # 下载 OpenEBS 2.6.0 安装文件(兼容旧版本 Kubernetes) kubectl apply -f https://openebs.github.io/charts/openebs-operator-2.6.0.yaml ``` - **验证安装** 检查 OpenEBS 相关 Pod 是否运行正常: ```bash kubectl get pods -n openebs ``` 预期输出应包含 `maya-apiserver`、`openebs-provisioner` 等组件且状态为 `Running`。 #### 3. **配置 StorageClass** - **创建默认 StorageClass** OpenEBS 提供多种存储引擎(如 `cstor`、`jiva`)。以下以 `openebs-hostpath` 为例: ```yaml apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: openebs-hostpath annotations: openebs.io/cas-type: hostpath provisioner: openebs.io/local volumeBindingMode: WaitForFirstConsumer ``` 保存为 `openebs-sc.yaml` 并应用: ```bash kubectl apply -f openebs-sc.yaml ``` #### 4. **测试存储功能** - **创建 PVC 示例** ```yaml apiVersion: v1 kind: PersistentVolumeClaim metadata: name: test-pvc spec: storageClassName: openebs-hostpath accessModes: - ReadWriteOnce resources: requests: storage: 5Gi ``` 应用后检查 PVC 是否绑定: ```bash kubectl get pvc ``` #### 5. **注意事项** - **版本兼容性** Kubernetes 1.17.3 属于较旧版本,建议使用 OpenEBS 2.6.x 或更早稳定版[^1]。 - **磁盘空间** 确保工作节点有足够磁盘空间存储卷数据(默认使用 `/var/openebs` 路径)。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值