相关连接
- Kubernetes 核心概念 POD及网络
- Kubernetes 核心概念Label、RC、HA、Deployment
- Kubernetes 核心概念 StatefulSet、Service
- Kubernetes存储
- 通过MINIKUBE安装K8S测试环境(国内安装)
- 通过kubeadm安装k8s并配置集群
- 基于K8S搭建HLS直播/点播云服务
- 基于K8S搭建VR直播/点播云服务
在Ubuntu上通过kubeadm安装k8s并配置集群
1.首先 安装docker和docker-compose 过程略过
2.配置kubeadm国内源(aliyun)
由于官网手册给的是k8s的官方源,无法正常apt安装,这里添加源如下:
在 /etc/apt/sources.list.d/kubernetes.list 文件下添加:deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
apt-get update && apt-get install -y apt-transport-https
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
apt-get update
3.在Master节点安装 kubectl kubelet kubeadm 三个组件
3.1.kubectl:cmd客户端,用于和k8s交互
3.2.kubadm :用于集群模式下Master节点的设置,已经Slave节点的添加
3.3.kubectl:每个节点都会存在的进程,用于处理master节点下发的任务,管理pod和容器,并且上报pod,node的具体情况
apt-get install -y kubelet kubeadm kubectl
安装完成后查看版本号,这里是v1.15.1 版本
4.配置kubelet service
4.1.关闭防火墙
sed -ri 's#(SELINUX=).*#\1disabled#' /etc/selinux/config
setenforce 0
systemctl disable firewalld
systemctl stop firewalld
4.2.关闭swap
swapoff -a
4.3.配置内核参数
在 k8s.conf文件添加如下内容
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_nonlocal_bind = 1
net.ipv4.ip_forward = 1
vm.swappiness=0
EOF
sysctl --system
4.4 配置kubelet service
systemctl enable kubelet
systemctl start kubelet
systemctl status kubelet
查看状态:发现是(code=exited, status=255) 此时是退出状态 ,请暂时忽略
5.通过国内源下载k8s的Master节点所需的docker组件(kube-apiserver,kube-controller-manager,kube-scheduler)
此时如果 直接 kubeadm init 会 如图所示提示下载失败,这里需要通过镜像下载(注意版本号最好匹配):
#这里注意上面截图提示的版本号
docker pull mirrorgooglecontainers/kube-controller-manager:v1.15.1
docker pull mirrorgooglecontainers/kube-scheduler:v1.15.1
docker pull mirrorgooglecontainers/kube-proxy:v1.15.1
docker pull mirrorgooglecontainers/pause:3.1
docker pull mirrorgooglecontainers/etcd:3.3.10
docker pull coredns/coredns:1.3.1
docker tag mirrorgooglecontainers/kube-proxy:v1.15.1 k8s.gcr.io/kube-proxy:v1.15.1
docker tag mirrorgooglecontainers/kube-scheduler:v1.15.1 k8s.gcr.io/kube-scheduler:v1.15.1
docker tag mirrorgooglecontainers/kube-apiserver:v1.15.1 k8s.gcr.io/kube-apiserver:v1.15.1
docker tag mirrorgooglecontainers/kube-controller-manager:v1.15.1 k8s.gcr.io/kube-controller-manager:v1.15.1
docker tag mirrorgooglecontainers/etcd:3.3.10 k8s.gcr.io/etcd:3.3.10
docker tag coredns/coredns:1.3.1 k8s.gcr.io/coredns:1.3.1
docker tag mirrorgooglecontainers/pause:3.1 k8s.gcr.io/pause:3.1
docker rmi mirrorgooglecontainers/kube-apiserver:v1.15.1
docker rmi mirrorgooglecontainers/kube-controller-manager:v1.15.1
docker rmi mirrorgooglecontainers/kube-scheduler:v1.15.1
docker rmi mirrorgooglecontainers/kube-proxy:v1.15.1
docker rmi mirrorgooglecontainers/pause:3.1
docker rmi mirrorgooglecontainers/etcd:3.3.10
docker rmi coredns/coredns:1.3.1
6.初始化Master节点
kubeadm init --kubernetes-version=v1.15.1 --apiserver-advertise-address=10.165.8.153 --pod-network-cidr=10.244.0.0/16
#返回结果:
#返回结果:
Your Kubernetes master has initialized successfully!
To start using your cluster, you need to run the following 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:
https://kubernetes.io/docs/concepts/cluster-administration/addons/
You can now join any number of machines by running the following on each node
as root:
kubeadm join 10.165.8.153:6443 --token fpdm67.4ps59tkdwudzkag1 --discovery-token-ca-cert-hash sha256:e6e8065023217654a808ca7f8f3bf42acf6da2306037761e109463f0959930a7
#根据上边返回结果 运行以下命令
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
7.将node节点添加到master
7.1 在slave节点重复前步骤1~5, 配置好后,在slave设备运行以下命令 ip 为 master节点ip
kubeadm join 10.165.8.153:6443 --token fpdm67.4ps59tkdwudzkag1 --discovery-token-ca-cert-hash sha256:e6e8065023217654a808ca7f8f3bf42acf6da2306037761e109463f0959930a7
7.2 在master节点查看node信息
kubectl get node