0. 前置条件
- 操作系统:ubuntu 18.04
- 网络连接
1. 基础环境和配置
1.1 配置操作系统环境
该操作针对所有的节点
启用root用户和root用户的ssh远程访问
1
2
3
4sudo passwd root
su root
vi /etc/ssh/sshd_config
# 设置 PermitRootLogin yes
重新使用root连接(根据各自需要,root要方便很多)
设置主机名
1
2
3
4
5
6vi /etc/cloud/cloud.cfg
# 设置preserve_hostname:true
vi /etc/hostname
# 设置你的主机名
vi /etc/hosts
# 设置相关节点的IP和主机名映射关闭swap
1
2
3swapoff -a
vi /etc/fstab
# 注释掉含有swap的那一行
1.2 配置软件源仓库
该操作针对所有节点
配置ubuntu仓库
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16# 替换/etc/apt/source.list内容为
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
# deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
# deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
# deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
#deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
# deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse安装必要的工具
1
2
3apt-get update
# 安装GPG密钥需要的工具
apt-get -y install apt-transport-https ca-certificates curl software-properties-common配置docker仓库
1
2
3
4
5# 添加密钥
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | apt-key add -
# 添加仓库地址
vi /etc/apt/sources.list.d/docker.list
# 插入 deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu bionic stable配置kubernetes仓库
1
2
3
4
5# 添加密钥
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
# 添加仓库地址
vi /etc/apt/sources.list.d/kubernetes.list
# 插入 deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main重启操作系统reboot
2. 安装软件
2.1 安装docker
1 | apt-get update |
2.2 安装kubernetes
1 | apt-get update |
可以使用apt-get pkgname=version来安装特定版本号的软件
3. 初始化kubernetes集群
3.1 拉取需要的镜像
在master节点操作
1 | # 镜像列表可以在kubernetes上获取 |
3.2 初始化集群
生成初始节点
1
kubeadm init --config kubeadm.yaml
建立控制台命令
可以使用root或者其他非root账户执行如下命令
1
2
3mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config安装网络组件
下载flannel镜像
1
2
3
4# 使用aliyun的镜像服务拉取的quay.io的镜像
docker pull registry.cn-hangzhou.aliyuncs.com/tellxp_quay_io/flannel:v0.10.0-amd64
docker tag registry.cn-hangzhou.aliyuncs.com/tellxp_quay_io/flannel:v0.10.0-amd64 quay.io/coreos/flannel:v0.10.0-amd64
docker rmi registry.cn-hangzhou.aliyuncs.com/tellxp_quay_io/flannel:v0.10.0-amd64设置iptable
直接执行
1
2sysctl net.bridge.bridge-nf-call-iptables=1
systemctl restart kubelet或者使用配置文件
1
2
3
4
5vi /etc/sysctl.d/kubernetes.conf
# net.bridge.bridge-nf-call-ip6tables = 1
# net.bridge.bridge-nf-call-iptables = 1
# net.ipv4.ip_forward = 1
sysctl -p /etc/sysctl.d/kubernetes.conf
- 应用flannel配置
1
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/v0.10.0/Documentation/kube-flannel.yml
- 查看master的情况
1
2
3
4# 查看node的状态是否为Ready
kubectl get nodes
# 查看所有的pods是否是Running
kubectl get pods --all-namespaces
3.3 将其他节点加入集群
拉取镜像
1
2
3
4
5
6
7
8
9
10
11
12# 每个节点加入前执行
docker pull registry.cn-hangzhou.aliyuncs.com/tellxp_quay_io/flannel:v0.10.0-amd64
docker tag registry.cn-hangzhou.aliyuncs.com/tellxp_quay_io/flannel:v0.10.0-amd64 quay.io/coreos/flannel:v0.10.0-amd64
docker rmi registry.cn-hangzhou.aliyuncs.com/tellxp_quay_io/flannel:v0.10.0-amd64
docker pull gcrxio/kube-proxy-amd64:v1.11.3
docker tag gcrxio/kube-proxy-amd64:v1.11.3 k8s.gcr.io/kube-proxy-amd64:v1.11.3
docker rmi gcrxio/kube-proxy-amd64:v1.11.3
docker pull gcrxio/pause:3.1
docker tag gcrxio/pause:3.1 k8s.gcr.io/pause:3.1
docker rmi gcrxio/pause:3.1设置flannel的iptable
直接执行
1
2sysctl net.bridge.bridge-nf-call-iptables=1
systemctl restart kubelet或者使用配置文件
1
2
3
4
5vi /etc/sysctl.d/kubernetes.conf
# net.bridge.bridge-nf-call-ip6tables = 1
# net.bridge.bridge-nf-call-iptables = 1
# net.ipv4.ip_forward = 1
sysctl -p /etc/sysctl.d/kubernetes.conf使用master初始化成功后的提示加入集群
1
kubeadm join 10.100.1.51:6443 --token bdrxv1.b2mhvktnb8o3xe0f --discovery-token-ca-cert-hash sha256:38bddbac12f93ea8b28a72ca22f0518d67c7901ca303c69232a56d3f3dd887de
token过期或者忘记了执行
1
2
3
4
5kubeadm token list # 查看token
kubeadm token create # 生成token
# 查看hashcode
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | \ openssl dgst -sha256 -hex | sed 's/^.* //'查看node是否加入成功
1
2
3
4# 查看node的状态是否为Ready
kubectl get nodes
# 查看所有的pods是否是Running
kubectl get pods --all-namespaces
附录 其他一些附加bash片段
1 | # 强制升级kubernetes |