ubuntu安装K8S
Kubernetes部署环境准备# 关闭防火墙关闭ufw防火墙,Ubuntu默认未启用,无需设置。$ sudo ufw disablesudo ufw status查看防火墙状态# 关闭selinuxubuntu默认不安装selinux,假如安装了的话,按如下步骤禁用selinux临时禁用(重启后失效)$ sudo setenforce 0 #0代表permissive 1代表enforcing永
Kubernetes部署环境准备
# 关闭防火墙
- 关闭ufw防火墙,Ubuntu默认未启用,无需设置。
$ sudo ufw disable
sudo ufw status 查看防火墙状态
# 关闭selinux
- ubuntu默认不安装selinux,假如安装了的话,按如下步骤禁用selinux
临时禁用(重启后失效)
$ sudo setenforce 0 #0代表permissive 1代表enforcing
永久禁用
$ sudo vi /etc/selinux/config
SELINUX=permissive
# 关闭swap(k8s禁止虚拟内存以提高性能)
禁掉所有的swap分区
$ sudo swapoff -a
同时还需要修改/etc/fstab文件,注释掉 SWAP 的自动挂载,防止机子重启后swap启用。
备注:
- Kubernetes 1.8开始要求关闭系统的Swap,如果不关闭,默认配置下kubelet将无法启动,虽然可以通过kubelet的启动参数–fail-swap-on=false更改这个限制,但不建议,最好还是不要开启swap。
# 在master添加hosts
cat >> /etc/hosts << EOF
192.168.172.134 k8smaster
192.168.172.135 k8snode
EOF
# 设置网桥参数
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system #生效
# 时间同步
sudo apt-get install ntpdate ntpdate cn.pool.ntp.org hwclock --systohc date
Kubernetes安装具体步骤
- Kubernetes 默认容器运行环境是Docker,因此首先需要安装Docker;
配置加速器加速下载 (设置成 国内镜像可以提高下载速度)
开机自启docker
systemctl enable docker.service
- 添加apt key以及阿里云源
sudo apt update && sudo apt install -y apt-transport-https curl
添加 k8s 秘钥(二选一 选阿里)
# 谷歌
#curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
# 阿里(建议选择)
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
添加 k8s 镜像源(二选一 选阿里)
# 官方 镜像源
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb http://apt.kubernetes.io/ kubernetes-xenial main
EOF
# 阿里 镜像源
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
到时候下载k8s的相关组件才能找到下载源
- 安装 kubeadm,kubelet 和 kubectl
1.查看可用软件版本
$ apt-cache madison kubeadm
2.安装指定版本:
sudo apt-get install -y kubelet=1.18.3-00 kubeadm=1.18.3-00 kubectl=1.18.3-00
sudo apt-mark hold kubelet=1.18.3-00 kubeadm=1.18.3-00 kubectl=1.18.3-00
# apt-mark hold 安装标记 防止版本自动更新
3.设置开机自启动并运行kubelet:
sudo systemctl enable kubelet && sudo systemctl start kubelet
Kubernetes集群安装
master节点部署
提前下载所需镜像
$ kubeadm config images list --kubernetes-version=v1.18.3
然后执行这部直接把需要的镜像下载,然后 kubeadm init初始化集群
kubeadm init --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.18.3 --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/configYou 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 192.168.1.175:6443 --token v1nj22.l30dctzysf2jynly --discovery-token-ca-cert-hash sha256:0170607e7e069ffde2f2b6b440e7982f066887e59db49e9a62ac9518924af690
记下其中的token,加入node节点时会用到。
检查kubelet使用的cgroup driver
- kubelet启动时指定的cgroup driver需要和docker所使用的保持一致。
1.查看 Docker 使用的 cgroup driver:
$ docker info | grep -i cgroup
-> Cgroup Driver: cgroupfs
2.查看kubelet指定的cgroup driver
Kubernetes文档中kubelet的启动参数–cgroup-driver string Driver that the
kubelet uses to manipulate cgroups on the host. Possible values:
‘cgroupfs’, ‘systemd’ (default
“cgroupfs”)。默认值为cgroupfs。yum安装kubelet、kubeadm时生成10-kubeadm.conf文件中可能将这个参数值改成了systemd。
查看kubelet的配置文件(1.12.0版本的封装在/var/lib/kubelet/kubeadm-flags.env文件中),如果是默认的cgroupfs,不需要修改。否则需要修改/etc/default/kubelet(或者/var/lib/kubelet/kubeadm-flags.env)
文件:
$ sudo vim /etc/default/kubelet
KUBELET_KUBEADM_EXTRA_ARGS=--cgroup-driver=<value>
$ sudo systemctl daemon-reload
$ sudo systemctl restart kubelet
3.接下来在master机器上执行:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
4. 设置master参与工作负载
- 使用kubeadm初始化的集群,将master节点做了taint(污点),使得默认情况下(不设置容忍)Pod不会被调度到master上。这里搭建的是测试环境可以使用下面的命令去掉master的taint,使master参与工作负载:
$ kubectl taint nodes --all node-role.kubernetes.io/master-
#node/wangjiw untainted 启动成功标识
接下来把node节点加入Kubernetes master中,在Node机器上执行;
向集群添加新节点,执行的命令就是kubeadm init最后输出的kubeadm join命令:
kubeadm join 192.168.172.132:6443 --token wa5bif.zfuvbesevdfvf4of \
--discovery-token-ca-cert-hash sha256:87cf5828d54dd80da13c4b57c57360370ea0267a7cc3991989ca3006cf3e44d8
kubectl get nodes --(查询子节点是否成功)
4.2 网络部署
- 下载kube-flannel.yml文件
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
- 应用kube-flannel.yml文件得到运行时容器
kubectl apply -f kube-flannel.yml (在master机器上执行)
- 然后查看节点状态: kubectl get nodes (在master机器上执行)
至此我们的k8s环境就搭建好了;
查看运行时容器pod (一个pod里面运行了多个docker容器)
kubectl get pods -n kube-system
后续再继续介绍K8s部署容器化应用
更多推荐
所有评论(0)