概述:

  这篇文章是为了介绍使用kubeadm安装Kubernetes集群(可以用于生产级别)。使用了Centos 7系统。

PS:

  篇幅有点长,但是比较详细、比较全面。(请注意文章最后分享的word文档,可以解决DNS的问题)

一、Centos7 配置说明

1.1   Firewalld(防火墙)

CentOS Linux 7 默认开起来防火墙服务(firewalld),而Kubernetes的Master与工作Node之间会有大量的网络通信,安全的做法是在防火墙上配置Kbernetes各组件(api-server、kubelet等等)需要相互通信的端口号。在安全的内部网络环境中可以关闭防火墙服务。

关闭防火墙的命令:

 # firewall-cmd --state           #查看防火墙状态
# systemctl stop firewalld.service #停止firewall
# systemctl disable firewalld.service #禁止firewall开机启动

如果你不想关闭防火墙,请把以下端口开放(在防火墙开放以下端口)

1.2   SELinux

建议禁用SELinux,让容器可以读取主机文件系统

执行命令:

 # getenforce        #查看selinux状态
# setenforce 0 #临时关闭selinux
# sed -i 's/^ *SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config #永久关闭(需重启系统)
# shutdown -r now #重启系统

二、安装准备工作

2.1   安装环境

软硬件

最低配置

推荐配置

CPU和内存

Master: 至少2 Core和4G内存

Node:至少4 Core和16G内存

Master:4 core和16G内存

Node:应根据需要运行的容器数量进行配置

Linux操作系统

基于x86_64架构的各种Linux发行版本,Kernel版本要求在3.10及以上

Red Hat Linux 7

CentOS 7

说明:

  以上为建议配置,实际安装过程中,Master必须2 core 及以上(否则安装失败,切记),Node可以采用1 core。

2.2   部署环境说明

主机列表:

主机名

Centos版本

ip

docker version

flannel version

Keepalived version

主机配置

备注

master01

7.6.1810

192.168.0.6

18.09.9

v0.11.0

v1.3.5

2C2G

control plane

work01

7.6.1810

192.168.0.10

18.09.9

/

/

1C2G

worker nodes

work02

7.6.1810

192.168.0.12

18.09.9

/

/

1C2G

worker nodes

VIP

7.6.1810

192.168.0.130

18.09.9

v0.11.0

v1.3.5

4C4G

在control plane上浮动

client

7.6.1810

192.168.0.234

/

/

/

4C4G

client(可不需要)

共有7台服务器,3台control plane,3台work,1台client。

k8s 版本(可根据需要进行更改):

主机名

kubelet version

kubeadm version

kubectl version

备注

master01

v1.16.4

v1.16.4

v1.16.4

kubectl选装

work01

v1.16.4

v1.16.4

v1.16.4

kubectl选装

work02

v1.16.4

v1.16.4

v1.16.4

kubectl选装

client

/

/

v1.16.4

client

2.3. 配置主机名(master和node节点都执行)

2.3.1 修改主机名

Master主机改为master01,执行以下命令:

 # hostnamectl set-hostname master01 #修改主机名称为master01
# more /etc/hostname #查看修改结果

同样的修改node01和node02(注意主机名为node01和node02)

说明:

  退出重新登陆即可显示新设置的主机名master01,重新登录之后

2.3.2 修改hosts文件

执行以下命令:

cat >> /etc/hosts << EOF
192.168.0.6 master01
192.168.0.10 node01
192.168.0.12 node02
EOF

2.3.3 禁用swap

Kubeadm建议关闭交换空间的使用,简单来说,执行swapoff -a命令,然后在/etc/fstab中删除对swap的加载,并重新启动服务器即可。

临时禁用,执行以下命令:

# swapoff -a

永久禁用,需要在swapoff -a之后,执行以下命令:

# sed -i.bak '/swap/s/^/#/' /etc/fstab

2.3.4 设置kubernetes源

2.3.4.1 新增kubernetes源

执行以下命令:

# cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=
gpgcheck=
repo_gpgcheck=
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

2.3.4.2 更新缓存

# yum clean all
# yum -y makecache

三、Docker安装(master和node节点都执行)

注意:

  安装docker之前,最好确认一下,kubernetes支持哪些版本的docker(kubernetes和docker的版本要对应,否则可能会造成重新安装)。

3.1 卸载/更新已经安装的Docker

# 卸载docker

#1. 列出安装过的包

# yum list installed | grep docker

#2. 根据安装过的包进行卸载

# yum -y remove docker-ce-cli.x86_64
# yum -y remove docker-ce.x86_64
# yum -y remove containerd.io

# 更新docker

# yum -y update docker

3.2 安装Docker环境

3.2.1 配置docker源

如已安装过docker,则不需要进行此步骤

# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo

3.2.2 安装依赖包

# yum install -y yum-utils device-mapper-persistent-data lvm2

3.2.3 设置从stable仓库获取docker

# yum-config-manager --add-repo  https://download.docker.com/linux/centos/docker-ce.repo

3.2.4 安装Docker

# yum install docker-ce-18.09. docker-ce-cli-18.09. containerd.io -y

说明:

执行以上命令之前,可以看看docker版本,执行以下命令查看

# yum list docker-ce --showduplicates | sort -r

3.2.5 启动Docker(并设置为开机启动)

# systemctl start docker && systemctl enable docker

3.2.6 命令补全

安装bash-completion

# yum -y install bash-completion

加载bash-completion

# source /etc/profile.d/bash_completion.sh

3.2.7 镜像加速(并修改Cgoup Driver)

# mkdir -p /etc/docker
# tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://usydjf4t.mirror.aliyuncs.com",
"https://registry.docker-cn.com"]
, "exec-opts": ["native.cgroupdriver=systemd"]
}
EOF # systemctl daemon-reload
# systemctl restart docker

说明:

修改cgroupdriver是为了消除告警:

[WARNING IsDockerSystemdCheck]: detected “cgroupfs” as the Docker cgroup driver. The recommended driver is “systemd”. Please follow the guide at https://kubernetes.io/docs/setup/cri/

四、Keepalived安装(master节点安装)

简介:

为了保证Master的高可用,会使用多个服务器(作为一个Master集群,一般使用3台服务器,每台服务器都需要安装kube-apiserver、kube-controller-manager、kube-scheduler、etcd等组件),客户端将会通过负载均衡器进行访问kube-apiserver(Master服务器)。在不同的平台下,负载均衡的实现方式不同:公有云一般都有现成的实现方案(这里不进行过多讨论);本地集群,可以选择硬件(例如,F5)或者软件来实现,kubernetes社区推荐方案HAProxy和Keepalived,其中HAProxy负责负载均衡,而Keepalived负责对HAProxy进行监控和故障切换。

说明:

  由于只有一台8核机器,这里没有使用master集群,也没有使用HAProxy,但是仍然提供了Keepalived的安装,以便于使用虚拟IP(192.168.0.130),Node节点可以通过该IP进行访问Master,即使其他Master加入之后,也是通过虚拟IP进行访问

4.1 安装keepalived

# yum -y install keepalived

4.2 keepalived配置

保留默认配置

# mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived_default.conf

写入新的配置

# cat <<EOF > /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id master01
} vrrp_instance VI_1 {
state MASTER
interface enp0s3
virtual_router_id
priority
advert_int
authentication {
auth_type PASS
auth_pass
}
virtual_ipaddress {
192.168.0.130
}
} EOF

说明:

特别注意红色字体文本,master01是主机名称(如果有其他主机则使用对应的主机名称进行替换),enp0s3是网卡名称(每个linux系统可能不一致),192.168.0.130是虚拟IP

4.3 启动keepalived

# service keepalived start && systemctl enable keepalived

4.4 VIP查看

在master机器上执行

# ip a

可以看到VIP在master01(目前只有一台master,以后可能会有多个master)上

五、安装k8s(master和node节点都执行)

5.1 查看kubernetes版本

# yum list kubelet --showduplicates | sort -r

说明:

本文安装的kubelet版本是1.16.4,该版本支持的docker版本为1.13.1, 17.03, 17.06, 17.09, 18.06, 18.09。

5.2 安装kubelet、kubeadm和kubectl(注意版本号,根据需要进行改变)

# yum install -y kubelet-1.16. kubeadm-1.16. kubectl-1.16.

说明:

  • kubelet 运行在集群所有节点上,用于启动Pod和容器等对象的工具
  • kubeadm 用于初始化集群,启动集群的命令工具
  • kubectl 用于和集群通信的命令行,通过kubectl可以部署和管理应用,查看各种资源,创建、删除和更新各种组件

5.3 启动kubelet(并设置为开机启动)

# systemctl enable kubelet && systemctl start kubelet

5.4 命令补全

# echo "source <(kubectl completion bash)" >> ~/.bash_profile
# source .bash_profile

5.5 下载镜像

Kubernetes几乎所有的安装组件和Docker镜像都放在goolge自己的网站上,直接访问可能会有网络问题,这里的解决办法是从阿里云镜像仓库下载镜像,拉取到本地以后改回默认的镜像tag。本文通过运行image.sh脚本方式拉取镜像。

直接执行以下命令(灰色背景部分):

# more image.sh #以下为image.sh文件的内容,如没有该文件,可以在当前文件下创建文件
#!/bin/bash
url=registry.cn-hangzhou.aliyuncs.com/loong576 #阿里云镜像仓库地址,可以按需修改
version=v1.16.4 #安装的kubernetes的版本(可以按需修改)
images=(`kubeadm config images list --kubernetes-version=$version|awk -F '/' '{print $2}'`)
for imagename in ${images[@]} ; do
docker pull $url/$imagename
docker tag $url/$imagename k8s.gcr.io/$imagename
docker rmi -f $url/$imagename
done
## 执行以下命令进行安装
# chmod 755 image.sh #给文件授权
# ./image.sh #执行文件

注意:

如果需要下载其他的kubernetes版本,需要修改对应的版本号(红色字体部分)

5.6 查看已经下载的镜像

# docker images

六、网络插件(flannel)配置(Master执行)

本文的k8s网络使用flannel,该网络需要设置内核参数bridge-nf-call-iptables=1,修改这个参数需要系统有br_netfilter模块。

说明:

K8s网络插件有很多,使用网络插件之前,要进行判断是否和系统适配。

6.1 br_netfilter模块加载

查看br_netfilter模块:

# lsmod |grep br_netfilter

如果系统没有br_netfilter模块则执行下面的新增命令,如有则忽略。

永久新增br_netfilter模块:

# cat > /etc/rc.sysinit << EOF
#!/bin/bash
for file in /etc/sysconfig/modules/*.modules ; do
[ -x $file ] && $file
done
EOF
# cat > /etc/sysconfig/modules/br_netfilter.modules << EOF
modprobe br_netfilter
EOF # chmod /etc/sysconfig/modules/br_netfilter.modules

6.2 内核参数永久修改

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

说明:

如安装网络插件之后,长时间状态没有变更,则可以试试重启机器(或者是虚拟机,这里是指Centos 7系统)。

七、初始化Master(Master节点执行)

说明:

Master的kubernetes之前,须先确定要确定的网络插件(因为可能会影响到初始化的参数),不同的系统可能需要使用不同的网络插件(Centos 不支持 Calico)。

建议先阅读网络插件资料。(Kubernetes所有网络插件说明:这里

7.1 创建初始化文件

7.1.1 获取默认的初始化参数文件

# kubeadm config print init-defaults > init.default.yaml

7.1.2 查看init.default.yaml文件

# cat init.default.yaml

7.1.3 配置初始化文件

创建kubeadm.conf.yaml文件,输入以下内容(灰色背景部分):

apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
kubernetesVersion: v1.16.4
apiServer:
certSANs: #填写所有kube-apiserver节点的hostname、IP、VIP
- master01
- node01
- node02
- 192.168.0.6
- 192.168.0.10
- 192.168.0.12
- 192.168.0.130
controlPlaneEndpoint: "192.168.0.130:6443"
networking:
podSubnet: "10.244.0.0/16" #这里需要根据具体的网络插件来配置(这里使用的flannel网络插件配置)

说明:

注意红色字体部分内容,需要根据init.default.yaml文件和自己的需要进行更改

7.2 初始化kubernetes

# kubeadm init --config=kubeadm.conf.yaml

说明:

如果初始化失败,可执行kubeadm reset后重新初始化(执行以下两条命令)

# kubeadm reset
# rm -rf $HOME/.kube/config

初始化成功,如下图:

按照提示执行下面的命令,复制配置文件到普通用户的home目录下:

# mkdir -p $HOME/.kube

# cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

# chown $(id -u):$(id -g) $HOME/.kube/config

在其他位置(或者主机),保存如下信息(其他node节点加入集群时使用):

You should now deploy a pod network to the cluster.

Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:

  https://kubernetes.io/docs/concepts/cluster-administration/addons/

You can now join any number of control-plane nodes by copying certificate authorities
and service account keys on each node and then running the following as root:
kubeadm join 192.168.0.130: --token afeqnz.vhp0e8rtrw6jz6v2 \
--discovery-token-ca-cert-hash sha256:d6a450aafb14e82efb69fbcb71e426bfed8e423d64b37bac85b3ff8ce7dc6562 \
--control-plane Then you can join any number of worker nodes by running the following on each as root:
## node加入集群时使用
kubeadm join 192.168.0.130: --token afeqnz.vhp0e8rtrw6jz6v2 \
--discovery-token-ca-cert-hash sha256:d6a450aafb14e82efb69fbcb71e426bfed8e423d64b37bac85b3ff8ce7dc6562

7.3 加载环境变量

# echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile

# source .bash_profile

八、node节点加入集群

8.1 开启Master节点防火墙端口

说明:

如果master节点的防火墙已经关闭,可以直接跳过此小节

如果node已经加入其它集群,需要退出集群,请执行在node上执行:

# kubeadm reset

查看防火墙状态:

# systemctl status firewalld 或者 firewall-cmd --state

开启6443端口

# firewall-cmd --zone=public --add-port=/tcp --permanent

## 出现success表明添加成功

命令含义:

--zone #作用域

--add-port=/tcp  #添加端口,格式为:端口/通讯协议

--permanent   #永久生效,没有此参数重启后失效

重启防火墙

# systemctl restart firewalld.service

说明:

Kubernetes集群中的Service可使用的物理机端口号范围为30000~32767

一次全部公开所有可能使用的端口:

# firewall-cmd --zone=public --add-port=-/tcp --permanent

# systemctl restart firewalld.service

8.2 加入集群

Master节点在初始化完成之后,最后一行代码,如下:

# kubeadm join 192.168.0.130: --token afeqnz.vhp0e8rtrw6jz6v2 \

    --discovery-token-ca-cert-hash sha256:d6a450aafb14e82efb69fbcb71e426bfed8e423d64b37bac85b3ff8ce7dc6562

把两行信息复制出来,在node节点执行,如下图:(join成功)

在master节点,执行以下命令查看已经加入的节点

# kubectl get nodes

说明:

由于没有安装网络插件,这里STATUS为NotReady

九、安装网络插件(Master)

在master主机上执行以下命令:

# kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/2140ac876ef134e0ed5af15c65e414cf26827915/Documentation/kube-flannel.yml

说明:

由于网络原因,可能会安装失败,可以在浏览器直接下载kube-flannel.yml文件(也可以在浏览器打开url地址,然后复制文件内容到文件),然后再执行apply

查看节点状态,执行以下命令:

# kubectl get nodes

说明:

STATUS从NotReady变为Ready

十、Client配置(client端执行)

10.1 新增kubernetes源

# cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=
gpgcheck=
repo_gpgcheck=
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

10.2 更新缓存

# yum clean all && yum -y makecache

10.3 安装kubectl

# yum install -y kubectl-1.16.

10.4 命令补全

安装bash- completion

# yum -y install bash-completion

加载bash-completion

# source /etc/profile.d/bash_completion.sh

10.5 从Master节点拷贝admin.conf(注意:如果需要Node上也执行kubectl命令,需要把admin.conf复制到Node上)

# mkdir -p /etc/kubernetes
# scp 192.168.0.6:/etc/kubernetes/admin.conf /etc/kubernetes/

说明:

192.168.0.6 是master主机

# echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile

# source .bash_profile

10.6 加载环境变量

# echo "source <(kubectl completion bash)" >> ~/.bash_profile
# source .bash_profile

10.7 Kubectl 测试

# kubectl get nodes

# kubectl get cs

# kubectl get po -o wide -n kube-system

十一、Dashboard搭建(client端执行)

11.1 下载yaml

# wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta8/aio/deploy/recommended.yaml

说明:

如果连接超时,可以多试几次。也可以在这里下载

11.2 修改镜像地址

# sed -i 's/kubernetesui/registry.cn-hangzhou.aliyuncs.com\/loong576/g' recommended.yaml

说明:

也可以采用其他的一些镜像(切换镜像,需要更改recommended.yaml文件)

更改镜像操作:

如果需要更改镜像的版本号,需要在阿里云查询一下是否有镜像

下载镜像命令:(注意阿里云是没有带版本号的,需要自己录入版本号)

# docker pull registry.cn-hangzhou.aliyuncs.com/kubernetesui/dashboard:v2.0.0-rc5

11.3 配置yaml

外网访问

# sed -i '/targetPort: 8443/a\ \ \ \ \ \ nodePort: 30001\n\ \ type: NodePort' recommended.yaml

说明:

配置NodePort,外部通过https://NodeIp:NodePort 访问Dashboard,此时端口为30001

11.4 新增管理员账号

创建超级管理员的账号用于登录Dashboard

# cat >> recommended.yaml << EOF
---
# ------------------- dashboard-admin ------------------- #
apiVersion: v1
kind: ServiceAccount
metadata:
name: dashboard-admin
namespace: kubernetes-dashboard
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: dashboard-admin
subjects:
- kind: ServiceAccount
name: dashboard-admin
namespace: kubernetes-dashboard
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
EOF

11.5 部署Dashboard

# kubectl apply -f recommended.yaml

状态查看:

# kubectl get all -n kubernetes-dashboard

令牌查看:

# kubectl describe secrets -n kubernetes-dashboard dashboard-admin

令牌为(一定要注意可能存在换行的情况):

eyJhbGciOiJSUzI1NiIsImtpZCI6IllkWjQxWENEYnBXYV9rUlNqWTRldjVOYXV3M0tPTklYTVZTWUZWOXp0SHMifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkYXNoYm9hcmQtYWRtaW4tdG9rZW4tZzRwdzUiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZGFzaGJvYXJkLWFkbWluIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiNjNmNzllODUtNzMzMy00MDY1LTg1YTEtYzkxZTkzNjk3ZjA0Iiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmVybmV0ZXMtZGFzaGJvYXJkOmRhc2hib2FyZC1hZG1pbiJ9.vsizK9ZP53to5aL5d1oyFYAiR8Kt1LaQ_Lkt86yPgHp6QloMS_pLCdD7KZi76deQ4ISTFC9Ldc62zslLtY4qgxNvSUiVWj1bWUn2BfCJ-3jPxpd7ZOgr3Gbp2xAFc3xjgm-qZaOydec9i44CbkdiVDoAjL0Au78yt7aHSW8B6plc2fAYNdywtyIOAMhe7f0gjyRaWrGQje2CVduITxZ-2NCwd3EYQNs31OA-zUPFvel_xi_KzdMBuj4z7DdvIK9wPQHyuke0TIs5dHSUEtiY84erLMg5i0ZGXCd019D5Nrsd78fVe_NbO-NThVReskA-jt1FyhAUesZie4GX-2eL3Q

说明:

如果安装Dashboard过程中出现问题,要仔细进行排查,可能pod还没有安装完成,等待一段时间之后,再看看,如果还是不行,则需要考虑一下中途是否有问题,是否需要重新安装。

如果忘记Token,可以通过以下命令获取:

# kubectl describe secret -n kubernetes-dashboard $(kubectl get secret -n kubernetes-dashboard |grep  kubernetes-dashboard-token | awk '{print $1}') |grep token | awk '{print $2}'

11.6 使用火狐浏览器浏览

https://192.168.0.6:30001

部署Dashboard之后,由于证书问题导致无法在浏览器浏览(暂时没有找到解决方案,尝试了网上的方式,不行,以下是尝试的过程(可以跳过))

删除已经部署的Dashboard

1. kubectl delete ns kubernetes-dashboard

https://github.com/kubernetes/dashboard/releases

2. 阅读参考资料(并执行命令,除了删除命令)

https://blog.51cto.com/10616534/2430512

十二、查找问题方式

12.1 查看Pod详细信息

查看所有Pod

# kubectl get pods --all-namespaces

查看Pod日志(使用真实的pod名称,替换pod-name)

# kubectl logs pod-name --all-containers=true

查看状态异常的Pod的详细信息

# kubectl describe pod kubernetes-dashboard-8478d57dc6-p7jt7 --namespace=kubernetes-dashboard

说明:

可以看到在哪台Node上创建了容器

12.2 防火墙的问题

建议关闭防火墙

# systemctl stop firewalld.service

# systemctl disable firewalld.service

说明:

如果不关闭防火墙,可能会造成容器产生错误,如no host to route,是因为防火墙拦截了端口。

12.3 Dashboard 证书过期问题

12.4 Node节点执行kubectl命令出错问题

错误描述信息:

The connection to the server raw.githubusercontent.com was refused - did you specify the right host or port?

需要将master节点的 /etc/kubernetes/admin.conf 文件复制到node节点下。

参考资料

Kubernetes的安装:

https://www.kubernetes.org.cn/6632.html

CentOS Linux 开放端口:

https://www.cnblogs.com/archoncap/p/5402983.html

Kubernetes所有网络插件说明:

https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/#pod-network

PS:

最后分享一个问题的解决方案(在发布网站/应用的时候可能需要),下载

如果您在使用该文章进行安装kubernetes集群时遇到问题,请在下方留言,我看到后会及时回复。

--------------------------------------------------------------------------------------------------------

2020-04-20 补充

官网安装资料:

http://docs.kubernetes.org.cn/457.html(中文版,低版本,作为参考)

http://docs.kubernetes.org.cn/459.html(中文版,低版本,作为参考)

https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/ (英文版,最新版本)

Kubernetes(K8s) 安装(使用kubeadm安装Kubernetes集群)的更多相关文章

  1. 使用kubernetes 官网工具kubeadm部署kubernetes(使用阿里云镜像)

    系列目录 kubernetes简介 Kubernetes节点架构图: kubernetes组件架构图: 准备基础环境 我们将使用kubeadm部署3个节点的 Kubernetes Cluster,整体 ...

  2. Centos7的安装、Docker1.12.3的安装,以及Docker Swarm集群的简单实例

    目录 [TOC] 1.环境准备 ​ 本文中的案例会有四台机器,他们的Host和IP地址如下 c1 -> 10.0.0.31 c2 -> 10.0.0.32 c3 -> 10.0.0. ...

  3. 如何在本地数据中心安装Service Fabric for Windows集群

    概述 首先本文只是对官方文档(中文,英文)的一个提炼,详细的安装说明还请仔细阅读官方文档. 虽然Service Fabric的官方名称往往被加上Azure,但是实际上(估计很多人不知道)Service ...

  4. 安装ORACLE高可用RAC集群11g执行root脚本的输出信息

    安装ORACLE高可用RAC集群11g执行root脚本的输出信息 作者:Eric 微信:loveoracle11g [root@node1 ~]# /u01/app/oraInventory/orai ...

  5. 安装ORACLE高可用RAC集群11g校验集群安装的可行性输出信息

    安装ORACLE高可用RAC集群11g校验集群安装的可行性输出信息 作者:Eric 微信:loveoracle11g [grid@node1 grid]$ ./runcluvfy.sh stage - ...

  6. Cloudera Manager安装之利用parcels方式安装3或4节点集群(包含最新稳定版本或指定版本的安装)(添加服务)(CentOS6.5)(五)

    参考博客 Cloudera Manager安装之利用parcels方式安装单节点集群  Cloudera Manager安装之Cloudera Manager 5.3.X安装(三)(tar方式.rpm ...

  7. Cloudera Manager安装之利用parcels方式(在线或离线)安装3或4节点集群(包含最新稳定版本或指定版本的安装)(添加服务)(Ubuntu14.04)(五)

    前期博客 Cloudera Manager安装之Cloudera Manager 5.6.X安装(tar方式.rpm方式和yum方式) (Ubuntu14.04) (三) 如果大家,在启动的时候,比如 ...

  8. [转载] Centos7的安装、Docker1.12.3的安装,以及Docker Swarm集群的简单实例

    1.环境准备 ​ 本文中的案例会有四台机器,他们的Host和IP地址如下 c1 -> 10.0.0.31 c2 -> 10.0.0.32 c3 -> 10.0.0.33 c4 -&g ...

  9. 在 Linux 多节点安装配置 Apache Zookeeper 分布式集群

    规划: 三台物理服务器就形成了(法定人数).对于高可用性集群,您可以使用高于3的任何奇数.例如,如果设置5台服务器,则集群可以处理两个故障节点等. 物理服务器需要开启的端口 2888 , 3888 和 ...

  10. Redis安装(单机及各类集群,阿里云)

    Redis安装(单机及各类集群,阿里云) 前言 上周,我朋友突然悄悄咪咪地指着手机上的一篇博客说,这是你的博客吧.我看了一眼,是之前发布的<Rabbit安装(单机及集群,阿里云>.我朋友很 ...

随机推荐

  1. date成字符串

    //获取当前时间 Date date=new Date(); System.out.println("当前date: "+date); //将时间转化成yyyy-MM-dd格式的字 ...

  2. 带你封装自己的MVP+Retrofit+RxJava2框架(一)

    前言 文本已经收录到我的Github个人博客,欢迎大佬们光临寒舍:我的GIthub博客 看完本篇文章的,可以看下带你封装自己的MVP+Retrofit+RxJava2框架(二),里面封装得到了改进 本 ...

  3. Docker Compose 项目打包部署

    Docker Compose 前面我们使用 Docker 的时候,定义 Dockerfile 文件,然后使用 docker build.docker run 等命令操作容器.然而微服务架构的应用系统一 ...

  4. 正式学习MVC 04

    1.ActionResult ActionResult是一个父类, 子类包括了我们熟知的 ViewResult 返回相应的视图 ContentResult  返回字符串 RedirectResult( ...

  5. 使用NPOI将Excel表导入到数据库中

    public string ExcelFile() { //指定文件路径, string fileName=@"d:\Stu.xls"; //创建一个文件流,并指定其中属性 usi ...

  6. css 实现九宫格

    1.自己写了一个,写完对比了下别人写的发现自己写的太low.故就不写自己太差劲的了. 别人写的我总结优化了一下,如果不用写内容去掉position,content简单也是可以的. <!DOCTY ...

  7. 一起了解 .Net Foundation 项目 No.20

    .Net 基金会中包含有很多优秀的项目,今天就和笔者一起了解一下其中的一些优秀作品吧. 中文介绍 中文介绍内容翻译自英文介绍,主要采用意译.如与原文存在出入,请以原文为准. System.Drawin ...

  8. TCP断开连接(四次挥手)

    四次挥手 ACK建立连接之后都为1. 1.A发送释放连接报文段,FIN=1. 2.B收到并回复确认,TCP进入半关闭状态,即此时B能向A发送,但是A无法向B发送数据. 3.当B传输完所有数据之后,发送 ...

  9. 两个div,高度都是100% 用 display:flex; 和 min-height 一边撑高了,另一边自动走 (不加flex不自动撑开)

    两个div,高度都是100% 用 display:flex; 和 min-height 一边撑高了,另一边自动走

  10. MQTT抓包分析

    1. 概述 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(Publish/Subscribe)模式的轻量级通讯协议,该 ...