Kubernetes学习

K8S简介

K8S是负责自动化运维管理多个跨机器Docker程序的“集群”。

K8S集群安装(搭建K8S集群,必须先在集群机器上装好docker)

  • 关闭防火墙

systemctl stop firewalld

systemctl disable firewalld

  • 关闭selinux

sed -i 's/enforcing/disable/' /etc/selinux/config        #永久关闭

setenforce 0              #临时关闭

  • 关闭swap

swapoff -a                 #临时关闭

vim /etc/fstab            #注释掉swap这行,永久关闭swap

#  /dev/mapper/centos-swap swap swap defaults 0 0

systemctl reboot        #重启生效

free -m                       #查看下swap交换区是否都为0,都为0表示swap关闭成功

  • 给集群机器分别设置主机名

hostnamectl set-hostname <hostname>

比如:第一台k8s-master

第二台k8s-node1

第三台k8s-node2

  • 在k8s-maste机器添加hosts,执行如下命令,ip需要修改成自己机器的ip

cat >> /etc/hosts << EOF

192.168.22.51 k8s-master

192.168.22.52 k8s-node1

192.168.22.53 k8s-node2

EOF

  • 将桥接的IPv4流量传递到iptables

cat > /etc/sysctl.d/k8s.conf << EOF

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

EOF

  • 设置时间同步

yum install ntpdate -y

ntpdate time.windows.com

  • 添加k8s yum源

cat > /etc/yum.repos.d/kubernetes.repo << EOF

[kubernetes]

name=Kubernetes

baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-e17-x86_64

enabled=1

gpgcheck=0

repo_gpgcheck=0

gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg

https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

EOF

  • 如果之前安装过k8s,先卸载旧版本

yum remove -y kubelet kubeadm kubectl

  • 查看可以安装的版本

yum list kubelet --showduplicates | sort -r

  • 安装kubelet、kubeadm、kubectl指定版本,我们使用kubeadm方式安装k8s集群

yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0

  • 开机启动kubelet

systemctl enable kubelet

systemctl start kubelet

在k8s-master机器上执行初始化操作(里面的第一个IP地址就是k8s-master机器的ip,改成自己机器的,后面两个ip网段不用动)

kubeadm init --apiserver-advertise-address=192.168.22.51 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.18.0 --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16

在k8s-master机器上执行如下命令:

#配置使用kubectl命令工具(类似docker这个命令)

mkdir -p $HOME/.kube

sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

sudo chown $(id -u):$(id -g) $HOME/.kube/config

#查看kubectl是否能正常使用

kubectl getnodes

#安装Pod网络插件

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

#如果上面这个calico网络插件安装不成功可以试试下面这个

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kubeflannel.yml

 在所有k8s node机器上执行上图第三个红框里的命令:

#将node节点加入进master节点的集群里

kubeadm join 192.168.22.51:6443 --token hbovty.字符串 \ --discovery-token-ca-cert-hash sha256:字符串

 在k8s-mastet机器执行查看节点命令:

kubectl get nodes

补充:如果node节点添加进集群失败,可以删除节点重新添加

#要删除k8s-node1这个节点,首先在master节点上依次执行以下两个命令

kubectl drain k8s-node1 --delete-local-data --force --ignore-daemonsets

kubectl delete node k8s-node1

#在k8s-node1这个 节点上执行如下命令,这样该节点完全从k8s集群中脱离,之后可以重新添加到集群

kubeadm reset

K8S部署应用

#查看k8s部署的核心资源

kubectl get all

#创建部署一个nginx服务,使用镜像是nginx

kubectl create deployment nginx --image=nginx 

#针对这次nginx部署,对它内部容器的80端口,在宿主机上面随机映射一个端口

kubectl expose deployment nginx --port=80 --type=NodePort

#展示更详细的核心信息

kubectl get all -owide

#查看日志

kubectl logs “podNAME”

#部署2次nginx服务,也可以部署多次

kubectl scale --replicas=2 deployment nginx

#k8s部署文件,yaml,k8s官方文档格式

kubectl apply -f 脚本路径/脚本文件.yaml

脚本如下:

  metadate:

        labels:

           app: yichengwx-order                                        

  spec:

      nodeSelector:

          kubernetes.io/hostname: k8s-node1                  #指定容器

      containers:

          - name: yichengwx-order                                     #服务名称

            image: lushao/yichengwx-order:1.0.0                #镜像仓库及镜像版本

            imagePullPolicy: Always

            ports:

                - containerPort: 8848                                      #暴露端口

            env:

                - name: TZ

                  value: Asia/Shanghai                                     #时区

                - name: spring.cloud.nacos.config.server-addr

                  value: 192.168.22.52:8848

                - name: JAVA_TOOL_OPTIONS

                  value: -javaagent:/agent/skywalking-agent.jar -DSW_AGENT_NAME=yichengwx-order -DSW_AGENT_COLLECTOR_BACKEND_SERVICES=192.168.22.50:11800

                 - name: LOG_FILE

                   value: /var/logs

              volumeMounts:

                  - mountPath: /var/logs

                     name: log-volume

        volumes:

            - name: log-volume

              hostpath:

                  path: /mydata/k8s-app/yichengwx-order/logs

                  type: DirectoryOrCreate

          dnsPolicy: Default                     #继承Pod所在宿主机的DNS设置

k8s-图形管理界面

通过点点点就实现应用部署

kubesphere

rancher

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值