kubernetes1.8.1安装指南,离线安装,内网安装

简介: 使用kubeadm部署k8s集群 三步装集群:[离线包地址](https://market.aliyun.com/products/56014009/cmxz022571.html#sku=yuncode1657100000) 基础环境 关闭swap swapoff -a 再把/etc/fst.

使用kubeadm部署k8s集群

三步装 集群:[离线包地址](https://market.aliyun.com/products/56014009/cmxz022571.html#sku=yuncode1657100000)

基础环境

关闭swap

swapoff -a

再把/etc/fstab文件中带有swap的行删了,没有就无视

装这两工具如果没装的话

yum install -y ebtables socat

IPv4 iptables 链设置 CNI插件需要

sysctl net.bridge.bridge-nf-call-iptables=1

墙外安装

在国内是很难使用这种方式安装了,推荐查看离线安装的方案

装docker

yum install -y docker
 systemctl enable docker && systemctl start docker

装kubeadm kubectl kubelet

 cat <<EOF > /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
 setenforce 0
 yum install -y kubelet kubeadm kubectl
 systemctl enable kubelet && systemctl start kubelet

关闭SElinux

setenforce 0

cat <<EOF > /etc/sysctl.d/k8s.conf
 net.bridge.bridge-nf-call-ip6tables = 1
 net.bridge.bridge-nf-call-iptables = 1
 EOF
 sysctl --system

然后与离线安装启动master无异, kubeadm init

离线安装

福利,我已经把所有依赖的镜像,二进制文件,配置文件都打成了包,解决您所有依赖,花了很多时间整理这个,放在了阿里云市场上,希望大家给点小支持
[离线包地址赏我一杯咖啡](https://market.aliyun.com/products/56014009/cmxz022571.html#sku=yuncode1657100000)

这包里面把大部分操作都写在简单的脚本里面了,在master节点执行 init-master.sh 在node节点执行init-node.sh 安装dashboard执行init-dashboard.sh。

然后就可以在node节点执行master输出出来的join命令了。包的最大价值在于没有任何依赖了,再也不用访问不了国外某网而头疼了。

安装kubelet服务,和kubeadm

下载bin文件 [地址](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.8.md#v181)

把下载好的kubelet kubectl kubeadm 直接拷贝到/usr/bin下面

配置kubelet systemd服务

 cat <<EOF > /etc/systemd/system/kubelet.service
 [Unit] Description=kubelet: The Kubernetes Node Agent Documentation=http://kubernetes.io/docs/ [Service] ExecStart=/usr/bin/kubelet
 Restart=always
 StartLimitInterval=0 RestartSec=10 [Install] WantedBy=multi-user.target
 EOF



 cat <<EOF > /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
 [Service] Environment="KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf" Environment="KUBELET_SYSTEM_PODS_ARGS=--pod-manifest-path=/etc/kubernetes/manifests --allow-privileged=true" Environment="KUBELET_NETWORK_ARGS=--network-plugin=cni --cni-conf-dir=/etc/cni/net.d --cni-bin-dir=/opt/cni/bin" Environment="KUBELET_DNS_ARGS=--cluster-dns=10.96.0.10 --cluster-domain=cluster.local" Environment="KUBELET_AUTHZ_ARGS=--authorization-mode=Webhook --client-ca-file=/etc/kubernetes/pki/ca.crt" Environment="KUBELET_CADVISOR_ARGS=--cadvisor-port=0" Environment="KUBELET_CGROUP_ARGS=--cgroup-driver=cgroupfs" Environment="KUBELET_CERTIFICATE_ARGS=--rotate-certificates=true --cert-dir=/var/lib/kubelet/pki" ExecStart= ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_SYSTEM_PODS_ARGS $KUBELET_NETWORK_ARGS $KUBELET_DNS_ARGS $KUBELET_AUTHZ_ARGS $KUBELET_CADVISOR_ARGS $KUBELET_CGROUP_ARGS $KUBELET_CERTIFICATE_ARGS $KUBELET_EXTRA_ARGS
 EOF

 这里需要主意的是要看一下dockercgroup driver --cgroup-driver要一致。 可以用 docker info |grep Cgroup 查看,有可能是systemd 或者 cgroupfs

增加主机名解析

为了防止无法解析主机名,修改/etc/hosts把主机名与ip的映射写上

启动master节点

这里得把google的一票镜像想办法弄下来,然而我已经打成了一个[tar包](https://market.aliyun.com/products/56014009/cmxz022571.html#sku=yuncode1657100000)

kubeadm init --pod-network-cidr=192.168.0.0/16 --kubernetes-version v1.8.0 --skip-preflight-checks
  • –pod-network-cidr 参数安装calico网络时需要
  • –kubernetes-version 不加的话会去请求公网查询版本信息
  • –skip-preflight-checks 解决一个kubelet目录不空的小bug

看到这些输出时你便成功了:

To start using your cluster, you need to run (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

You should now deploy a pod network to the cluster. Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
 http://kubernetes.io/docs/admin/addons/ You can now join any number of machines by running the following on each node
 as root:

kubeadm join --token <token> <master-ip>:<master-port> --discovery-token-ca-cert-hash sha256:<hash>

照着执行:

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

安装calico网络

kubectl apply -f https://docs.projectcalico.org/v2.6/getting-started/kubernetes/installation/hosted/kubeadm/1.6/calico.yaml

join node节点

同样到node节点安装kubelet和kubeadm,和master节点操作一样,不再赘述。
然后执行master节点init输出的那个命令:

kubeadm join --token <token> <master-ip>:<master-port> --discovery-token-ca-cert-hash sha256:<hash>

执行完成后在master节点用kubectl验证节点是否健康

[root@dev-86-202 ~]# kubectl get nodes
 NAME STATUS ROLES AGE VERSION
 dev-86-202 NotReady master 17h v1.8.1

注意,master节点默认是不作为node的,也不推荐做node节点。 如果需要把master当node:

[root@dev-86-202 ~]# kubectl taint nodes --all node-role.kubernetes.io/master-

安装dashboard

安装dashboard不难,使用时还真有点绕,主要是RBAC, 先介绍个简单的

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/alternative/kubernetes-dashboard.yaml

安装完之后, 使用nodeport方式访问

kubectl -n kube-system edit service kubernetes-dashboard

把type: ClusterIP 改成 type: NodePort 然后保存

$ kubectl -n kube-system get service kubernetes-dashboard
 NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
 kubernetes-dashboard 10.100.124.90 <nodes> 443:31707/TCP 21h

https://masterip:31707 就可以访问dashboard了, 然而 。。 还不能用。

创建一个 dashboard-admin.yaml

apiVersion: rbac.authorization.k8s.io/v1beta1
 kind: ClusterRoleBinding
 metadata:
 name: kubernetes-dashboard
 labels:
 k8s-app: kubernetes-dashboard
 roleRef:
 apiGroup: rbac.authorization.k8s.io
 kind: ClusterRole
 name: cluster-admin
 subjects: - kind: ServiceAccount
 name: kubernetes-dashboard
 namespace: kube-system


kubectl create -f dashboard-admin.yaml

然后在界面上直接点skip就可以了,不过你懂的,这很不安全。 真正安全的做法 请关注我进一步讨论:https://github.com/fanux

常见问题

kubelet服务启动不了

cgroup driver配置要相同

查看docker cgroup driver:

docker info|grep Cgroup

有systemd和cgroupfs两种,把kubelet service配置改成与docker一致

vim /etc/systemd/system/kubelet.service.d/10-kubeadm.conf

KUBELET_CGROUP_ARGS=–cgroup-driver=cgroupfs #这个配置与docker改成一致

节点not ready ?

建议安装calico网络,如果要把主节点当成node节点需要加个命令:

[root@dev-86-202 ~]# kubectl taint nodes --all node-role.kubernetes.io/master-

dashboard 访问不了?

如果是NodePort方式访问,那需要知道dashboard服务具体调度到哪个节点上去了。访问那个节点的ip而不是master的ip。
不行的话把https 改成http试试。

查看具体在哪个节点

kubectl get pod -n kube-system -o wide

拉取镜像失败?

可以把node节点与master节点的镜像都在每个节点load一下。

dashboard crash, dns起不来?

可以把node节点与master节点的镜像都在每个节点load一下。

192.168网段与calico网段冲突?

如果你恰好也是192.168网段,那么建议修改一下calico的网段

这样init

kubeadm init --pod-network-cidr=192.168.122.0/24 --kubernetes-version v1.8.1

修改calico.yaml

- name: FELIX_DEFAULTENDPOINTTOHOSTACTION
 value: "ACCEPT" # Configure the IP Pool from which Pod IPs will be chosen. - name: CALICO_IPV4POOL_CIDR
 value: "192.168.122.0/24" - name: CALICO_IPV4POOL_IPIP
 value: "always" # Disable IPv6 on Kubernetes. - name: FELIX_IPV6SUPPORT
 value: "false"

本文转自kubernetes中文社区-kubernetes1.8.1安装指南,离线安装,内网安装

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务&nbsp;ACK 容器服务&nbsp;Kubernetes&nbsp;版(简称&nbsp;ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情:&nbsp;https://www.aliyun.com/product/kubernetes
相关文章
|
2月前
|
Kubernetes 数据安全/隐私保护 Docker
|
10天前
|
Kubernetes Linux 网络安全
kubeadm安装k8s
该文档提供了一套在CentOS 7.6上安装Docker和Kubernetes(kubeadm)的详细步骤,包括安装系统必备软件、关闭防火墙和SELinux、禁用swap、开启IP转发、设置内核参数、配置Docker源和加速器、安装指定版本Docker、启动Docker、设置kubelet开机启动、安装kubelet、kubeadm、kubectl、下载和配置Kubernetes镜像、初始化kubeadm、创建kubeconfig文件、获取节点加入集群命令、下载Calico YAML文件以及安装Calico。这些步骤不仅适用于v1.19.14,也适用于更高版本。
58 1
|
28天前
|
Kubernetes 测试技术 API
ChaosBlade常见问题之安装K8S探针心跳检测失败如何解决
ChaosBlade 是一个开源的混沌工程实验工具,旨在通过模拟各种常见的硬件、软件、网络、应用等故障,帮助开发者在测试环境中验证系统的容错和自动恢复能力。以下是关于ChaosBlade的一些常见问题合集:
19 0
|
1月前
|
Kubernetes 应用服务中间件 nginx
Kubernetes服务网络Ingress网络模型分析、安装和高级用法
Kubernetes服务网络Ingress网络模型分析、安装和高级用法
36 5
|
1月前
|
存储 Kubernetes 监控
KubeSphere平台安装系列之一【Kubernetes上安装KubeSphere(亲测--实操完整版)】(1/3)
KubeSphere平台安装系列之一【Kubernetes上安装KubeSphere(亲测--实操完整版)】(1/3)
39 0
|
1月前
|
存储 Kubernetes 监控
K8S集群上安装KubeSphere的详细过程
K8S集群上安装KubeSphere的详细过程
27 0
|
1月前
|
Kubernetes Linux Docker
深度解析:Kubernetes 1.28.2集群安装过程中的关键步骤
本文旨在为读者提供一份详尽的Kubernetes 1.28.2集群安装指南,帮助您从零开始构建稳定、高效的Kubernetes集群。我们将从环境准备、软件安装、集群初始化到节点添加等各个环节进行逐步讲解,确保您能够顺利完成集群的搭建。
|
1月前
|
运维 Kubernetes API
kubernetes 安装 kubernetes-dashboard 7.x
kubernetes 安装 kubernetes-dashboard 7.x
36 0
|
3月前
|
Prometheus Kubernetes Cloud Native
kubernetes安装Prometheus
##### 安装 在目标集群上,执行如下命令: ```shell kubectl apply -f https://github.com/512team/dhorse/raw/main/conf/kubernetes-prometheus.yml
|
3月前
|
Kubernetes 容器
Kubernetes—安装2022新版ingress-nginx步骤
Kubernetes—安装2022新版ingress-nginx步骤
104 0

推荐镜像

更多