k8s集群部署文档(VMware+Ubuntu)
一. 准备服务器节点# 系统版本:Ubuntu 16.04# 集群网络: 192.168.0.50k8s-master#192.168.0.51k8s-node1#192.168.0.52k8s-node2二.安装前准备1.节点设置静态ip
·
一. 准备服务器节点
# 系统版本:Ubuntu 16.04
# 集群网络: 192.168.0.50 k8s-master
# 192.168.0.51 k8s-node1
# 192.168.0.52 k8s-node2
二.安装前准备
1.节点设置静态ip
$vim /etc/network/interfaces #vim打开文件编辑,若vim不可用使用sudo apt install vim自行安装
auto lo
iface lo inet loopback
auto ens33 #网卡名通过ifconfig查询
iface ens33 inet static #设置为静态
address 192.168.0.50 #自行设置IP,可在vm网络编辑器中查找最大最小IP地址,在其中选择
gateway 192.168.0.2
netmask 255.255.255.0
dns-nameserver 114.114.114.114
dns-nameserver 8.8.8.8
2.禁用selinux,防火墙,交换空间
$sudo vim /etc/selinux/config #禁用selinux
SELINUX=disabled #编辑文件添加
$setenforce 0 #禁用防火墙
setenforce: SELinux is disabled
$sudo ufw disable
$getenforce #验证
Disabled
$swapoff -a #关闭交换空间
$vim /etc/fstab #注释掉swap那一整行
#当编辑一些只读文件不能保存退出时,使用:w !sudo tee % 命令,然后退出即可
3.修改节点名
$vim /etc/hostname #修改为k8s节点名称
$cat /etc/hostname #查看修改名称生效
#若出现sudo无法解析主机的问题,可以vim /etc/hosts编辑127.0.1.1后的主机名,重启生效
二.安装docker
#step 1: 安装必要的一些系统工具
$sudo apt-get update
$sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
# step 2: 安装GPG证书
$curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
#step 3: 写入软件源信息
$sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu (lsb_release -cs) stable"
#Step 4: 更新并安装 Docker-CE
$sudo apt-get -y update
$sudo apt-get -y install docker-ce
三.修改Linux内核
$vim /etc/sysctl.d/k8s.conf # 在该文件中添加如下内容
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
$sysctl -p #从配置文件“/etc/sysctl.conf”加载内核参数设置
四.修改Docker 镜像源
$sudo mkdir -p /etc/docker
$sudo tee /etc/docker/daemon.json <<-'EOF'
>{
> "registry-mirrors": ["https://lzyjejsb.mirror.aliyuncs.com"] #阿里云平台获取镜像源
>}
>EOF
$sudo systemctl daemon-reload
$sudo systemctl restart docker
五. 安装kubernetes
1.添加kubernetes软件源,安装kubeadm,kubelet,kubectl,启动kubelet服务并设置开机自动启动
#国内源
$ curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add - #添加gpg
$ cat <<EOF >/etc/apt/sources.list.d/kubernetes.list #添加源
#添加如下内容
>deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
>EOF
$ apt-get update
$ apt-get install -y kubelet kubeadm kubectl
# 安装指定版本:
$ apt-get install kubeadm=1.16.0-00 kubectl=1.16.0-00 kubelet=1.16.0-00
$systemctl enable kubelet && systemctl start kubelet # 启动kubelet服务并设置开机自动启动
#k8s 1.16.0版本与kubeflow不兼容
2.拉取镜像并tag为所需镜像
1> 查看所需镜像
$kubeadm config images list --kubernetes-version v1.16.0
k8s.gcr.io/kube-apiserver:v1.16.0
k8s.gcr.io/kube-controller-manager:v1.16.0
k8s.gcr.io/kube-scheduler:v1.16.0
k8s.gcr.io/kube-proxy:v1.16.0
k8s.gcr.io/pause:3.1
k8s.gcr.io/etcd:3.3.15-0
k8s.gcr.io/coredns:1.6.2
2> 拉取列出的镜像
$docker pull mirrorgooglecontainers/kube-proxy-amd64:v1.16.0
$docker pull mirrorgooglecontainers/kube-scheduler-amd64:v1.16.0
$docker pull mirrorgooglecontainers/kube-apiserver-amd64:v1.16.0
$docker pull mirrorgooglecontainers/kube-controller-manager-amd64:v1.16.0
$docker pull mirrorgooglecontainers/pause:3.1
$docker pull mirrorgooglecontainers/etcd:3.3.15-0
$docker pull coredns/coredns:1.6.2
3> docker tag将拉取的镜像改为所需镜像
$docker tag mirrorgooglecontainers/kube-proxy-amd64:v1.16.0 k8s.gcr.io/kube-proxy:v1.16.0
......
3.初始化master节点
$kubeadm init --image-repository registry.aliyuncs.com/google_containers --ignore-preflight-errors=Swap
[init] Using Kubernetes version: v1.14.0
[preflight] Running pre-flight checks
[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/
[WARNING SystemVerification]: this Docker version is not on the list of validated versions: 19.03.5. Latest validated version: 18.09
………
Your Kubernetes control-plane 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/
Then you can join any number of worker nodes by running the following on each as root:
kubeadm join 192.168.0.50:6443 --token fscvas.o675epqchbcgk8wh \--discovery-token-ca-cert-hash sha256:5104b9164f5724f37c0076e109efd6944fc88522e791e097abfebcc97d3ad22f
#kubeadm join以及之后内容需要保留,在node中执行,如果忘记可以使用kubeadm token list等命令查询。
4.将kubectl命令添加到普通用户
#使用普通用户执行如下命令:
$mkdir -p $HOME/.kube
$sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$sudo chown $(id -u):$(id -g) $HOME/.kube/config
5.部署weave网络
$kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"
serviceaccount/weave-net created
clusterrole.rbac.authorization.k8s.io/weave-net created
clusterrolebinding.rbac.authorization.k8s.io/weave-net created
role.rbac.authorization.k8s.io/weave-net created
rolebinding.rbac.authorization.k8s.io/weave-net created
daemonset.apps/weave-net created
#使用kubectl get命令查看集群是否均已正常运行
$ kubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE
coredns-58cc8c89f4-w8dsz 1/1 Running 0 4h18m
coredns-58cc8c89f4-wn5bk 1/1 Running 0 4h18m
etcd-k8s-master 1/1 Running 0 4h17m
kube-apiserver-k8s-master 1/1 Running 0 4h17m
kube-controller-manager-k8s-master 1/1 Running 0 4h17m
kube-proxy-2f6hg 1/1 Running 0 4h10m
kube-proxy-bczp9 1/1 Running 0 4h18m
kube-scheduler-k8s-master 1/1 Running 0 4h17m
weave-net-mg6h8 2/2 Running 0 4h10m
weave-net-r67zf 2/2 Running 0 4h12m
六.添加node
1.在node节点上执行环境准备,安装docker,修改镜像源,安装kubeadm和kubelet,注意需要拉取kube-proxy、pause、coredns三个镜像,否则weave容器等无法在该节点上正常运行。
2.在node节点上执行我们保存的kubeadm join命令。
$kubeadm join 192.168.0.50:6443 --token vcvc9x.cbypmhjx9wsc7tu3 \
>--discovery-token-ca-cert-hash sha256:a5e928b8fef6a88d207cfe763039c5567f8638b175027b4ae389dda693143a14
[preflight] Running pre-flight checks
[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/
[WARNING SystemVerification]: this Docker version is not on the list of validated versions: 19.03.12. Latest validated version: 18.09
[preflight] Reading configuration from the cluster...
[preflight] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -oyaml'
[kubelet-start] Downloading configuration for the kubelet from the "kubelet-config-1.16" ConfigMap in the kube-system namespace
[kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
[kubelet-start] Writing kubelet environment file with flags to file "/var/lib/kubelet/kubeadm-flags.env"
[kubelet-start] Activating the kubelet service
[kubelet-start] Waiting for the kubelet to perform the TLS Bootstrap...
This node has joined the cluster:
* Certificate signing request was sent to apiserver and a response was received.
* The Kubelet was informed of the new secure connection details.
Run 'kubectl get nodes' on the control-plane to see this node join the cluster.
3.在master节点上执行: kubectl get nodes 查看节点是否正常。正常状态为Ready。 如果不正常查看pods解决。
$kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s-master Ready master 4h32m v1.16.0
k8s-node1 Ready <none> 4h24m v1.16.0
更多推荐
已为社区贡献1条内容
所有评论(0)