照着做就行了,Kubernetes安装详细步骤
设置系统重启后内核版本加载,以下高亮显示为当前最新内核版本号,会根据升级时间不同而不同,可以根据以上查看内核版本命令查看,并替换以下命令的高亮部分。注意:如果有下载好的镜像,可以参考如下脚本进行导入操作,如果没有请跳过以下步骤,直接到“执行kubeadm初始化”到此Kubernetes以安装完成,可以通过如下命令查看节点状态,如果为ready,说明安装成功。节点重置(安装过程中不需要执行,如果节点
Kubernetes 安装及相关环境搭建手册
环境配置
设置系统主机名以及host文件的相互解析
hostnamectl set-hostname master01
hostnamectl set-hostname node01
hostnamectl set-hostname node02
以下安装步骤主从节点都要执行
安装依赖包
yum install -y conntrack ntpdate ntp ipvsadm ipset jq iptables curl sysstat libseccomp wget vim net-tools git
设置防火墙为iptables并设置空规则
systemctl stop firewalld && systemctl disable firewalld
yum -y install iptables-services && systemctl start iptables && systemctl enable iptables && iptables -F && service iptables save
关闭selinux
swapoff -a && sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
调整内核参数,对于k8s
cat > kubernetes.conf <<EOF
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
net.ipv4.ip_forward=1
net.ipv4.tcp_tw_recycle=0
vm.swappiness=0
vm.overcommit_memory=1
vm.panic_on_oom=0
fs.inotify.max_user_instances=8192
fs.inotify.max_user_watches=1048576
fs.file-max=52706963
fs.nr_open=52706963
net.ipv6.conf.all.disable_ipv6=1
net.netfilter.nf_conntrack_max=2310720
EOF
cp kubernetes.conf /etc/sysctl.d/kubernetes.conf
sysctl -p /etc/sysctl.d/kubernetes.conf
关闭系统不需要的服务
systemctl stop postfix && systemctl disable postfix
systemd-journald 用于检索 systemd 的日志,是 systemd 自带的日志系统。
设置rsyslogd 和systemd journald
mkdir /var/log/journal
mkdir /etc/systemd/journald.conf.d
cat > /etc/systemd/journald.conf.d/99-prophet.conf << EOF
[Journal]
Storage=persistent
Compress=yes
SyncIntervalSec=5m
RateLimitInterval=30s
RateLimitBurst=1000
SystemMaxUse=10G
SystemMaxFileSize=200M
MaxRetentionSec=2week
ForwardToSyslog=no
EOF
systemctl restart systemd-journald
查看内核版本,需要讲内核升级到4.4版本,老版本会有问题
cat /proc/version
4.4.237-1.el7.elrepo
升级系统内核为4.44
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
设置系统重启后内核版本加载,以下高亮显示为当前最新内核版本号,会根据升级时间不同而不同,可以根据以上查看内核版本命令查看,并替换以下命令的高亮部分。
yum --enablerepo=elrepo-kernel install -y kernel-lt
grub2-set-default 'CentOS Linux (4.4.237-1.el7.elrepo.x86_64) 7 (Core)'
重启一下服务器
reboot
kube-proxy 开启ipvs的前置条件
modprobe br_netfilter
cat > /etc/sysconfig/modules/ipvs.modules << EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
EOF
chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4
安装docker
yum install -y yum-utils device-mapper-persistent-data lvm2
导入阿里云的镜像仓库
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装docker-ce
yum update -y && yum install -y docker-ce
安装完docker-ce相关组件重启服务器
reboot
重启后,Linux内核又变回原来的,所以要重新设置成4.4并再次重启
grub2-set-default 'CentOS Linux (4.4.237-1.el7.elrepo.x86_64) 7 (Core)' && reboot
启动docker,并将docker设置为开机自启动
systemctl start docker
systemctl enable docker
创建docker配置文件
mkdir /etc/docker
cat > /etc/docker/daemon.json <<EOF
{
"exec-opts":["native.cgroupdriver=systemd"],
"log-driver":"json-file",
"log-opts":{
"max-size":"100m"
}
}
EOF
创建docker.service.d文件夹,用于存放docker相关服务
mkdir -p /etc/systemd/system/docker.service.d
重启docker服务
systemctl daemon-reload && systemctl restart docker && systemctl enable docker
安装kubeadm 主从配置
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
安装kubeadm、kubectl和kubelet
yum -y install kubeadm-1.15.1 kubectl-1.15.1 kubelet-1.15.1
设置启动开机自启kubelet服务
systemctl enable kubelet.service
注意:如果有下载好的镜像,可以参考如下脚本进行导入操作,如果没有请跳过以下步骤,直接到“执行kubeadm初始化”
。
创建load-images.sh,用于批量导入kubeadm-basic镜像,内容如下:
#!/bin/bash
ls /root/kubeadm-basic.images > /tmp/image-list.txt
cd /root/kubeadm-basic.images
for i in $(cat /tmp/image-list.txt)
do
docker load -i $i
done
rm -rf /tmp/image-list.txt
给创建的脚本赋权
chmod a+x load-images.sh
执行
./load-images.sh
Linux命令扩展,远程传输命令
scp -r kubeadm-basic.images load-images.sh root@node5:/root/
scp -r kubeadm-basic.images load-images.sh root@node7:/root/
以下命令只需要在主节点执行
将kubeadm配置输出到kubeadm-config.yaml
kubeadm config print init-defaults > kubeadm-config.yaml
打开kubeadm-config.yaml,并修改相关配置
vi kubeadm-config.yaml
改ip,advertiseAddress: 192.168.20.69
改kubernetes版本,kubernetesVersion: v1.15.1
添加,dnsDomain: cluster.local下一行添加(注意缩进,不可用tab,一般为2个或4个空格)
podSubnet: "10.244.0.0/16"
最后添加
---
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
featureGates:
SupportIPVSProxyMode: true
mode: ipvs
注意:以上高亮部分为主节点ip。
保存退出
:wq
执行kubeadm初始化
#v1.15.1版本使用如下命令
kubeadm init --config=kubeadm-config.yaml --experimental-upload-certs | tee kubeadm-init.log
#v1.15.1以上版本使用如下命令,此时最新版本为v1.18.17
kubeadm init --image-repository=registry.aliyuncs.com/google_containers --pod-network-cidr=10.244.0.0/16 --kubernetes-version=v1.18.17 --upload-certs | tee kubeadm-init.log
查看k8s日志
vi /usr/local/kubeadm-init.log
看日志提醒,执行如下语句
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
kubeadm命令扩展
节点重置(安装过程中不需要执行,如果节点安装出错可以使用,清除子节点也可以使用)
kubeadm reset -f
节点删除(安装过程中不需要执行)
kubectl delete node <node name>
创建install-k8s文件夹,将安装过程中的文件进行整理
mkdir install-k8s
mv kubeadm-init.log kubeadm-config.yaml install-k8s/
cd install-k8s/
mkdir core
将kubeadm-init.log kubeadm-config.yaml移动到core目录下
mv * core/
最后将安装文件放到usr/local文件夹下面
mv install-k8s/ /usr/local/
部署网络Flannel
Flannel是 CoreOS 团队针对 Kubernetes 设计的一个覆盖网络(Overlay Network)工具,其目的在于帮助每一个使用 Kuberentes 的 CoreOS 主机拥有一个完整的子网。
在install-k8s目录下面创建plugin文件夹,在plugin文件夹下面创建flannel文件夹
mkdir plugin
cd plugin
mkdir flannel
创建Flannel
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kubectl create -f kube-flannel.yml
子节点添加
cd /usr/local/install-k8s/core
vi kubeadm-init.log
找到类似如下语句,到各子节点执行即可
kubeadm join 192.168.20.69:6443 --token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:97d96ca8e4b393481213dec699f1d772dcbf4e81dbf51c568be61250ffea57e3
到此Kubernetes以安装完成,可以通过如下命令查看节点状态,如果为ready,说明安装成功
kubectl get node -o wide(-o wide表示查看节点详情,kubectl其他get命令都可添加以查看详情)
kubectl 相关命令扩展(安装过程中不需要执行)
运行2个副本数的service-provider容器
kubectl run service-provider --image=hub.sunwin.com/swbdp/swbdp:v2.2.8 --replicas=2
运行1个副本数的端口为8086的nginx-swbd容器
kubectl run nginx-swbd --image=hub.sunwin.com/swbdp/swbd:v2.2.8 --port=8086 --replicas=1
将1个副本扩容为3个副本:
kubectl scale --replicas=3 deployment/nginx-swbd
kubectl get deployment
kubectl get rs
kubectl get pod
kubectl get pod -o wide(查看pod更多信息添加-o wide)
kubectl delete pod podname
kubectl get svc
如果是前端项目curl ip可以直接访问
暴露端口,将目标端口8086暴露为30000端口
kubectl expose deployment nginx-swbd --port=30000 --target-port=8086
修改服务,将type改为NodePort,可以通过外网访问服务
kubectl edit svc nginx-swbd
type 改成NodePort
更多推荐
所有评论(0)